import java.util.Arrays; import java.util.Collections; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.Ignore; public class CustomSetTest { @Test public void setsWithNoElementsAreEmpty() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .isEmpty(); assertTrue(actual); } @Test @Ignore("Remove to run test") public void setsWithElementsAreNotEmpty() { final boolean actual = new CustomSet<>(Arrays.asList(1)) .isEmpty(); assertFalse(actual); } @Test @Ignore("Remove to run test") public void nothingIsContainedInAnEmptySet() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .contains(1); assertFalse(actual); } @Test @Ignore("Remove to run test") public void whenTheElementIsInTheSet() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .contains(1); assertTrue(actual); } @Test @Ignore("Remove to run test") public void whenTheElementIsNotInTheSet() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .contains(4); assertFalse(actual); } @Test @Ignore("Remove to run test") public void emptySetIsASubsetOfAnotherEmptySet() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .isSubset( new CustomSet<>(Collections.EMPTY_LIST) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void emptySetIsASubsetOfNonEemptySet() { final boolean actual = new CustomSet<>(Arrays.asList(1)) .isSubset( new CustomSet<>(Collections.EMPTY_LIST) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void nonEmptySetIsNotASubsetOfEmptySet() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .isSubset( new CustomSet<>(Arrays.asList(1)) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void setIsASubsetOfSetWithExactSameElements() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .isSubset( new CustomSet<>(Arrays.asList(1, 2, 3)) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void setIsASubsetOfLargerSetWithSameElements() { final boolean actual = new CustomSet<>(Arrays.asList(4, 1, 2, 3)) .isSubset( new CustomSet<>(Arrays.asList(1, 2, 3)) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void setIsNotASubsetOfSetThatDoesNotContainItsElements() { final boolean actual = new CustomSet<>(Arrays.asList(4, 1, 3)) .isSubset( new CustomSet<>(Arrays.asList(1, 2, 3)) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void theEmptySetIsDisjointWithItself() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .isDisjoint( new CustomSet<>(Collections.EMPTY_LIST) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void emptySetIsDisjointWithNonEmptySet() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .isDisjoint( new CustomSet<>(Arrays.asList(1)) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void nonEmptySetIsDisjointWithEmptySet() { final boolean actual = new CustomSet<>(Arrays.asList(1)) .isDisjoint( new CustomSet<>(Collections.EMPTY_LIST) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void setsAreNotDisjointIfTheyShareAnElement() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2)) .isDisjoint( new CustomSet<>(Arrays.asList(2, 3)) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void setsAreDisjointIfTheyShareNoElements() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2)) .isDisjoint( new CustomSet<>(Arrays.asList(3, 4)) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void emptySetsAreEqual() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .equals( new CustomSet<>(Collections.EMPTY_LIST) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void emptySetIsNotEqualToNonEmptySet() { final boolean actual = new CustomSet<>(Collections.EMPTY_LIST) .equals( new CustomSet<>(Arrays.asList(1, 2, 3)) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void nonEmptySetIsNotEqualToEmptySet() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .equals( new CustomSet<>(Collections.EMPTY_LIST) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void setsWithTheSameElementsAreEqual() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2)) .equals( new CustomSet<>(Arrays.asList(2, 1)) ); assertTrue(actual); } @Test @Ignore("Remove to run test") public void setsWithDifferentElementsAreNotEqual() { final boolean actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .equals( new CustomSet<>(Arrays.asList(1, 2, 4)) ); assertFalse(actual); } @Test @Ignore("Remove to run test") public void addToEmptySet() { final int element = 3; final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(element)) ); final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST); actual.add(element); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void addToNonEmptySet() { final int element = 3; final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 4)); actual.add(element); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void addingAnExistingElementDoesNotChangeTheSet() { final int element = 3; final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(1, 2, 3)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 3)); actual.add(element); assertNotNull(actual); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void intersectionOfTwoEmptySetsIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getIntersection( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void intersectionOfAnEmptySetAndNonEmptySetIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getIntersection( new CustomSet<>(Arrays.asList(3, 2, 5)) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void intersectionOfANonEmptySetAndAnEmptySetIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 3, 4)) .getIntersection( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void intersectionOfTwoSetsWithNoSharedElementsIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 3)) .getIntersection( new CustomSet<>(Arrays.asList(4, 5, 6)) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void intersectionOfTwoSetsWithSharedElementsIsASetOfTheSharedElements() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(2, 3)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 3, 4)) .getIntersection( new CustomSet<>(Arrays.asList(3, 2, 5)) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void differenceOfTwoEmptySetsIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getDifference( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void differenceOfAnEmptySetAndNonEmptySetIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getDifference( new CustomSet<>(Arrays.asList(3, 2, 5)) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void differenceOfANonEmptySetAndAnEmptySetIsTheNonEmptySet() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 2, 3, 4)) .getDifference( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void differenceOfTwoNonEmptySetsIsASetOfElementsThatAreOnlyInTheFirstSet() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(1, 3)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(3, 2, 1)) .getDifference( new CustomSet<>(Arrays.asList(2, 4)) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void unionOfTwoEmptySetsIsAnEmptySet() { final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getUnion( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertTrue(actual.isEmpty()); } @Test @Ignore("Remove to run test") public void unionOfAnEmptySetAndNonEmptySetIsTheNonEmptySet() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(2)) ); final CustomSet<Integer> actual = new CustomSet<>(Collections.EMPTY_LIST) .getUnion( new CustomSet<>(Arrays.asList(2)) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void unionOfANonEmptySetAndAnEmptySetIsTheNonEmptySet() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(1, 3)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 3)) .getUnion( new CustomSet<>(Collections.EMPTY_LIST) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } @Test @Ignore("Remove to run test") public void unionOfTwoNonEmptySetsContainsAllUniqueElements() { final CustomSet<Integer> expected = new CustomSet<>( Collections.unmodifiableList(Arrays.asList(3, 2, 1)) ); final CustomSet<Integer> actual = new CustomSet<>(Arrays.asList(1, 3)) .getUnion( new CustomSet<>(Arrays.asList(2, 3)) ); assertNotNull(actual); assertFalse(actual.isEmpty()); assertTrue(expected.equals(actual)); } }