Expanded Unit tests to IntLists/Sets
Maps are sadly not possible. It will require writing templates for permutations effectively copying guavas Test library. So this will take a lot longer
This commit is contained in:
@@ -12,6 +12,10 @@ import com.google.common.collect.testing.features.ListFeature;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
import speiger.src.collections.ints.lists.ImmutableIntList;
|
||||
import speiger.src.collections.ints.lists.IntArrayList;
|
||||
import speiger.src.collections.ints.lists.IntLinkedList;
|
||||
import speiger.src.collections.ints.lists.IntList;
|
||||
import speiger.src.collections.objects.lists.ImmutableObjectList;
|
||||
import speiger.src.collections.objects.lists.ObjectArrayList;
|
||||
import speiger.src.collections.objects.lists.ObjectLinkedList;
|
||||
@@ -25,19 +29,28 @@ public class ObjectListTests extends TestCase
|
||||
suite.addTest(suite("ArrayList", T -> new ObjectArrayList<>(T)));
|
||||
suite.addTest(suite("LinkedList", T -> new ObjectLinkedList<>(T)));
|
||||
suite.addTest(immutableSuite("ImmutableList", T -> new ImmutableObjectList<>(T)));
|
||||
suite.addTest(intSuite("IntArrayList", IntArrayList::new));
|
||||
suite.addTest(intSuite("IntLinkedList", IntLinkedList::new));
|
||||
suite.addTest(intImmutableSuite("IntImmutableList", ImmutableIntList::new));
|
||||
return suite;
|
||||
}
|
||||
|
||||
public static Test suite(String name, Function<String[], List<String>> factory)
|
||||
{
|
||||
public static Test intSuite(String name, Function<int[], IntList> factory) {
|
||||
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(ListFeature.GENERAL_PURPOSE, CollectionSize.ANY).createTestSuite();
|
||||
}
|
||||
|
||||
public static Test intImmutableSuite(String name, Function<int[], IntList> factory) {
|
||||
return ListTestSuiteBuilder.using(new TestIntListGenerator(factory)).named(name).withFeatures(CollectionSize.ANY).createTestSuite();
|
||||
}
|
||||
|
||||
public static Test suite(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).withFeatures(ListFeature.GENERAL_PURPOSE, 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() {
|
||||
@Override
|
||||
protected List<String> create(String[] elements) { return factory.apply(elements); }
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package speiger.src.collections.objects.list;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.google.common.collect.testing.SampleElements;
|
||||
import com.google.common.collect.testing.SampleElements.Ints;
|
||||
import com.google.common.collect.testing.TestListGenerator;
|
||||
|
||||
import speiger.src.collections.ints.lists.IntList;
|
||||
|
||||
@SuppressWarnings("javadoc")
|
||||
public class TestIntListGenerator implements TestListGenerator<Integer>
|
||||
{
|
||||
Function<int[], IntList> function;
|
||||
|
||||
public TestIntListGenerator(Function<int[], IntList> function)
|
||||
{
|
||||
this.function = function;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SampleElements<Integer> samples()
|
||||
{
|
||||
return new Ints();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> create(Object... elements)
|
||||
{
|
||||
int[] array = new int[elements.length];
|
||||
int i = 0;
|
||||
for(Object e : elements)
|
||||
{
|
||||
array[i++] = ((Integer)e).intValue();
|
||||
}
|
||||
return function.apply(array);
|
||||
}
|
||||
@Override
|
||||
public Integer[] createArray(int length)
|
||||
{
|
||||
return new Integer[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> order(List<Integer> insertionOrder)
|
||||
{
|
||||
return insertionOrder;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,17 @@
|
||||
package speiger.src.collections.objects.set;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.NavigableSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
|
||||
import com.google.common.collect.testing.SetTestSuiteBuilder;
|
||||
import com.google.common.collect.testing.TestIntegerSetGenerator;
|
||||
import com.google.common.collect.testing.TestStringSetGenerator;
|
||||
import com.google.common.collect.testing.TestStringSortedSetGenerator;
|
||||
import com.google.common.collect.testing.features.CollectionFeature;
|
||||
@@ -17,6 +21,17 @@ import com.google.common.collect.testing.features.SetFeature;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
import speiger.src.collections.ints.sets.ImmutableIntOpenHashSet;
|
||||
import speiger.src.collections.ints.sets.IntAVLTreeSet;
|
||||
import speiger.src.collections.ints.sets.IntArraySet;
|
||||
import speiger.src.collections.ints.sets.IntLinkedOpenCustomHashSet;
|
||||
import speiger.src.collections.ints.sets.IntLinkedOpenHashSet;
|
||||
import speiger.src.collections.ints.sets.IntNavigableSet;
|
||||
import speiger.src.collections.ints.sets.IntOpenCustomHashSet;
|
||||
import speiger.src.collections.ints.sets.IntOpenHashSet;
|
||||
import speiger.src.collections.ints.sets.IntRBTreeSet;
|
||||
import speiger.src.collections.ints.sets.IntSet;
|
||||
import speiger.src.collections.ints.utils.IntStrategy;
|
||||
import speiger.src.collections.objects.sets.ImmutableObjectOpenHashSet;
|
||||
import speiger.src.collections.objects.sets.ObjectAVLTreeSet;
|
||||
import speiger.src.collections.objects.sets.ObjectArraySet;
|
||||
@@ -30,9 +45,18 @@ import speiger.src.collections.objects.utils.ObjectStrategy;
|
||||
@SuppressWarnings("javadoc")
|
||||
public class ObjectSetTests extends TestCase
|
||||
{
|
||||
@SuppressWarnings("deprecation")
|
||||
public static Test suite()
|
||||
{
|
||||
TestSuite suite = new TestSuite("Sets");
|
||||
suite.addTest(intSuite("IntHashSet", IntOpenHashSet::new));
|
||||
suite.addTest(intSuite("IntCustomHashSet", () -> new IntOpenCustomHashSet(IntegerStrategy.INSTANCE)));
|
||||
suite.addTest(intSuite("IntLinkedHashSet", IntLinkedOpenHashSet::new));
|
||||
suite.addTest(intSuite("IntLinkedCustomHashSet", () -> new IntLinkedOpenCustomHashSet(IntegerStrategy.INSTANCE)));
|
||||
suite.addTest(intSuite("IntArraySet", IntArraySet::new));
|
||||
suite.addTest(intImmutableSuite("ImmutableHashSet", ImmutableIntOpenHashSet::new));
|
||||
suite.addTest(intNavigableSuite("IntRBTreeSet", IntRBTreeSet::new));
|
||||
suite.addTest(intNavigableSuite("IntAVLTreeSet", IntAVLTreeSet::new));
|
||||
suite.addTest(suite("HashSet", ObjectOpenHashSet::new, true));
|
||||
suite.addTest(suite("LinkedHashSet", ObjectLinkedOpenHashSet::new, true));
|
||||
suite.addTest(suite("CustomHashSet", T -> new ObjectOpenCustomHashSet<>(T, Strategy.INSTANCE), true));
|
||||
@@ -46,6 +70,37 @@ public class ObjectSetTests extends TestCase
|
||||
return suite;
|
||||
}
|
||||
|
||||
public static Test intSuite(String name, Supplier<IntSet> factory) {
|
||||
SetTestSuiteBuilder<Integer> generator = SetTestSuiteBuilder.using(new TestIntegerSetGenerator() {
|
||||
@Override
|
||||
protected Set<Integer> create(Integer[] elements) {
|
||||
IntSet set = factory.get();
|
||||
set.addAll(Arrays.asList(elements));
|
||||
return set;
|
||||
}
|
||||
}).named(name).withFeatures(CollectionSize.ANY, SetFeature.GENERAL_PURPOSE);
|
||||
return generator.createTestSuite();
|
||||
}
|
||||
|
||||
public static Test intNavigableSuite(String name, Supplier<IntNavigableSet> factory) {
|
||||
SetTestSuiteBuilder<Integer> generator = NavigableSetTestSuiteBuilder.using(new TestIntegerNavigableSetGenerator() {
|
||||
@Override
|
||||
protected NavigableSet<Integer> create(Integer[] elements) {
|
||||
IntNavigableSet set = factory.get();
|
||||
set.addAll(Arrays.asList(elements));
|
||||
return set;
|
||||
}
|
||||
}).named(name).withFeatures(CollectionSize.ANY, SetFeature.GENERAL_PURPOSE, CollectionFeature.SUBSET_VIEW);
|
||||
return generator.createTestSuite();
|
||||
}
|
||||
|
||||
public static Test intImmutableSuite(String name, Function<List<Integer>, IntSet> factory) {
|
||||
return SetTestSuiteBuilder.using(new TestIntegerSetGenerator() {
|
||||
@Override
|
||||
protected Set<Integer> create(Integer[] elements) { return factory.apply(Arrays.asList(elements)); }
|
||||
}).named(name).withFeatures(CollectionSize.ANY, CollectionFeature.ALLOWS_NULL_QUERIES).createTestSuite();
|
||||
}
|
||||
|
||||
public static Test suite(String name, Function<String[], Set<String>> factory, boolean allowNull) {
|
||||
SetTestSuiteBuilder<String> generator = SetTestSuiteBuilder.using(new TestStringSetGenerator() {
|
||||
@Override
|
||||
@@ -84,4 +139,19 @@ public class ObjectSetTests extends TestCase
|
||||
return Objects.equals(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
private static class IntegerStrategy implements IntStrategy {
|
||||
static final IntegerStrategy INSTANCE = new IntegerStrategy();
|
||||
|
||||
@Override
|
||||
public int hashCode(int o) {
|
||||
return Integer.hashCode(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(int key, int value) {
|
||||
return key == value;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package speiger.src.collections.objects.set;
|
||||
|
||||
import java.util.SortedSet;
|
||||
|
||||
import com.google.common.collect.testing.TestIntegerSortedSetGenerator;
|
||||
import com.google.common.collect.testing.TestSortedSetGenerator;
|
||||
|
||||
@SuppressWarnings("javadoc")
|
||||
public abstract class TestIntegerNavigableSetGenerator extends TestIntegerSortedSetGenerator implements TestSortedSetGenerator<Integer>
|
||||
{
|
||||
@Override
|
||||
protected abstract SortedSet<Integer> create(Integer[] elements);
|
||||
|
||||
@Override
|
||||
public SortedSet<Integer> create(Object... elements) {
|
||||
Integer[] array = new Integer[elements.length];
|
||||
int i = 0;
|
||||
for (Object e : elements) {
|
||||
array[i++] = (Integer) e;
|
||||
}
|
||||
return create(array);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer belowSamplesLesser() { return -2; }
|
||||
@Override
|
||||
public Integer belowSamplesGreater() { return -1; }
|
||||
@Override
|
||||
public Integer aboveSamplesLesser() { return 5; }
|
||||
@Override
|
||||
public Integer aboveSamplesGreater() { return 6; }
|
||||
}
|
||||
Reference in New Issue
Block a user