--- jsr166/src/test/tck/CopyOnWriteArrayListTest.java 2018/04/03 05:49:43 1.49 +++ jsr166/src/test/tck/CopyOnWriteArrayListTest.java 2021/01/26 13:33:05 1.50 @@ -29,11 +29,12 @@ public class CopyOnWriteArrayListTest ex class Implementation implements CollectionImplementation { public Class klazz() { return CopyOnWriteArrayList.class; } public List emptyCollection() { return new CopyOnWriteArrayList(); } - public Object makeElement(int i) { return i; } + public Object makeElement(int i) { return JSR166TestCase.itemFor(i); } public boolean isConcurrent() { return true; } public boolean permitsNulls() { return true; } } class SubListImplementation extends Implementation { + @SuppressWarnings("unchecked") public List emptyCollection() { List list = super.emptyCollection(); ThreadLocalRandom rnd = ThreadLocalRandom.current(); @@ -49,23 +50,23 @@ public class CopyOnWriteArrayListTest ex CollectionTest.testSuite(new SubListImplementation())); } - static CopyOnWriteArrayList populatedList(int n) { - CopyOnWriteArrayList list = new CopyOnWriteArrayList<>(); + static CopyOnWriteArrayList populatedList(int n) { + CopyOnWriteArrayList list = new CopyOnWriteArrayList<>(); assertTrue(list.isEmpty()); for (int i = 0; i < n; i++) - list.add(i); - assertEquals(n <= 0, list.isEmpty()); - assertEquals(n, list.size()); + mustAdd(list, i); + mustEqual(n <= 0, list.isEmpty()); + mustEqual(n, list.size()); return list; } - static CopyOnWriteArrayList populatedList(Integer[] elements) { - CopyOnWriteArrayList list = new CopyOnWriteArrayList<>(); + static CopyOnWriteArrayList populatedList(Item[] elements) { + CopyOnWriteArrayList list = new CopyOnWriteArrayList<>(); assertTrue(list.isEmpty()); - for (Integer element : elements) + for (Item element : elements) list.add(element); assertFalse(list.isEmpty()); - assertEquals(elements.length, list.size()); + mustEqual(elements.length, list.size()); return list; } @@ -73,7 +74,7 @@ public class CopyOnWriteArrayListTest ex * a new list is empty */ public void testConstructor() { - List list = new CopyOnWriteArrayList(); + List list = new CopyOnWriteArrayList(); assertTrue(list.isEmpty()); } @@ -81,35 +82,31 @@ public class CopyOnWriteArrayListTest ex * new list contains all elements of initializing array */ public void testConstructor2() { - Integer[] elts = new Integer[SIZE]; - for (int i = 0; i < SIZE - 1; ++i) - elts[i] = i; - List list = new CopyOnWriteArrayList(elts); + Item[] elts = defaultItems; + List list = new CopyOnWriteArrayList(elts); for (int i = 0; i < SIZE; ++i) - assertEquals(elts[i], list.get(i)); + mustEqual(elts[i], list.get(i)); } /** * new list contains all elements of initializing collection */ public void testConstructor3() { - Integer[] elts = new Integer[SIZE]; - for (int i = 0; i < SIZE - 1; ++i) - elts[i] = i; - List list = new CopyOnWriteArrayList(Arrays.asList(elts)); + Item[] elts = defaultItems; + List list = new CopyOnWriteArrayList(Arrays.asList(elts)); for (int i = 0; i < SIZE; ++i) - assertEquals(elts[i], list.get(i)); + mustEqual(elts[i], list.get(i)); } /** * addAll adds each element from the given collection, including duplicates */ public void testAddAll() { - List list = populatedList(3); + List list = populatedList(3); assertTrue(list.addAll(Arrays.asList(three, four, five))); - assertEquals(6, list.size()); + mustEqual(6, list.size()); assertTrue(list.addAll(Arrays.asList(three, four, five))); - assertEquals(9, list.size()); + mustEqual(9, list.size()); } /** @@ -117,48 +114,49 @@ public class CopyOnWriteArrayListTest ex * already exist in the List */ public void testAddAllAbsent() { - CopyOnWriteArrayList list = populatedList(3); + CopyOnWriteArrayList list = populatedList(3); // "one" is duplicate and will not be added - assertEquals(2, list.addAllAbsent(Arrays.asList(three, four, one))); - assertEquals(5, list.size()); - assertEquals(0, list.addAllAbsent(Arrays.asList(three, four, one))); - assertEquals(5, list.size()); + mustEqual(2, list.addAllAbsent(Arrays.asList(three, four, one))); + mustEqual(5, list.size()); + mustEqual(0, list.addAllAbsent(Arrays.asList(three, four, one))); + mustEqual(5, list.size()); } /** * addIfAbsent will not add the element if it already exists in the list */ public void testAddIfAbsent() { - CopyOnWriteArrayList list = populatedList(SIZE); + CopyOnWriteArrayList list = populatedList(SIZE); list.addIfAbsent(one); - assertEquals(SIZE, list.size()); + mustEqual(SIZE, list.size()); } /** * addIfAbsent adds the element when it does not exist in the list */ public void testAddIfAbsent2() { - CopyOnWriteArrayList list = populatedList(SIZE); + CopyOnWriteArrayList list = populatedList(SIZE); list.addIfAbsent(three); - assertTrue(list.contains(three)); + mustContain(list, three); } /** * clear removes all elements from the list */ public void testClear() { - List list = populatedList(SIZE); + List list = populatedList(SIZE); list.clear(); - assertEquals(0, list.size()); + mustEqual(0, list.size()); } /** * Cloned list is equal */ public void testClone() { - CopyOnWriteArrayList l1 = populatedList(SIZE); - CopyOnWriteArrayList l2 = (CopyOnWriteArrayList)(l1.clone()); - assertEquals(l1, l2); + CopyOnWriteArrayList l1 = populatedList(SIZE); + @SuppressWarnings("unchecked") + CopyOnWriteArrayList l2 = (CopyOnWriteArrayList)(l1.clone()); + mustEqual(l1, l2); l1.clear(); assertFalse(l1.equals(l2)); } @@ -167,49 +165,49 @@ public class CopyOnWriteArrayListTest ex * contains is true for added elements */ public void testContains() { - List list = populatedList(3); - assertTrue(list.contains(one)); - assertFalse(list.contains(five)); + List list = populatedList(3); + mustContain(list, one); + mustNotContain(list, five); } /** * adding at an index places it in the indicated index */ public void testAddIndex() { - List list = populatedList(3); - list.add(0, m1); - assertEquals(4, list.size()); - assertEquals(m1, list.get(0)); - assertEquals(zero, list.get(1)); - - list.add(2, m2); - assertEquals(5, list.size()); - assertEquals(m2, list.get(2)); - assertEquals(two, list.get(4)); + List list = populatedList(3); + list.add(0, minusOne); + mustEqual(4, list.size()); + mustEqual(minusOne, list.get(0)); + mustEqual(zero, list.get(1)); + + list.add(2, minusTwo); + mustEqual(5, list.size()); + mustEqual(minusTwo, list.get(2)); + mustEqual(two, list.get(4)); } /** * lists with same elements are equal and have same hashCode */ public void testEquals() { - List a = populatedList(3); - List b = populatedList(3); + List a = populatedList(3); + List b = populatedList(3); assertTrue(a.equals(b)); assertTrue(b.equals(a)); assertTrue(a.containsAll(b)); assertTrue(b.containsAll(a)); - assertEquals(a.hashCode(), b.hashCode()); - a.add(m1); + mustEqual(a.hashCode(), b.hashCode()); + a.add(minusOne); assertFalse(a.equals(b)); assertFalse(b.equals(a)); assertTrue(a.containsAll(b)); assertFalse(b.containsAll(a)); - b.add(m1); + b.add(minusOne); assertTrue(a.equals(b)); assertTrue(b.equals(a)); assertTrue(a.containsAll(b)); assertTrue(b.containsAll(a)); - assertEquals(a.hashCode(), b.hashCode()); + mustEqual(a.hashCode(), b.hashCode()); assertFalse(a.equals(null)); } @@ -218,7 +216,7 @@ public class CopyOnWriteArrayListTest ex * containsAll returns true for collections with subset of elements */ public void testContainsAll() { - List list = populatedList(3); + List list = populatedList(3); assertTrue(list.containsAll(Arrays.asList())); assertTrue(list.containsAll(Arrays.asList(one))); assertTrue(list.containsAll(Arrays.asList(one, two))); @@ -235,8 +233,8 @@ public class CopyOnWriteArrayListTest ex * get returns the value at the given index */ public void testGet() { - List list = populatedList(3); - assertEquals(0, list.get(0)); + List list = populatedList(3); + mustEqual(0, list.get(0)); } /** @@ -245,25 +243,26 @@ public class CopyOnWriteArrayListTest ex * contain the element */ public void testIndexOf() { - List list = populatedList(3); - assertEquals(-1, list.indexOf(-42)); + List list = populatedList(3); + mustEqual(-1, list.indexOf(minusTen)); int size = list.size(); for (int i = 0; i < size; i++) { - assertEquals(i, list.indexOf(i)); - assertEquals(i, list.subList(0, size).indexOf(i)); - assertEquals(i, list.subList(0, i + 1).indexOf(i)); - assertEquals(-1, list.subList(0, i).indexOf(i)); - assertEquals(0, list.subList(i, size).indexOf(i)); - assertEquals(-1, list.subList(i + 1, size).indexOf(i)); + Item I = itemFor(i); + mustEqual(i, list.indexOf(I)); + mustEqual(i, list.subList(0, size).indexOf(I)); + mustEqual(i, list.subList(0, i + 1).indexOf(I)); + mustEqual(-1, list.subList(0, i).indexOf(I)); + mustEqual(0, list.subList(i, size).indexOf(I)); + mustEqual(-1, list.subList(i + 1, size).indexOf(I)); } - list.add(1); - assertEquals(1, list.indexOf(1)); - assertEquals(1, list.subList(0, size + 1).indexOf(1)); - assertEquals(0, list.subList(1, size + 1).indexOf(1)); - assertEquals(size - 2, list.subList(2, size + 1).indexOf(1)); - assertEquals(0, list.subList(size, size + 1).indexOf(1)); - assertEquals(-1, list.subList(size + 1, size + 1).indexOf(1)); + list.add(one); + mustEqual(1, list.indexOf(one)); + mustEqual(1, list.subList(0, size + 1).indexOf(one)); + mustEqual(0, list.subList(1, size + 1).indexOf(one)); + mustEqual(size - 2, list.subList(2, size + 1).indexOf(one)); + mustEqual(0, list.subList(size, size + 1).indexOf(one)); + mustEqual(-1, list.subList(size + 1, size + 1).indexOf(one)); } /** @@ -272,41 +271,42 @@ public class CopyOnWriteArrayListTest ex * or returns -1 if the element is not found */ public void testIndexOf2() { - CopyOnWriteArrayList list = populatedList(3); + CopyOnWriteArrayList list = populatedList(3); int size = list.size(); - assertEquals(-1, list.indexOf(-42, 0)); + mustEqual(-1, list.indexOf(minusTen, 0)); // we might expect IOOBE, but spec says otherwise - assertEquals(-1, list.indexOf(0, size)); - assertEquals(-1, list.indexOf(0, Integer.MAX_VALUE)); + mustEqual(-1, list.indexOf(zero, size)); + mustEqual(-1, list.indexOf(zero, Integer.MAX_VALUE)); assertThrows( IndexOutOfBoundsException.class, - () -> list.indexOf(0, -1), - () -> list.indexOf(0, Integer.MIN_VALUE)); + () -> list.indexOf(zero, -1), + () -> list.indexOf(zero, Integer.MIN_VALUE)); for (int i = 0; i < size; i++) { - assertEquals(i, list.indexOf(i, 0)); - assertEquals(i, list.indexOf(i, i)); - assertEquals(-1, list.indexOf(i, i + 1)); + Item I = itemFor(i); + mustEqual(i, list.indexOf(I, 0)); + mustEqual(i, list.indexOf(I, i)); + mustEqual(-1, list.indexOf(I, i + 1)); } - list.add(1); - assertEquals(1, list.indexOf(1, 0)); - assertEquals(1, list.indexOf(1, 1)); - assertEquals(size, list.indexOf(1, 2)); - assertEquals(size, list.indexOf(1, size)); + list.add(one); + mustEqual(1, list.indexOf(one, 0)); + mustEqual(1, list.indexOf(one, 1)); + mustEqual(size, list.indexOf(one, 2)); + mustEqual(size, list.indexOf(one, size)); } /** * isEmpty returns true when empty, else false */ public void testIsEmpty() { - List empty = new CopyOnWriteArrayList(); + List empty = new CopyOnWriteArrayList(); assertTrue(empty.isEmpty()); assertTrue(empty.subList(0, 0).isEmpty()); - List full = populatedList(SIZE); + List full = populatedList(SIZE); assertFalse(full.isEmpty()); assertTrue(full.subList(0, 0).isEmpty()); assertTrue(full.subList(SIZE, SIZE).isEmpty()); @@ -317,23 +317,21 @@ public class CopyOnWriteArrayListTest ex * list in insertion order */ public void testIterator() { - Collection empty = new CopyOnWriteArrayList(); + Collection empty = new CopyOnWriteArrayList(); assertFalse(empty.iterator().hasNext()); try { empty.iterator().next(); shouldThrow(); } catch (NoSuchElementException success) {} - Integer[] elements = new Integer[SIZE]; - for (int i = 0; i < SIZE; i++) - elements[i] = i; + Item[] elements = seqItems(SIZE); shuffle(elements); - Collection full = populatedList(elements); + Collection full = populatedList(elements); - Iterator it = full.iterator(); + Iterator it = full.iterator(); for (int j = 0; j < SIZE; j++) { assertTrue(it.hasNext()); - assertEquals(elements[j], it.next()); + mustEqual(elements[j], it.next()); } assertIteratorExhausted(it); } @@ -342,7 +340,7 @@ public class CopyOnWriteArrayListTest ex * iterator of empty collection has no elements */ public void testEmptyIterator() { - Collection c = new CopyOnWriteArrayList(); + Collection c = new CopyOnWriteArrayList(); assertIteratorExhausted(c.iterator()); } @@ -350,8 +348,8 @@ public class CopyOnWriteArrayListTest ex * iterator.remove throws UnsupportedOperationException */ public void testIteratorRemove() { - CopyOnWriteArrayList list = populatedList(SIZE); - Iterator it = list.iterator(); + CopyOnWriteArrayList list = populatedList(SIZE); + Iterator it = list.iterator(); it.next(); try { it.remove(); @@ -363,12 +361,12 @@ public class CopyOnWriteArrayListTest ex * toString contains toString of elements */ public void testToString() { - assertEquals("[]", new CopyOnWriteArrayList().toString()); - List list = populatedList(3); + mustEqual("[]", new CopyOnWriteArrayList().toString()); + List list = populatedList(3); String s = list.toString(); for (int i = 0; i < 3; ++i) assertTrue(s.contains(String.valueOf(i))); - assertEquals(new ArrayList(list).toString(), + mustEqual(new ArrayList(list).toString(), list.toString()); } @@ -378,24 +376,25 @@ public class CopyOnWriteArrayListTest ex * contain the element */ public void testLastIndexOf1() { - List list = populatedList(3); - assertEquals(-1, list.lastIndexOf(-42)); + List list = populatedList(3); + mustEqual(-1, list.lastIndexOf(itemFor(-42))); int size = list.size(); for (int i = 0; i < size; i++) { - assertEquals(i, list.lastIndexOf(i)); - assertEquals(i, list.subList(0, size).lastIndexOf(i)); - assertEquals(i, list.subList(0, i + 1).lastIndexOf(i)); - assertEquals(-1, list.subList(0, i).lastIndexOf(i)); - assertEquals(0, list.subList(i, size).lastIndexOf(i)); - assertEquals(-1, list.subList(i + 1, size).lastIndexOf(i)); + Item I = itemFor(i); + mustEqual(i, list.lastIndexOf(I)); + mustEqual(i, list.subList(0, size).lastIndexOf(I)); + mustEqual(i, list.subList(0, i + 1).lastIndexOf(I)); + mustEqual(-1, list.subList(0, i).lastIndexOf(I)); + mustEqual(0, list.subList(i, size).lastIndexOf(I)); + mustEqual(-1, list.subList(i + 1, size).lastIndexOf(I)); } - list.add(1); - assertEquals(size, list.lastIndexOf(1)); - assertEquals(size, list.subList(0, size + 1).lastIndexOf(1)); - assertEquals(1, list.subList(0, size).lastIndexOf(1)); - assertEquals(0, list.subList(1, 2).lastIndexOf(1)); - assertEquals(-1, list.subList(0, 1).indexOf(1)); + list.add(one); + mustEqual(size, list.lastIndexOf(one)); + mustEqual(size, list.subList(0, size + 1).lastIndexOf(one)); + mustEqual(1, list.subList(0, size).lastIndexOf(one)); + mustEqual(0, list.subList(1, 2).lastIndexOf(one)); + mustEqual(-1, list.subList(0, 1).indexOf(one)); } /** @@ -404,54 +403,55 @@ public class CopyOnWriteArrayListTest ex * returns -1 if the element is not found */ public void testLastIndexOf2() { - CopyOnWriteArrayList list = populatedList(3); + CopyOnWriteArrayList list = populatedList(3); // we might expect IOOBE, but spec says otherwise - assertEquals(-1, list.lastIndexOf(0, -1)); + mustEqual(-1, list.lastIndexOf(zero, -1)); int size = list.size(); assertThrows( IndexOutOfBoundsException.class, - () -> list.lastIndexOf(0, size), - () -> list.lastIndexOf(0, Integer.MAX_VALUE)); + () -> list.lastIndexOf(zero, size), + () -> list.lastIndexOf(zero, Integer.MAX_VALUE)); for (int i = 0; i < size; i++) { - assertEquals(i, list.lastIndexOf(i, i)); - assertEquals(list.indexOf(i), list.lastIndexOf(i, i)); + Item I = itemFor(i); + mustEqual(i, list.lastIndexOf(I, i)); + mustEqual(list.indexOf(I), list.lastIndexOf(I, i)); if (i > 0) - assertEquals(-1, list.lastIndexOf(i, i - 1)); + mustEqual(-1, list.lastIndexOf(I, i - 1)); } list.add(one); list.add(three); - assertEquals(1, list.lastIndexOf(one, 1)); - assertEquals(1, list.lastIndexOf(one, 2)); - assertEquals(3, list.lastIndexOf(one, 3)); - assertEquals(3, list.lastIndexOf(one, 4)); - assertEquals(-1, list.lastIndexOf(three, 3)); + mustEqual(1, list.lastIndexOf(one, 1)); + mustEqual(1, list.lastIndexOf(one, 2)); + mustEqual(3, list.lastIndexOf(one, 3)); + mustEqual(3, list.lastIndexOf(one, 4)); + mustEqual(-1, list.lastIndexOf(three, 3)); } /** * listIterator traverses all elements */ public void testListIterator1() { - List list = populatedList(SIZE); - ListIterator i = list.listIterator(); + List list = populatedList(SIZE); + ListIterator i = list.listIterator(); int j; for (j = 0; i.hasNext(); j++) - assertEquals(j, i.next()); - assertEquals(SIZE, j); + mustEqual(j, i.next()); + mustEqual(SIZE, j); } /** * listIterator only returns those elements after the given index */ public void testListIterator2() { - List list = populatedList(3); - ListIterator i = list.listIterator(1); + List list = populatedList(3); + ListIterator i = list.listIterator(1); int j; for (j = 0; i.hasNext(); j++) - assertEquals(j + 1, i.next()); - assertEquals(2, j); + mustEqual(j + 1, i.next()); + mustEqual(2, j); } /** @@ -460,10 +460,10 @@ public class CopyOnWriteArrayListTest ex public void testRemove_int() { int SIZE = 3; for (int i = 0; i < SIZE; i++) { - List list = populatedList(SIZE); - assertEquals(i, list.remove(i)); - assertEquals(SIZE - 1, list.size()); - assertFalse(list.contains(new Integer(i))); + List list = populatedList(SIZE); + mustEqual(i, list.remove(i)); + mustEqual(SIZE - 1, list.size()); + mustNotContain(list, i); } } @@ -473,54 +473,54 @@ public class CopyOnWriteArrayListTest ex public void testRemove_Object() { int SIZE = 3; for (int i = 0; i < SIZE; i++) { - List list = populatedList(SIZE); - assertFalse(list.remove(new Integer(-42))); - assertTrue(list.remove(new Integer(i))); - assertEquals(SIZE - 1, list.size()); - assertFalse(list.contains(new Integer(i))); - } - CopyOnWriteArrayList x = new CopyOnWriteArrayList(Arrays.asList(4, 5, 6)); - assertTrue(x.remove(new Integer(6))); - assertEquals(x, Arrays.asList(4, 5)); - assertTrue(x.remove(new Integer(4))); - assertEquals(x, Arrays.asList(5)); - assertTrue(x.remove(new Integer(5))); - assertEquals(x, Arrays.asList()); - assertFalse(x.remove(new Integer(5))); + List list = populatedList(SIZE); + mustNotRemove(list, fortytwo); + mustRemove(list, i); + mustEqual(SIZE - 1, list.size()); + mustNotContain(list, i); + } + CopyOnWriteArrayList x = new CopyOnWriteArrayList(Arrays.asList(four, five, six)); + mustRemove(x, six); + mustEqual(x, Arrays.asList(four, five)); + mustRemove(x, four); + mustEqual(x, Arrays.asList(five)); + mustRemove(x, five); + mustEqual(x, Arrays.asList()); + mustNotRemove(x, five); } /** * removeAll removes all elements from the given collection */ public void testRemoveAll() { - List list = populatedList(3); + List list = populatedList(3); assertTrue(list.removeAll(Arrays.asList(one, two))); - assertEquals(1, list.size()); + mustEqual(1, list.size()); assertFalse(list.removeAll(Arrays.asList(one, two))); - assertEquals(1, list.size()); + mustEqual(1, list.size()); } /** * set changes the element at the given index */ public void testSet() { - List list = populatedList(3); - assertEquals(2, list.set(2, four)); - assertEquals(4, list.get(2)); + List list = populatedList(3); + mustEqual(2, list.set(2, four)); + mustEqual(4, list.get(2)); } /** * size returns the number of elements */ public void testSize() { - List empty = new CopyOnWriteArrayList(); - assertEquals(0, empty.size()); - assertEquals(0, empty.subList(0, 0).size()); - - List full = populatedList(SIZE); - assertEquals(SIZE, full.size()); - assertEquals(0, full.subList(0, 0).size()); - assertEquals(0, full.subList(SIZE, SIZE).size()); + List empty = new CopyOnWriteArrayList(); + mustEqual(0, empty.size()); + mustEqual(0, empty.subList(0, 0).size()); + + List full = populatedList(SIZE); + mustEqual(SIZE, full.size()); + mustEqual(0, full.subList(0, 0).size()); + mustEqual(0, full.subList(SIZE, SIZE).size()); } /** @@ -528,90 +528,86 @@ public class CopyOnWriteArrayListTest ex * the list in insertion order */ public void testToArray() { - Object[] a = new CopyOnWriteArrayList().toArray(); + Object[] a = new CopyOnWriteArrayList().toArray(); assertTrue(Arrays.equals(new Object[0], a)); assertSame(Object[].class, a.getClass()); - Integer[] elements = new Integer[SIZE]; - for (int i = 0; i < SIZE; i++) - elements[i] = i; + Item[] elements = seqItems(SIZE); shuffle(elements); - Collection full = populatedList(elements); + Collection full = populatedList(elements); assertTrue(Arrays.equals(elements, full.toArray())); assertSame(Object[].class, full.toArray().getClass()); } /** - * toArray(Integer array) returns an Integer array containing all + * toArray(Item array) returns an Item array containing all * elements from the list in insertion order */ public void testToArray2() { - Collection empty = new CopyOnWriteArrayList(); - Integer[] a; + Collection empty = new CopyOnWriteArrayList(); + Item[] a; - a = new Integer[0]; + a = new Item[0]; assertSame(a, empty.toArray(a)); - a = new Integer[SIZE / 2]; - Arrays.fill(a, 42); + a = new Item[SIZE / 2]; + Arrays.fill(a, fortytwo); assertSame(a, empty.toArray(a)); assertNull(a[0]); for (int i = 1; i < a.length; i++) - assertEquals(42, (int) a[i]); + mustEqual(42, a[i]); - Integer[] elements = new Integer[SIZE]; - for (int i = 0; i < SIZE; i++) - elements[i] = i; + Item[] elements = seqItems(SIZE); shuffle(elements); - Collection full = populatedList(elements); + Collection full = populatedList(elements); - Arrays.fill(a, 42); + Arrays.fill(a, fortytwo); assertTrue(Arrays.equals(elements, full.toArray(a))); for (int i = 0; i < a.length; i++) - assertEquals(42, (int) a[i]); - assertSame(Integer[].class, full.toArray(a).getClass()); + mustEqual(42, a[i]); + assertSame(Item[].class, full.toArray(a).getClass()); - a = new Integer[SIZE]; - Arrays.fill(a, 42); + a = new Item[SIZE]; + Arrays.fill(a, fortytwo); assertSame(a, full.toArray(a)); assertTrue(Arrays.equals(elements, a)); - a = new Integer[2 * SIZE]; - Arrays.fill(a, 42); + a = new Item[2 * SIZE]; + Arrays.fill(a, fortytwo); assertSame(a, full.toArray(a)); assertTrue(Arrays.equals(elements, Arrays.copyOf(a, SIZE))); assertNull(a[SIZE]); for (int i = SIZE + 1; i < a.length; i++) - assertEquals(42, (int) a[i]); + mustEqual(42, a[i]); } /** * sublists contains elements at indexes offset from their base */ public void testSubList() { - List a = populatedList(10); + List a = populatedList(10); assertTrue(a.subList(1,1).isEmpty()); for (int j = 0; j < 9; ++j) { for (int i = j ; i < 10; ++i) { - List b = a.subList(j,i); + List b = a.subList(j,i); for (int k = j; k < i; ++k) { - assertEquals(new Integer(k), b.get(k-j)); + mustEqual(itemFor(k), b.get(k-j)); } } } - List s = a.subList(2, 5); - assertEquals(3, s.size()); - s.set(2, m1); - assertEquals(a.get(4), m1); + List s = a.subList(2, 5); + mustEqual(3, s.size()); + s.set(2, minusOne); + mustEqual(a.get(4), minusOne); s.clear(); - assertEquals(7, a.size()); + mustEqual(7, a.size()); assertThrows( IndexOutOfBoundsException.class, () -> s.get(0), - () -> s.set(0, 42)); + () -> s.set(0, fortytwo)); } // Exception tests @@ -621,16 +617,17 @@ public class CopyOnWriteArrayListTest ex * can not store the objects inside the list */ public void testToArray_ArrayStoreException() { - List list = new CopyOnWriteArrayList(); - // Integers are not auto-converted to Longs - list.add(86); - list.add(99); + List list = new CopyOnWriteArrayList(); + // Items are not auto-converted to Longs + list.add(eightysix); + list.add(ninetynine); assertThrows( ArrayStoreException.class, () -> list.toArray(new Long[0]), () -> list.toArray(new Long[5])); } + @SuppressWarnings("unchecked") void testIndexOutOfBoundsException(List list) { int size = list.size(); assertThrows( @@ -670,7 +667,7 @@ public class CopyOnWriteArrayListTest ex */ public void testIndexOutOfBoundsException() { ThreadLocalRandom rnd = ThreadLocalRandom.current(); - List x = populatedList(rnd.nextInt(5)); + List x = populatedList(rnd.nextInt(5)); testIndexOutOfBoundsException(x); int start = rnd.nextInt(x.size() + 1); @@ -678,7 +675,7 @@ public class CopyOnWriteArrayListTest ex assertThrows( IndexOutOfBoundsException.class, () -> x.subList(start, start - 1)); - List subList = x.subList(start, end); + List subList = x.subList(start, end); testIndexOutOfBoundsException(x); } @@ -686,18 +683,18 @@ public class CopyOnWriteArrayListTest ex * a deserialized/reserialized list equals original */ public void testSerialization() throws Exception { - List x = populatedList(SIZE); - List y = serialClone(x); + List x = populatedList(SIZE); + List y = serialClone(x); assertNotSame(x, y); - assertEquals(x.size(), y.size()); - assertEquals(x.toString(), y.toString()); + mustEqual(x.size(), y.size()); + mustEqual(x.toString(), y.toString()); assertTrue(Arrays.equals(x.toArray(), y.toArray())); - assertEquals(x, y); - assertEquals(y, x); + mustEqual(x, y); + mustEqual(y, x); while (!x.isEmpty()) { assertFalse(y.isEmpty()); - assertEquals(x.remove(0), y.remove(0)); + mustEqual(x.remove(0), y.remove(0)); } assertTrue(y.isEmpty()); }