package net.glowstone.util.collection; import com.google.common.collect.ImmutableList; import org.junit.Assert; import org.junit.Test; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Tests for {@link SuperSet}. */ public class SuperSetTest { private static final int CASES = 10; private void populateSet(Set<String> set, String prefix) { for (int i = 0; i < CASES; i++) { set.add(prefix + i); } } private Set<String> generateTestSet() { Set<String> setA = new HashSet<>(); populateSet(setA, "A"); Set<String> setB = new HashSet<>(); populateSet(setB, "B"); Set<String> duplicatedSetB = new HashSet<>(); populateSet(duplicatedSetB, "B"); List<Set<String>> sets = ImmutableList.of(setA, setB, duplicatedSetB); return new SuperSet(sets); } private void checkContains(Set<String> set, String prefix) { for (int i = 0; i < 2 * CASES; i++) { if (i < CASES) { // Half true Assert.assertTrue("SuperSet.contains returned false for " + prefix + " iteration " + i, set.contains(prefix + i)); } else { // Half false Assert.assertFalse("SuperSet.contains returned true for set " + prefix + " iteration " + i, set.contains(prefix + i)); } } } @Test public void containsTest() { Set<String> sets = generateTestSet(); checkContains(sets, "A"); checkContains(sets, "B"); } @Test public void sizeTest() { Set<String> sets = generateTestSet(); Assert.assertEquals("Populated set size test failed", sets.size(), CASES * 2); sets.clear(); Assert.assertEquals("Cleared set size test failed", sets.size(), 0); } }