blob: 5445f526be7406db25592b787eceea5d828a70c4 [file] [log] [blame] [raw]
package net.glowstone.util.collection;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
/**
* 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
assertThat("SuperSet.contains returned false for " + prefix + " iteration " + i,
set, hasItem(prefix + i));
} else {
// Half false
assertThat("SuperSet.contains returned true for set " + prefix + " iteration " + i,
set, not(hasItem(prefix + i)));
}
}
}
@Test
public void containsTest() {
Set<String> sets = generateTestSet();
checkContains(sets, "A");
checkContains(sets, "B");
}
@Test
public void sizeTest() {
Set<String> sets = generateTestSet();
assertThat("Populated set size test failed", CASES << 1, is(sets.size()));
sets.clear();
assertThat("Cleared set size test failed", 0, is(sets.size()));
}
}