ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/LinkedListTest.java
(Generate patch)

Comparing jsr166/src/test/tck/LinkedListTest.java (file contents):
Revision 1.25 by jsr166, Thu Nov 18 20:21:53 2010 UTC vs.
Revision 1.51 by jsr166, Wed Jan 27 01:57:24 2021 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   * Other contributors include Andrew Wright, Jeffrey Hayes,
6   * Pat Fisher, Mike Judd.
7   */
8  
9 < import junit.framework.*;
10 < import java.util.*;
11 < import java.util.concurrent.*;
9 > import java.util.Arrays;
10 > import java.util.Collection;
11 > import java.util.Iterator;
12 > import java.util.LinkedList;
13 > import java.util.List;
14 > import java.util.NoSuchElementException;
15 > import java.util.concurrent.ThreadLocalRandom;
16 >
17 > import junit.framework.Test;
18  
19   public class LinkedListTest extends JSR166TestCase {
20      public static void main(String[] args) {
21 <        junit.textui.TestRunner.run(suite());
21 >        main(suite(), args);
22      }
23  
24      public static Test suite() {
25 <        return new TestSuite(LinkedListTest.class);
25 >        class Implementation implements CollectionImplementation {
26 >            public Class<?> klazz() { return LinkedList.class; }
27 >            public List emptyCollection() { return new LinkedList(); }
28 >            public Object makeElement(int i) { return JSR166TestCase.itemFor(i); }
29 >            public boolean isConcurrent() { return false; }
30 >            public boolean permitsNulls() { return true; }
31 >        }
32 >        class SubListImplementation extends Implementation {
33 >            @SuppressWarnings("unchecked")
34 >            public List emptyCollection() {
35 >                List list = super.emptyCollection();
36 >                ThreadLocalRandom rnd = ThreadLocalRandom.current();
37 >                if (rnd.nextBoolean())
38 >                    list.add(makeElement(rnd.nextInt()));
39 >                int i = rnd.nextInt(list.size() + 1);
40 >                return list.subList(i, i);
41 >            }
42 >        }
43 >        return newTestSuite(
44 >                LinkedListTest.class,
45 >                CollectionTest.testSuite(new Implementation()),
46 >                CollectionTest.testSuite(new SubListImplementation()));
47      }
48  
49      /**
50 <     * Create a queue of given size containing consecutive
51 <     * Integers 0 ... n.
50 >     * Returns a new queue of given size containing consecutive
51 >     * Items 0 ... n - 1.
52       */
53 <    private LinkedList<Integer> populatedQueue(int n) {
54 <        LinkedList<Integer> q = new LinkedList<Integer>();
53 >    private static LinkedList<Item> populatedQueue(int n) {
54 >        LinkedList<Item> q = new LinkedList<>();
55          assertTrue(q.isEmpty());
56          for (int i = 0; i < n; ++i)
57 <            assertTrue(q.offer(new Integer(i)));
57 >            mustOffer(q, i);
58          assertFalse(q.isEmpty());
59 <        assertEquals(n, q.size());
59 >        mustEqual(n, q.size());
60 >        mustEqual(0, q.peekFirst());
61 >        mustEqual((n - 1), q.peekLast());
62          return q;
63      }
64  
# Line 37 | Line 66 | public class LinkedListTest extends JSR1
66       * new queue is empty
67       */
68      public void testConstructor1() {
69 <        assertEquals(0, new LinkedList().size());
69 >        mustEqual(0, new LinkedList<Item>().size());
70      }
71  
72      /**
# Line 45 | Line 74 | public class LinkedListTest extends JSR1
74       */
75      public void testConstructor3() {
76          try {
77 <            LinkedList q = new LinkedList((Collection)null);
77 >            new LinkedList<Item>((Collection<Item>)null);
78              shouldThrow();
79          } catch (NullPointerException success) {}
80      }
# Line 54 | Line 83 | public class LinkedListTest extends JSR1
83       * Queue contains all elements of collection used to initialize
84       */
85      public void testConstructor6() {
86 <        Integer[] ints = new Integer[SIZE];
87 <        for (int i = 0; i < SIZE; ++i)
59 <            ints[i] = i;
60 <        LinkedList q = new LinkedList(Arrays.asList(ints));
86 >        Item[] items = defaultItems;
87 >        LinkedList<Item> q = new LinkedList<>(Arrays.asList(items));
88          for (int i = 0; i < SIZE; ++i)
89 <            assertEquals(ints[i], q.poll());
89 >            mustEqual(items[i], q.poll());
90      }
91  
92      /**
93       * isEmpty is true before add, false after
94       */
95      public void testEmpty() {
96 <        LinkedList q = new LinkedList();
96 >        LinkedList<Item> q = new LinkedList<>();
97          assertTrue(q.isEmpty());
98 <        q.add(new Integer(1));
98 >        q.add(one);
99          assertFalse(q.isEmpty());
100 <        q.add(new Integer(2));
100 >        q.add(two);
101          q.remove();
102          q.remove();
103          assertTrue(q.isEmpty());
# Line 80 | Line 107 | public class LinkedListTest extends JSR1
107       * size changes when elements added and removed
108       */
109      public void testSize() {
110 <        LinkedList q = populatedQueue(SIZE);
110 >        LinkedList<Item> q = populatedQueue(SIZE);
111          for (int i = 0; i < SIZE; ++i) {
112 <            assertEquals(SIZE-i, q.size());
112 >            mustEqual(SIZE - i, q.size());
113              q.remove();
114          }
115          for (int i = 0; i < SIZE; ++i) {
116 <            assertEquals(i, q.size());
117 <            q.add(new Integer(i));
116 >            mustEqual(i, q.size());
117 >            mustAdd(q, i);
118          }
119      }
120  
# Line 95 | Line 122 | public class LinkedListTest extends JSR1
122       * offer(null) succeeds
123       */
124      public void testOfferNull() {
125 <        LinkedList q = new LinkedList();
125 >        LinkedList<Item> q = new LinkedList<>();
126          q.offer(null);
127 +        assertNull(q.get(0));
128 +        assertTrue(q.contains(null));
129      }
130  
131      /**
132       * Offer succeeds
133       */
134      public void testOffer() {
135 <        LinkedList q = new LinkedList();
136 <        assertTrue(q.offer(new Integer(0)));
137 <        assertTrue(q.offer(new Integer(1)));
135 >        LinkedList<Item> q = new LinkedList<>();
136 >        mustOffer(q, zero);
137 >        mustOffer(q, one);
138      }
139  
140      /**
141       * add succeeds
142       */
143      public void testAdd() {
144 <        LinkedList q = new LinkedList();
144 >        LinkedList<Item> q = new LinkedList<>();
145          for (int i = 0; i < SIZE; ++i) {
146 <            assertEquals(i, q.size());
147 <            assertTrue(q.add(new Integer(i)));
146 >            mustEqual(i, q.size());
147 >            mustAdd(q, i);
148          }
149      }
150  
# Line 123 | Line 152 | public class LinkedListTest extends JSR1
152       * addAll(null) throws NPE
153       */
154      public void testAddAll1() {
155 +        LinkedList<Item> q = new LinkedList<>();
156          try {
127            LinkedList q = new LinkedList();
157              q.addAll(null);
158              shouldThrow();
159          } catch (NullPointerException success) {}
# Line 134 | Line 163 | public class LinkedListTest extends JSR1
163       * Queue contains all elements, in traversal order, of successful addAll
164       */
165      public void testAddAll5() {
166 <        Integer[] empty = new Integer[0];
167 <        Integer[] ints = new Integer[SIZE];
168 <        for (int i = 0; i < SIZE; ++i)
140 <            ints[i] = i;
141 <        LinkedList q = new LinkedList();
166 >        Item[] empty = new Item[0];
167 >        Item[] items = defaultItems;
168 >        LinkedList<Item> q = new LinkedList<>();
169          assertFalse(q.addAll(Arrays.asList(empty)));
170 <        assertTrue(q.addAll(Arrays.asList(ints)));
170 >        assertTrue(q.addAll(Arrays.asList(items)));
171          for (int i = 0; i < SIZE; ++i)
172 <            assertEquals(ints[i], q.poll());
172 >            mustEqual(items[i], q.poll());
173      }
174  
175      /**
176       * addAll with too large an index throws IOOBE
177       */
178      public void testAddAll2_IndexOutOfBoundsException() {
179 <        LinkedList l = new LinkedList();
180 <        l.add(new Object());
181 <        LinkedList m = new LinkedList();
182 <        m.add(new Object());
179 >        LinkedList<Item> l = new LinkedList<>();
180 >        l.add(zero);
181 >        LinkedList<Item> m = new LinkedList<>();
182 >        m.add(one);
183          try {
184              l.addAll(4,m);
185              shouldThrow();
# Line 163 | Line 190 | public class LinkedListTest extends JSR1
190       * addAll with negative index throws IOOBE
191       */
192      public void testAddAll4_BadIndex() {
193 <        LinkedList l = new LinkedList();
194 <        l.add(new Object());
195 <        LinkedList m = new LinkedList();
196 <        m.add(new Object());
193 >        LinkedList<Item> l = new LinkedList<>();
194 >        l.add(zero);
195 >        LinkedList<Item> m = new LinkedList<>();
196 >        m.add(one);
197          try {
198              l.addAll(-1,m);
199              shouldThrow();
# Line 177 | Line 204 | public class LinkedListTest extends JSR1
204       * poll succeeds unless empty
205       */
206      public void testPoll() {
207 <        LinkedList q = populatedQueue(SIZE);
207 >        LinkedList<Item> q = populatedQueue(SIZE);
208          for (int i = 0; i < SIZE; ++i) {
209 <            assertEquals(i, q.poll());
209 >            mustEqual(i, q.poll());
210          }
211          assertNull(q.poll());
212      }
# Line 188 | Line 215 | public class LinkedListTest extends JSR1
215       * peek returns next element, or null if empty
216       */
217      public void testPeek() {
218 <        LinkedList q = populatedQueue(SIZE);
218 >        LinkedList<Item> q = populatedQueue(SIZE);
219          for (int i = 0; i < SIZE; ++i) {
220 <            assertEquals(i, q.peek());
221 <            assertEquals(i, q.poll());
220 >            mustEqual(i, q.peek());
221 >            mustEqual(i, q.poll());
222              assertTrue(q.peek() == null ||
223                         !q.peek().equals(i));
224          }
# Line 202 | Line 229 | public class LinkedListTest extends JSR1
229       * element returns next element, or throws NSEE if empty
230       */
231      public void testElement() {
232 <        LinkedList q = populatedQueue(SIZE);
232 >        LinkedList<Item> q = populatedQueue(SIZE);
233          for (int i = 0; i < SIZE; ++i) {
234 <            assertEquals(i, q.element());
235 <            assertEquals(i, q.poll());
234 >            mustEqual(i, q.element());
235 >            mustEqual(i, q.poll());
236          }
237          try {
238              q.element();
# Line 217 | Line 244 | public class LinkedListTest extends JSR1
244       * remove removes next element, or throws NSEE if empty
245       */
246      public void testRemove() {
247 <        LinkedList q = populatedQueue(SIZE);
247 >        LinkedList<Item> q = populatedQueue(SIZE);
248          for (int i = 0; i < SIZE; ++i) {
249 <            assertEquals(i, q.remove());
249 >            mustEqual(i, q.remove());
250          }
251          try {
252              q.remove();
# Line 231 | Line 258 | public class LinkedListTest extends JSR1
258       * remove(x) removes x and returns true if present
259       */
260      public void testRemoveElement() {
261 <        LinkedList q = populatedQueue(SIZE);
262 <        for (int i = 1; i < SIZE; i+=2) {
263 <            assertTrue(q.contains(i));
264 <            assertTrue(q.remove((Integer)i));
265 <            assertFalse(q.contains(i));
266 <            assertTrue(q.contains(i-1));
267 <        }
268 <        for (int i = 0; i < SIZE; i+=2) {
269 <            assertTrue(q.contains(i));
270 <            assertTrue(q.remove((Integer)i));
271 <            assertFalse(q.contains(i));
272 <            assertFalse(q.remove((Integer)(i+1)));
273 <            assertFalse(q.contains(i+1));
261 >        LinkedList<Item> q = populatedQueue(SIZE);
262 >        for (int i = 1; i < SIZE; i += 2) {
263 >            mustContain(q, i);
264 >            mustRemove(q, i);
265 >            mustNotContain(q, i);
266 >            mustContain(q, i - 1);
267 >        }
268 >        for (int i = 0; i < SIZE; i += 2) {
269 >            mustContain(q, i);
270 >            mustRemove(q, i);
271 >            mustNotContain(q, i);
272 >            mustNotRemove(q, i + 1);
273 >            mustNotContain(q, i + 1);
274          }
275          assertTrue(q.isEmpty());
276      }
# Line 252 | Line 279 | public class LinkedListTest extends JSR1
279       * contains(x) reports true when elements added but not yet removed
280       */
281      public void testContains() {
282 <        LinkedList q = populatedQueue(SIZE);
282 >        LinkedList<Item> q = populatedQueue(SIZE);
283          for (int i = 0; i < SIZE; ++i) {
284 <            assertTrue(q.contains(new Integer(i)));
284 >            mustContain(q, i);
285              q.poll();
286 <            assertFalse(q.contains(new Integer(i)));
286 >            mustNotContain(q, i);
287          }
288      }
289  
# Line 264 | Line 291 | public class LinkedListTest extends JSR1
291       * clear removes all elements
292       */
293      public void testClear() {
294 <        LinkedList q = populatedQueue(SIZE);
294 >        LinkedList<Item> q = populatedQueue(SIZE);
295          q.clear();
296          assertTrue(q.isEmpty());
297 <        assertEquals(0, q.size());
298 <        assertTrue(q.add(new Integer(1)));
297 >        mustEqual(0, q.size());
298 >        mustAdd(q, one);
299          assertFalse(q.isEmpty());
300          q.clear();
301          assertTrue(q.isEmpty());
# Line 278 | Line 305 | public class LinkedListTest extends JSR1
305       * containsAll(c) is true when c contains a subset of elements
306       */
307      public void testContainsAll() {
308 <        LinkedList q = populatedQueue(SIZE);
309 <        LinkedList p = new LinkedList();
308 >        LinkedList<Item> q = populatedQueue(SIZE);
309 >        LinkedList<Item> p = new LinkedList<>();
310          for (int i = 0; i < SIZE; ++i) {
311              assertTrue(q.containsAll(p));
312              assertFalse(p.containsAll(q));
313 <            assertTrue(p.add(new Integer(i)));
313 >            mustAdd(p, i);
314          }
315          assertTrue(p.containsAll(q));
316      }
# Line 292 | Line 319 | public class LinkedListTest extends JSR1
319       * retainAll(c) retains only those elements of c and reports true if changed
320       */
321      public void testRetainAll() {
322 <        LinkedList q = populatedQueue(SIZE);
323 <        LinkedList p = populatedQueue(SIZE);
322 >        LinkedList<Item> q = populatedQueue(SIZE);
323 >        LinkedList<Item> p = populatedQueue(SIZE);
324          for (int i = 0; i < SIZE; ++i) {
325              boolean changed = q.retainAll(p);
326              if (i == 0)
# Line 302 | Line 329 | public class LinkedListTest extends JSR1
329                  assertTrue(changed);
330  
331              assertTrue(q.containsAll(p));
332 <            assertEquals(SIZE-i, q.size());
332 >            mustEqual(SIZE - i, q.size());
333              p.remove();
334          }
335      }
# Line 312 | Line 339 | public class LinkedListTest extends JSR1
339       */
340      public void testRemoveAll() {
341          for (int i = 1; i < SIZE; ++i) {
342 <            LinkedList q = populatedQueue(SIZE);
343 <            LinkedList p = populatedQueue(i);
342 >            LinkedList<Item> q = populatedQueue(SIZE);
343 >            LinkedList<Item> p = populatedQueue(i);
344              assertTrue(q.removeAll(p));
345 <            assertEquals(SIZE-i, q.size());
345 >            mustEqual(SIZE - i, q.size());
346              for (int j = 0; j < i; ++j) {
347 <                Integer I = (Integer)(p.remove());
321 <                assertFalse(q.contains(I));
347 >                mustNotContain(q, p.remove());
348              }
349          }
350      }
# Line 327 | Line 353 | public class LinkedListTest extends JSR1
353       * toArray contains all elements in FIFO order
354       */
355      public void testToArray() {
356 <        LinkedList q = populatedQueue(SIZE);
357 <        Object[] o = q.toArray();
358 <        for (int i = 0; i < o.length; i++)
359 <            assertSame(o[i], q.poll());
356 >        LinkedList<Item> q = populatedQueue(SIZE);
357 >        Object[] a = q.toArray();
358 >        assertSame(Object[].class, a.getClass());
359 >        for (Object o : a)
360 >            assertSame(o, q.poll());
361 >        assertTrue(q.isEmpty());
362      }
363  
364      /**
365       * toArray(a) contains all elements in FIFO order
366       */
367      public void testToArray2() {
368 <        LinkedList<Integer> q = populatedQueue(SIZE);
369 <        Integer[] ints = new Integer[SIZE];
370 <        Integer[] array = q.toArray(ints);
371 <        assertSame(ints, array);
372 <        for (int i = 0; i < ints.length; i++)
373 <            assertSame(ints[i], q.poll());
368 >        LinkedList<Item> q = populatedQueue(SIZE);
369 >        Item[] items = new Item[SIZE];
370 >        Item[] array = q.toArray(items);
371 >        assertSame(items, array);
372 >        for (Item o : items)
373 >            assertSame(o, q.poll());
374 >        assertTrue(q.isEmpty());
375      }
376  
377      /**
378       * toArray(null) throws NullPointerException
379       */
380      public void testToArray_NullArg() {
381 <        LinkedList l = new LinkedList();
382 <        l.add(new Object());
381 >        LinkedList<Item> l = new LinkedList<>();
382 >        l.add(zero);
383          try {
384 <            l.toArray(null);
384 >            l.toArray((Item[])null);
385              shouldThrow();
386          } catch (NullPointerException success) {}
387      }
# Line 361 | Line 390 | public class LinkedListTest extends JSR1
390       * toArray(incompatible array type) throws ArrayStoreException
391       */
392      public void testToArray1_BadArg() {
393 <        LinkedList l = new LinkedList();
394 <        l.add(new Integer(5));
393 >        LinkedList<Item> l = new LinkedList<>();
394 >        l.add(five);
395          try {
396              l.toArray(new String[10]);
397              shouldThrow();
# Line 373 | Line 402 | public class LinkedListTest extends JSR1
402       * iterator iterates through all elements
403       */
404      public void testIterator() {
405 <        LinkedList q = populatedQueue(SIZE);
406 <        int i = 0;
407 <        Iterator it = q.iterator();
408 <        while (it.hasNext()) {
409 <            assertTrue(q.contains(it.next()));
410 <            ++i;
411 <        }
412 <        assertEquals(i, SIZE);
405 >        LinkedList<Item> q = populatedQueue(SIZE);
406 >        Iterator<? extends Item> it = q.iterator();
407 >        int i;
408 >        for (i = 0; it.hasNext(); i++)
409 >            mustContain(q, it.next());
410 >        mustEqual(i, SIZE);
411 >        assertIteratorExhausted(it);
412 >    }
413 >
414 >    /**
415 >     * iterator of empty collection has no elements
416 >     */
417 >    public void testEmptyIterator() {
418 >        assertIteratorExhausted(new LinkedList<>().iterator());
419      }
420  
421      /**
422       * iterator ordering is FIFO
423       */
424      public void testIteratorOrdering() {
425 <        final LinkedList q = new LinkedList();
426 <        q.add(new Integer(1));
427 <        q.add(new Integer(2));
428 <        q.add(new Integer(3));
425 >        final LinkedList<Item> q = new LinkedList<>();
426 >        q.add(one);
427 >        q.add(two);
428 >        q.add(three);
429          int k = 0;
430 <        for (Iterator it = q.iterator(); it.hasNext();) {
431 <            assertEquals(++k, it.next());
430 >        for (Iterator<? extends Item> it = q.iterator(); it.hasNext();) {
431 >            mustEqual(++k, it.next());
432          }
433  
434 <        assertEquals(3, k);
434 >        mustEqual(3, k);
435      }
436  
437      /**
438       * iterator.remove removes current element
439       */
440      public void testIteratorRemove() {
441 <        final LinkedList q = new LinkedList();
442 <        q.add(new Integer(1));
443 <        q.add(new Integer(2));
444 <        q.add(new Integer(3));
445 <        Iterator it = q.iterator();
446 <        assertEquals(it.next(), 1);
441 >        final LinkedList<Item> q = new LinkedList<>();
442 >        q.add(one);
443 >        q.add(two);
444 >        q.add(three);
445 >        Iterator<? extends Item> it = q.iterator();
446 >        mustEqual(1, it.next());
447          it.remove();
448          it = q.iterator();
449 <        assertEquals(it.next(), 2);
450 <        assertEquals(it.next(), 3);
449 >        mustEqual(2, it.next());
450 >        mustEqual(3, it.next());
451          assertFalse(it.hasNext());
452      }
453  
# Line 420 | Line 455 | public class LinkedListTest extends JSR1
455       * Descending iterator iterates through all elements
456       */
457      public void testDescendingIterator() {
458 <        LinkedList q = populatedQueue(SIZE);
458 >        LinkedList<Item> q = populatedQueue(SIZE);
459          int i = 0;
460 <        Iterator it = q.descendingIterator();
460 >        Iterator<? extends Item> it = q.descendingIterator();
461          while (it.hasNext()) {
462 <            assertTrue(q.contains(it.next()));
462 >            mustContain(q, it.next());
463              ++i;
464          }
465 <        assertEquals(i, SIZE);
465 >        mustEqual(i, SIZE);
466          assertFalse(it.hasNext());
467          try {
468              it.next();
# Line 439 | Line 474 | public class LinkedListTest extends JSR1
474       * Descending iterator ordering is reverse FIFO
475       */
476      public void testDescendingIteratorOrdering() {
477 <        final LinkedList q = new LinkedList();
478 <        q.add(new Integer(3));
479 <        q.add(new Integer(2));
480 <        q.add(new Integer(1));
477 >        final LinkedList<Item> q = new LinkedList<>();
478 >        q.add(three);
479 >        q.add(two);
480 >        q.add(one);
481          int k = 0;
482 <        for (Iterator it = q.descendingIterator(); it.hasNext();) {
483 <            assertEquals(++k, it.next());
482 >        for (Iterator<? extends Item> it = q.descendingIterator(); it.hasNext();) {
483 >            mustEqual(++k, it.next());
484          }
485  
486 <        assertEquals(3, k);
486 >        mustEqual(3, k);
487      }
488  
489      /**
490       * descendingIterator.remove removes current element
491       */
492      public void testDescendingIteratorRemove() {
493 <        final LinkedList q = new LinkedList();
493 >        final LinkedList<Item> q = new LinkedList<>();
494          q.add(three);
495          q.add(two);
496          q.add(one);
497 <        Iterator it = q.descendingIterator();
497 >        Iterator<? extends Item> it = q.descendingIterator();
498          it.next();
499          it.remove();
500          it = q.descendingIterator();
# Line 468 | Line 503 | public class LinkedListTest extends JSR1
503          assertFalse(it.hasNext());
504      }
505  
471
506      /**
507       * toString contains toStrings of elements
508       */
509      public void testToString() {
510 <        LinkedList q = populatedQueue(SIZE);
510 >        LinkedList<Item> q = populatedQueue(SIZE);
511          String s = q.toString();
512          for (int i = 0; i < SIZE; ++i) {
513 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
513 >            assertTrue(s.contains(String.valueOf(i)));
514          }
515      }
516  
# Line 484 | Line 518 | public class LinkedListTest extends JSR1
518       * peek returns element inserted with addFirst
519       */
520      public void testAddFirst() {
521 <        LinkedList q = populatedQueue(3);
521 >        LinkedList<Item> q = populatedQueue(3);
522          q.addFirst(four);
523          assertSame(four, q.peek());
524      }
# Line 493 | Line 527 | public class LinkedListTest extends JSR1
527       * peekFirst returns element inserted with push
528       */
529      public void testPush() {
530 <        LinkedList q = populatedQueue(3);
530 >        LinkedList<Item> q = populatedQueue(3);
531          q.push(four);
532          assertSame(four, q.peekFirst());
533      }
# Line 502 | Line 536 | public class LinkedListTest extends JSR1
536       * pop removes next element, or throws NSEE if empty
537       */
538      public void testPop() {
539 <        LinkedList q = populatedQueue(SIZE);
539 >        LinkedList<Item> q = populatedQueue(SIZE);
540          for (int i = 0; i < SIZE; ++i) {
541 <            assertEquals(i, q.pop());
541 >            mustEqual(i, q.pop());
542          }
543          try {
544              q.pop();
# Line 516 | Line 550 | public class LinkedListTest extends JSR1
550       * OfferFirst succeeds
551       */
552      public void testOfferFirst() {
553 <        LinkedList q = new LinkedList();
554 <        assertTrue(q.offerFirst(new Integer(0)));
555 <        assertTrue(q.offerFirst(new Integer(1)));
553 >        LinkedList<Item> q = new LinkedList<>();
554 >        assertTrue(q.offerFirst(zero));
555 >        assertTrue(q.offerFirst(one));
556      }
557  
558      /**
559       * OfferLast succeeds
560       */
561      public void testOfferLast() {
562 <        LinkedList q = new LinkedList();
563 <        assertTrue(q.offerLast(new Integer(0)));
564 <        assertTrue(q.offerLast(new Integer(1)));
562 >        LinkedList<Item> q = new LinkedList<>();
563 >        assertTrue(q.offerLast(zero));
564 >        assertTrue(q.offerLast(one));
565      }
566  
567      /**
568       * pollLast succeeds unless empty
569       */
570      public void testPollLast() {
571 <        LinkedList q = populatedQueue(SIZE);
572 <        for (int i = SIZE-1; i >= 0; --i) {
573 <            assertEquals(i, q.pollLast());
571 >        LinkedList<Item> q = populatedQueue(SIZE);
572 >        for (int i = SIZE - 1; i >= 0; --i) {
573 >            mustEqual(i, q.pollLast());
574          }
575          assertNull(q.pollLast());
576      }
# Line 545 | Line 579 | public class LinkedListTest extends JSR1
579       * peekFirst returns next element, or null if empty
580       */
581      public void testPeekFirst() {
582 <        LinkedList q = populatedQueue(SIZE);
582 >        LinkedList<Item> q = populatedQueue(SIZE);
583          for (int i = 0; i < SIZE; ++i) {
584 <            assertEquals(i, q.peekFirst());
585 <            assertEquals(i, q.pollFirst());
584 >            mustEqual(i, q.peekFirst());
585 >            mustEqual(i, q.pollFirst());
586              assertTrue(q.peekFirst() == null ||
587                         !q.peekFirst().equals(i));
588          }
589          assertNull(q.peekFirst());
590      }
591  
558
592      /**
593       * peekLast returns next element, or null if empty
594       */
595      public void testPeekLast() {
596 <        LinkedList q = populatedQueue(SIZE);
597 <        for (int i = SIZE-1; i >= 0; --i) {
598 <            assertEquals(i, q.peekLast());
599 <            assertEquals(i, q.pollLast());
596 >        LinkedList<Item> q = populatedQueue(SIZE);
597 >        for (int i = SIZE - 1; i >= 0; --i) {
598 >            mustEqual(i, q.peekLast());
599 >            mustEqual(i, q.pollLast());
600              assertTrue(q.peekLast() == null ||
601                         !q.peekLast().equals(i));
602          }
# Line 571 | Line 604 | public class LinkedListTest extends JSR1
604      }
605  
606      public void testFirstElement() {
607 <        LinkedList q = populatedQueue(SIZE);
607 >        LinkedList<Item> q = populatedQueue(SIZE);
608          for (int i = 0; i < SIZE; ++i) {
609 <            assertEquals(i, q.getFirst());
610 <            assertEquals(i, q.pollFirst());
609 >            mustEqual(i, q.getFirst());
610 >            mustEqual(i, q.pollFirst());
611          }
612          try {
613              q.getFirst();
# Line 586 | Line 619 | public class LinkedListTest extends JSR1
619       * getLast returns next element, or throws NSEE if empty
620       */
621      public void testLastElement() {
622 <        LinkedList q = populatedQueue(SIZE);
623 <        for (int i = SIZE-1; i >= 0; --i) {
624 <            assertEquals(i, q.getLast());
625 <            assertEquals(i, q.pollLast());
622 >        LinkedList<Item> q = populatedQueue(SIZE);
623 >        for (int i = SIZE - 1; i >= 0; --i) {
624 >            mustEqual(i, q.getLast());
625 >            mustEqual(i, q.pollLast());
626          }
627          try {
628              q.getLast();
# Line 602 | Line 635 | public class LinkedListTest extends JSR1
635       * removeFirstOccurrence(x) removes x and returns true if present
636       */
637      public void testRemoveFirstOccurrence() {
638 <        LinkedList q = populatedQueue(SIZE);
639 <        for (int i = 1; i < SIZE; i+=2) {
640 <            assertTrue(q.removeFirstOccurrence(new Integer(i)));
641 <        }
642 <        for (int i = 0; i < SIZE; i+=2) {
643 <            assertTrue(q.removeFirstOccurrence(new Integer(i)));
644 <            assertFalse(q.removeFirstOccurrence(new Integer(i+1)));
638 >        LinkedList<Item> q = populatedQueue(SIZE);
639 >        for (int i = 1; i < SIZE; i += 2) {
640 >            assertTrue(q.removeFirstOccurrence(itemFor(i)));
641 >        }
642 >        for (int i = 0; i < SIZE; i += 2) {
643 >            assertTrue(q.removeFirstOccurrence(itemFor(i)));
644 >            assertFalse(q.removeFirstOccurrence(itemFor(i + 1)));
645          }
646          assertTrue(q.isEmpty());
647      }
# Line 617 | Line 650 | public class LinkedListTest extends JSR1
650       * removeLastOccurrence(x) removes x and returns true if present
651       */
652      public void testRemoveLastOccurrence() {
653 <        LinkedList q = populatedQueue(SIZE);
654 <        for (int i = 1; i < SIZE; i+=2) {
655 <            assertTrue(q.removeLastOccurrence(new Integer(i)));
656 <        }
657 <        for (int i = 0; i < SIZE; i+=2) {
658 <            assertTrue(q.removeLastOccurrence(new Integer(i)));
659 <            assertFalse(q.removeLastOccurrence(new Integer(i+1)));
653 >        LinkedList<Item> q = populatedQueue(SIZE);
654 >        for (int i = 1; i < SIZE; i += 2) {
655 >            assertTrue(q.removeLastOccurrence(itemFor(i)));
656 >        }
657 >        for (int i = 0; i < SIZE; i += 2) {
658 >            assertTrue(q.removeLastOccurrence(itemFor(i)));
659 >            assertFalse(q.removeLastOccurrence(itemFor(i + 1)));
660          }
661          assertTrue(q.isEmpty());
662      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines