test/java/util/Collections/CheckedSetBash.java

Print this page
rev 7361 : 7129185: Add Collections.{checked|empty|unmodifiable}Navigable{Map|Set}
Reviewed-by: dmocek, martin, smarks

*** 21,56 **** * questions. */ /* * @test ! * @bug 4904067 * @summary Unit test for Collections.checkedSet * @author Josh Bloch */ import java.util.*; public class CheckedSetBash { ! static Random rnd = new Random(); ! public static void main(String[] args) { ! int numItr = 100; ! int setSize = 100; - for (int i=0; i<numItr; i++) { - Set s1 = newSet(); AddRandoms(s1, setSize); ! Set s2 = newSet(); AddRandoms(s2, setSize); ! Set intersection = clone(s1); intersection.retainAll(s2); ! Set diff1 = clone(s1); diff1.removeAll(s2); ! Set diff2 = clone(s2); diff2.removeAll(s1); ! Set union = clone(s1); union.addAll(s2); if (diff1.removeAll(diff2)) fail("Set algebra identity 2 failed"); if (diff1.removeAll(intersection)) fail("Set algebra identity 3 failed"); --- 21,68 ---- * questions. */ /* * @test ! * @bug 4904067 7129185 * @summary Unit test for Collections.checkedSet * @author Josh Bloch + * @run testng CheckedSetBash */ import java.util.*; + import java.util.function.Supplier; + import org.testng.annotations.Test; + import org.testng.annotations.DataProvider; + + import static org.testng.Assert.fail; + import static org.testng.Assert.assertTrue; public class CheckedSetBash { ! static final int numItr = 100; ! static final int setSize = 100; ! static final Random rnd = new Random(); ! ! @Test(dataProvider = "Supplier<Set<Integer>>") ! public static void testCheckedSet(String description, Supplier<Set<Integer>> supplier) { ! Set<Integer> s1 = supplier.get(); ! assertTrue(s1.isEmpty()); AddRandoms(s1, setSize); ! Set<Integer> s2 = supplier.get(); ! ! assertTrue(s2.isEmpty()); ! AddRandoms(s2, setSize); ! Set<Integer> intersection = clone(s1, supplier); intersection.retainAll(s2); ! Set<Integer> diff1 = clone(s1, supplier); diff1.removeAll(s2); ! Set<Integer> diff2 = clone(s2, supplier); diff2.removeAll(s1); ! Set<Integer> union = clone(s1, supplier); union.addAll(s2); if (diff1.removeAll(diff2)) fail("Set algebra identity 2 failed"); if (diff1.removeAll(intersection)) fail("Set algebra identity 3 failed");
*** 91,123 **** s1.clear(); if (!s1.isEmpty()) fail("Set nonempty after clear."); } - } // Done inefficiently so as to exercise toArray ! static Set clone(Set s) { ! Set clone = newSet(); ! List arrayList = Arrays.asList(s.toArray()); clone.addAll(arrayList); if (!s.equals(clone)) fail("Set not equal to copy."); if (!s.containsAll(clone)) fail("Set does not contain copy."); if (!clone.containsAll(s)) fail("Copy does not contain set."); return clone; } - static Set newSet() { - Set s = Collections.checkedSet(new HashSet(), Integer.class); - if (!s.isEmpty()) - fail("New instance non empty."); - return s; - } - static void AddRandoms(Set s, int n) { for (int i=0; i<n; i++) { int r = rnd.nextInt() % n; Integer e = new Integer(r < 0 ? -r : r); --- 103,127 ---- s1.clear(); if (!s1.isEmpty()) fail("Set nonempty after clear."); } // Done inefficiently so as to exercise toArray ! static <T> Set<T> clone(Set<T> s, Supplier<Set<T>> supplier) { ! Set<T> clone = supplier.get(); ! List<T> arrayList = Arrays.asList((T[]) s.toArray()); clone.addAll(arrayList); if (!s.equals(clone)) fail("Set not equal to copy."); if (!s.containsAll(clone)) fail("Set does not contain copy."); if (!clone.containsAll(s)) fail("Copy does not contain set."); return clone; } static void AddRandoms(Set s, int n) { for (int i=0; i<n; i++) { int r = rnd.nextInt() % n; Integer e = new Integer(r < 0 ? -r : r);
*** 134,143 **** if (!added && preSize != postSize) fail ("Add returned false, but size changed."); } } ! static void fail(String s) { ! throw new RuntimeException(s); ! } } --- 138,169 ---- if (!added && preSize != postSize) fail ("Add returned false, but size changed."); } } ! @DataProvider(name = "Supplier<Set<Integer>>", parallel = true) ! public static Iterator<Object[]> navigableSetsProvider() { ! ArrayList<Object[]> iters = new ArrayList<>(makeCheckedSets()); ! iters.ensureCapacity(numItr * iters.size()); ! for(int each=1; each < numItr; each++) { ! iters.addAll( makeCheckedSets()); ! } ! return iters.iterator(); ! } ! ! public static Collection<Object[]> makeCheckedSets() { ! return Arrays.asList( ! new Object[]{"Collections.checkedSet(HashSet)", ! (Supplier) () -> {return Collections.checkedSet(new HashSet(), Integer.class);}}, ! new Object[]{"Collections.checkedSet(TreeSet(reverseOrder)", ! (Supplier) () -> {return Collections.checkedSet(new TreeSet(Collections.reverseOrder()), Integer.class);}}, ! new Object[]{"Collections.checkedSet(TreeSet).descendingSet()", ! (Supplier) () -> {return Collections.checkedSet(new TreeSet().descendingSet(), Integer.class);}}, ! new Object[]{"Collections.checkedNavigableSet(TreeSet)", ! (Supplier) () -> {return Collections.checkedNavigableSet(new TreeSet(), Integer.class);}}, ! new Object[]{"Collections.checkedNavigableSet(TreeSet(reverseOrder)", ! (Supplier) () -> {return Collections.checkedNavigableSet(new TreeSet(Collections.reverseOrder()), Integer.class);}}, ! new Object[]{"Collections.checkedNavigableSet().descendingSet()", ! (Supplier) () -> {return Collections.checkedNavigableSet(new TreeSet().descendingSet(), Integer.class);}} ! ); } }