@Override @Test public void zip() { ImmutableSet<Integer> immutableSet = this.classUnderTest(); List<Object> nulls = Collections.nCopies(immutableSet.size(), null); List<Object> nullsPlusOne = Collections.nCopies(immutableSet.size() + 1, null); ImmutableSet<Pair<Integer, Object>> pairs = immutableSet.zip(nulls); Assert.assertEquals(immutableSet, pairs.transform(Functions.<Integer>firstOfPair())); Assert.assertEquals( UnifiedSet.<Object>newSet(nulls), pairs.transform(Functions.<Object>secondOfPair())); ImmutableSet<Pair<Integer, Object>> pairsPlusOne = immutableSet.zip(nullsPlusOne); Assert.assertEquals(immutableSet, pairsPlusOne.transform(Functions.<Integer>firstOfPair())); Assert.assertEquals( UnifiedSet.<Object>newSet(nulls), pairsPlusOne.transform(Functions.<Object>secondOfPair())); Assert.assertEquals( immutableSet.zip(nulls), immutableSet.zip(nulls, UnifiedSet.<Pair<Integer, Object>>newSet())); }
@Override @Test public void zipWithIndex() { ImmutableSet<Integer> immutableSet = this.classUnderTest(); ImmutableSet<Pair<Integer, Integer>> pairs = immutableSet.zipWithIndex(); Assert.assertEquals(immutableSet, pairs.transform(Functions.<Integer>firstOfPair())); Assert.assertEquals( UnifiedSet.<Integer>newSet(), pairs.transform(Functions.<Integer>secondOfPair())); Assert.assertEquals( immutableSet.zipWithIndex(), immutableSet.zipWithIndex(UnifiedSet.<Pair<Integer, Integer>>newSet())); }
@Test public void cartesianProduct() { MutableSet<String> set = MultiReaderUnifiedSet.newSetWith("1", "2", "3", "4").asReadUntouchable(); LazyIterable<Pair<String, String>> cartesianProduct = set.cartesianProduct(UnifiedSet.newSetWith("One", "Two")); Verify.assertIterableSize(set.size() * 2, cartesianProduct); Assert.assertEquals( set, cartesianProduct .filter(Predicates.attributeEqual(Functions.<String>secondOfPair(), "One")) .transform(Functions.<String>firstOfPair()) .toSet()); }