package com.miguelfonseca.completely.util; import java.util.Arrays; import java.util.Iterator; import java.util.NoSuchElementException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class ArraySetTest { @Rule @SuppressWarnings("checkstyle:visibilitymodifier") public ExpectedException exceptionRule; private ArraySet<Object> set; public ArraySetTest() { this.exceptionRule = ExpectedException.none(); this.set = new ArraySet<>(); } @Test public void testAdd() { assertTrue(set.add(0)); assertEquals(1, set.size()); assertTrue(set.add(1)); assertEquals(2, set.size()); assertFalse(set.add(1)); assertEquals(2, set.size()); } @Test public void testAddNull() { assertTrue(set.add(null)); assertEquals(1, set.size()); assertFalse(set.add(null)); assertEquals(1, set.size()); } @Test public void testAddAll() { assertTrue(set.addAll(Arrays.asList(0, 1))); assertEquals(2, set.size()); assertTrue(set.addAll(Arrays.asList(2, 2))); assertEquals(3, set.size()); assertFalse(set.addAll(Arrays.asList(1, 0))); assertEquals(3, set.size()); } @Test public void testAddAllEmpty() { assertFalse(set.addAll(Arrays.asList())); } @Test public void testAddAllNull() { exceptionRule.expect(NullPointerException.class); set.addAll(null); } @Test public void testCreate() { assertEquals(0, set.size()); } @Test public void testIterator() { set.addAll(Arrays.asList(0, 1, 2)); Iterator<Object> it = set.iterator(); assertTrue(it.hasNext()); assertEquals(0, it.next()); assertTrue(it.hasNext()); assertEquals(1, it.next()); assertTrue(it.hasNext()); assertEquals(2, it.next()); assertFalse(it.hasNext()); } @Test public void testEmptyIterator() { Iterator<Object> it = set.iterator(); assertFalse(it.hasNext()); exceptionRule.expect(NoSuchElementException.class); it.next(); } @Test public void testRemove() { set.addAll(Arrays.asList(0, 1, 2)); assertTrue(set.remove(1)); assertEquals(2, set.size()); assertTrue(set.remove(0)); assertEquals(1, set.size()); assertTrue(set.remove(2)); assertEquals(0, set.size()); } @Test public void testRemoveInexistent() { assertFalse(set.remove(1)); } @Test public void testRemoveNull() { set.add(null); assertTrue(set.remove(null)); assertEquals(0, set.size()); } @Test public void testRemoveAll() { set.addAll(Arrays.asList(0, 1, 2)); assertTrue(set.removeAll(Arrays.asList(0, 1))); assertEquals(1, set.size()); assertTrue(set.removeAll(Arrays.asList(1, 2))); assertEquals(0, set.size()); } @Test public void testRemoveAllEmpty() { assertFalse(set.removeAll(Arrays.asList())); } @Test public void testRemoveAllNull() { exceptionRule.expect(NullPointerException.class); set.removeAll(null); } }