New Features
-Added: CopyOnWriteArrayList -Added: UnitTests for CopyOnWriteArrayLists
This commit is contained in:
parent
3cac3a997e
commit
059da9be12
|
@ -158,6 +158,7 @@ public class GlobalVariables
|
||||||
|
|
||||||
//Final Classes
|
//Final Classes
|
||||||
addClassMapper("ARRAY_LIST", "ArrayList");
|
addClassMapper("ARRAY_LIST", "ArrayList");
|
||||||
|
addAbstractMapper("COPY_ON_WRITE_LIST", "CopyOnWrite%sArrayList");
|
||||||
addClassMapper("ASYNC_BUILDER", "AsyncBuilder");
|
addClassMapper("ASYNC_BUILDER", "AsyncBuilder");
|
||||||
addClassMapper("LINKED_LIST", "LinkedList");
|
addClassMapper("LINKED_LIST", "LinkedList");
|
||||||
addAbstractMapper("IMMUTABLE_LIST", "Immutable%sList");
|
addAbstractMapper("IMMUTABLE_LIST", "Immutable%sList");
|
||||||
|
|
|
@ -94,6 +94,7 @@ public class PrimitiveCollectionsBuilder extends TemplateProcessor
|
||||||
nameRemapper.put("EnumMap", "Enum2%sMap");
|
nameRemapper.put("EnumMap", "Enum2%sMap");
|
||||||
nameRemapper.put("LinkedEnumMap", "LinkedEnum2%sMap");
|
nameRemapper.put("LinkedEnumMap", "LinkedEnum2%sMap");
|
||||||
nameRemapper.put("ImmutableList", "Immutable%sList");
|
nameRemapper.put("ImmutableList", "Immutable%sList");
|
||||||
|
nameRemapper.put("CopyOnWriteList", "CopyOnWrite%sArrayList");
|
||||||
nameRemapper.put("ImmutableOpenHashSet", "Immutable%sOpenHashSet");
|
nameRemapper.put("ImmutableOpenHashSet", "Immutable%sOpenHashSet");
|
||||||
nameRemapper.put("ImmutableOpenHashMap", "Immutable%sOpenHashMap");
|
nameRemapper.put("ImmutableOpenHashMap", "Immutable%sOpenHashMap");
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ public abstract class ABSTRACT_LIST KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION
|
||||||
* The IndexOf implementation iterates over all elements and compares them to the search value.
|
* The IndexOf implementation iterates over all elements and compares them to the search value.
|
||||||
* @param o the value that the index is searched for.
|
* @param o the value that the index is searched for.
|
||||||
* @return index of the value that was searched for. -1 if not found
|
* @return index of the value that was searched for. -1 if not found
|
||||||
* @deprecated it is highly suggested not to use this with Primitives because of boxing. But it is still supported because of ObjectComparason that are custom objects and allow to find the contents.
|
* @note it is highly suggested not to use this with Primitives because of boxing. But it is still supported because of ObjectComparason that are custom objects and allow to find the contents.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Primitive
|
@Primitive
|
||||||
|
@ -103,7 +103,7 @@ public abstract class ABSTRACT_LIST KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION
|
||||||
* The lastIndexOf implementation iterates over all elements and compares them to the search value.
|
* The lastIndexOf implementation iterates over all elements and compares them to the search value.
|
||||||
* @param o the value that the index is searched for.
|
* @param o the value that the index is searched for.
|
||||||
* @return the last index of the value that was searched for. -1 if not found
|
* @return the last index of the value that was searched for. -1 if not found
|
||||||
* @deprecated it is highly suggested not to use this with Primitives because of boxing. But it is still supported because of ObjectComparason that are custom objects and allow to find the contents.
|
* @note it is highly suggested not to use this with Primitives because of boxing. But it is still supported because of ObjectComparason that are custom objects and allow to find the contents.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Primitive
|
@Primitive
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,8 @@
|
||||||
package speiger.src.collections.objects.list;
|
package speiger.src.collections.objects.list;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@ -8,14 +11,19 @@ import com.google.common.collect.testing.TestStringListGenerator;
|
||||||
import com.google.common.collect.testing.features.CollectionFeature;
|
import com.google.common.collect.testing.features.CollectionFeature;
|
||||||
import com.google.common.collect.testing.features.CollectionSize;
|
import com.google.common.collect.testing.features.CollectionSize;
|
||||||
import com.google.common.collect.testing.features.ListFeature;
|
import com.google.common.collect.testing.features.ListFeature;
|
||||||
|
import com.google.common.collect.testing.testers.CollectionSpliteratorTester;
|
||||||
|
import com.google.common.collect.testing.testers.ListListIteratorTester;
|
||||||
|
import com.google.common.collect.testing.testers.ListSubListTester;
|
||||||
|
|
||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
import speiger.src.collections.ints.lists.CopyOnWriteIntArrayList;
|
||||||
import speiger.src.collections.ints.lists.ImmutableIntList;
|
import speiger.src.collections.ints.lists.ImmutableIntList;
|
||||||
import speiger.src.collections.ints.lists.IntArrayList;
|
import speiger.src.collections.ints.lists.IntArrayList;
|
||||||
import speiger.src.collections.ints.lists.IntLinkedList;
|
import speiger.src.collections.ints.lists.IntLinkedList;
|
||||||
import speiger.src.collections.ints.lists.IntList;
|
import speiger.src.collections.ints.lists.IntList;
|
||||||
|
import speiger.src.collections.objects.lists.CopyOnWriteObjectArrayList;
|
||||||
import speiger.src.collections.objects.lists.ImmutableObjectList;
|
import speiger.src.collections.objects.lists.ImmutableObjectList;
|
||||||
import speiger.src.collections.objects.lists.ObjectArrayList;
|
import speiger.src.collections.objects.lists.ObjectArrayList;
|
||||||
import speiger.src.collections.objects.lists.ObjectLinkedList;
|
import speiger.src.collections.objects.lists.ObjectLinkedList;
|
||||||
|
@ -28,9 +36,11 @@ public class ObjectListTests extends TestCase
|
||||||
TestSuite suite = new TestSuite("Lists");
|
TestSuite suite = new TestSuite("Lists");
|
||||||
suite.addTest(suite("ArrayList", T -> new ObjectArrayList<>(T)));
|
suite.addTest(suite("ArrayList", T -> new ObjectArrayList<>(T)));
|
||||||
suite.addTest(suite("LinkedList", T -> new ObjectLinkedList<>(T)));
|
suite.addTest(suite("LinkedList", T -> new ObjectLinkedList<>(T)));
|
||||||
|
suite.addTest(copyOnWriteSuite("CopyOnWriteArrayList", T -> new CopyOnWriteObjectArrayList<>(T)));
|
||||||
suite.addTest(immutableSuite("ImmutableList", T -> new ImmutableObjectList<>(T)));
|
suite.addTest(immutableSuite("ImmutableList", T -> new ImmutableObjectList<>(T)));
|
||||||
suite.addTest(intSuite("IntArrayList", IntArrayList::new));
|
suite.addTest(intSuite("IntArrayList", IntArrayList::new));
|
||||||
suite.addTest(intSuite("IntLinkedList", IntLinkedList::new));
|
suite.addTest(intSuite("IntLinkedList", IntLinkedList::new));
|
||||||
|
suite.addTest(intCopyOnWriteSuite("CopyOnWriteArrayList", CopyOnWriteIntArrayList::new));
|
||||||
suite.addTest(intImmutableSuite("IntImmutableList", ImmutableIntList::new));
|
suite.addTest(intImmutableSuite("IntImmutableList", ImmutableIntList::new));
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
@ -39,6 +49,10 @@ public class ObjectListTests extends TestCase
|
||||||
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(ListFeature.GENERAL_PURPOSE, CollectionSize.ANY).createTestSuite();
|
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(ListFeature.GENERAL_PURPOSE, CollectionSize.ANY).createTestSuite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Test intCopyOnWriteSuite(String name, Function<int[], IntList> factory) {
|
||||||
|
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).suppressing(suppressForCopyOnWriteArrayList()).withFeatures(ListFeature.SUPPORTS_SET, ListFeature.SUPPORTS_ADD_WITH_INDEX, ListFeature.SUPPORTS_REMOVE_WITH_INDEX, CollectionFeature.SUPPORTS_ADD, CollectionFeature.SUPPORTS_REMOVE, CollectionSize.ANY).createTestSuite();
|
||||||
|
}
|
||||||
|
|
||||||
public static Test intImmutableSuite(String name, Function<int[], IntList> factory) {
|
public static Test intImmutableSuite(String name, Function<int[], IntList> factory) {
|
||||||
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(CollectionSize.ANY).createTestSuite();
|
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(CollectionSize.ANY).createTestSuite();
|
||||||
}
|
}
|
||||||
|
@ -50,10 +64,22 @@ public class ObjectListTests extends TestCase
|
||||||
}).named(name).withFeatures(ListFeature.GENERAL_PURPOSE, CollectionFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY).createTestSuite();
|
}).named(name).withFeatures(ListFeature.GENERAL_PURPOSE, CollectionFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY).createTestSuite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Test copyOnWriteSuite(String name, Function<String[], List<String>> factory) {
|
||||||
|
return ListTestSuiteBuilder.using(new TestStringListGenerator() {
|
||||||
|
@Override
|
||||||
|
protected List<String> create(String[] elements) { return factory.apply(elements); }
|
||||||
|
}).named(name).suppressing(suppressForCopyOnWriteArrayList()).withFeatures(ListFeature.SUPPORTS_SET, ListFeature.SUPPORTS_ADD_WITH_INDEX, ListFeature.SUPPORTS_REMOVE_WITH_INDEX, CollectionFeature.SUPPORTS_ADD, CollectionFeature.SUPPORTS_REMOVE, CollectionFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY).createTestSuite();
|
||||||
|
}
|
||||||
|
|
||||||
public static Test immutableSuite(String name, Function<String[], List<String>> factory) {
|
public static Test immutableSuite(String name, Function<String[], List<String>> factory) {
|
||||||
return ListTestSuiteBuilder.using(new TestStringListGenerator() {
|
return ListTestSuiteBuilder.using(new TestStringListGenerator() {
|
||||||
@Override
|
@Override
|
||||||
protected List<String> create(String[] elements) { return factory.apply(elements); }
|
protected List<String> create(String[] elements) { return factory.apply(elements); }
|
||||||
}).named(name).withFeatures(CollectionFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY).createTestSuite();
|
}).named(name).withFeatures(CollectionFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY).createTestSuite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Collection<Method> suppressForCopyOnWriteArrayList()
|
||||||
|
{
|
||||||
|
return Arrays.asList(ListSubListTester.getSubListOriginalListSetAffectsSubListMethod(), ListSubListTester.getSubListOriginalListSetAffectsSubListLargeListMethod(), ListSubListTester.getSubListSubListRemoveAffectsOriginalLargeListMethod(), ListListIteratorTester.getListIteratorFullyModifiableMethod(), CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsAddMethod(), CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsRemoveMethod());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue