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

Comparing jsr166/src/test/tck/ArrayDequeTest.java (file contents):
Revision 1.10 by jsr166, Sat Nov 21 10:29:49 2009 UTC vs.
Revision 1.24 by jsr166, Tue May 31 16:16:23 2011 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   */
6  
7   import junit.framework.*;
8 < import java.util.*;
9 < import java.util.concurrent.*;
8 > import java.util.Arrays;
9 > import java.util.ArrayDeque;
10 > import java.util.Collection;
11 > import java.util.Deque;
12 > import java.util.Iterator;
13 > import java.util.NoSuchElementException;
14 > import java.util.Queue;
15 > import java.util.Random;
16  
17   public class ArrayDequeTest extends JSR166TestCase {
18      public static void main(String[] args) {
19 <        junit.textui.TestRunner.run (suite());
19 >        junit.textui.TestRunner.run(suite());
20      }
21  
22      public static Test suite() {
# Line 18 | Line 24 | public class ArrayDequeTest extends JSR1
24      }
25  
26      /**
27 <     * Create a queue of given size containing consecutive
27 >     * Create a deque of given size containing consecutive
28       * Integers 0 ... n.
29       */
30 <    private ArrayDeque populatedDeque(int n) {
31 <        ArrayDeque q = new ArrayDeque();
30 >    private ArrayDeque<Integer> populatedDeque(int n) {
31 >        ArrayDeque<Integer> q = new ArrayDeque<Integer>();
32          assertTrue(q.isEmpty());
33          for (int i = 0; i < n; ++i)
34              assertTrue(q.offerLast(new Integer(i)));
# Line 32 | Line 38 | public class ArrayDequeTest extends JSR1
38      }
39  
40      /**
41 <     * new queue is empty
41 >     * new deque is empty
42       */
43      public void testConstructor1() {
44          assertEquals(0, new ArrayDeque().size());
# Line 49 | Line 55 | public class ArrayDequeTest extends JSR1
55      }
56  
57      /**
58 <     * Queue contains all elements of collection used to initialize
58 >     * Initializing from Collection of null elements throws NPE
59 >     */
60 >    public void testConstructor4() {
61 >        try {
62 >            Integer[] ints = new Integer[SIZE];
63 >            ArrayDeque q = new ArrayDeque(Arrays.asList(ints));
64 >            shouldThrow();
65 >        } catch (NullPointerException success) {}
66 >    }
67 >
68 >    /**
69 >     * Initializing from Collection with some null elements throws NPE
70 >     */
71 >    public void testConstructor5() {
72 >        try {
73 >            Integer[] ints = new Integer[SIZE];
74 >            for (int i = 0; i < SIZE-1; ++i)
75 >                ints[i] = new Integer(i);
76 >            ArrayDeque q = new ArrayDeque(Arrays.asList(ints));
77 >            shouldThrow();
78 >        } catch (NullPointerException success) {}
79 >    }
80  
81 +    /**
82 +     * Deque contains all elements of collection used to initialize
83       */
84      public void testConstructor6() {
85          Integer[] ints = new Integer[SIZE];
# Line 102 | Line 131 | public class ArrayDequeTest extends JSR1
131      }
132  
133      /**
134 <     * peekFirst returns element inserted with push
134 >     * peekFirst() returns element inserted with push
135       */
136      public void testPush() {
137          ArrayDeque q = populatedDeque(3);
138          q.pollLast();
139          q.push(four);
140 <        assertEquals(four,q.peekFirst());
140 >        assertSame(four, q.peekFirst());
141      }
142  
143      /**
144 <     *  pop removes next element, or throws NSEE if empty
144 >     * pop() removes next element, or throws NSEE if empty
145       */
146      public void testPop() {
147          ArrayDeque q = populatedDeque(SIZE);
148          for (int i = 0; i < SIZE; ++i) {
149 <            assertEquals(i, ((Integer)q.pop()).intValue());
149 >            assertEquals(i, q.pop());
150          }
151          try {
152              q.pop();
# Line 128 | Line 157 | public class ArrayDequeTest extends JSR1
157      /**
158       * offer(null) throws NPE
159       */
160 +    public void testOfferNull() {
161 +        try {
162 +            ArrayDeque q = new ArrayDeque();
163 +            q.offer(null);
164 +            shouldThrow();
165 +        } catch (NullPointerException success) {}
166 +    }
167 +
168 +    /**
169 +     * offerFirst(null) throws NPE
170 +     */
171      public void testOfferFirstNull() {
172          try {
173              ArrayDeque q = new ArrayDeque();
# Line 137 | Line 177 | public class ArrayDequeTest extends JSR1
177      }
178  
179      /**
180 <     * OfferFirst succeeds
180 >     * offerLast(null) throws NPE
181 >     */
182 >    public void testOfferLastNull() {
183 >        try {
184 >            ArrayDeque q = new ArrayDeque();
185 >            q.offerLast(null);
186 >            shouldThrow();
187 >        } catch (NullPointerException success) {}
188 >    }
189 >
190 >    /**
191 >     * offer(x) succeeds
192 >     */
193 >    public void testOffer() {
194 >        ArrayDeque q = new ArrayDeque();
195 >        assertTrue(q.offer(zero));
196 >        assertTrue(q.offer(one));
197 >        assertSame(zero, q.peekFirst());
198 >        assertSame(one, q.peekLast());
199 >    }
200 >
201 >    /**
202 >     * offerFirst(x) succeeds
203       */
204      public void testOfferFirst() {
205          ArrayDeque q = new ArrayDeque();
206 <        assertTrue(q.offerFirst(new Integer(0)));
207 <        assertTrue(q.offerFirst(new Integer(1)));
206 >        assertTrue(q.offerFirst(zero));
207 >        assertTrue(q.offerFirst(one));
208 >        assertSame(one, q.peekFirst());
209 >        assertSame(zero, q.peekLast());
210      }
211  
212      /**
213 <     * OfferLast succeeds
213 >     * offerLast(x) succeeds
214       */
215      public void testOfferLast() {
216          ArrayDeque q = new ArrayDeque();
217 <        assertTrue(q.offerLast(new Integer(0)));
218 <        assertTrue(q.offerLast(new Integer(1)));
217 >        assertTrue(q.offerLast(zero));
218 >        assertTrue(q.offerLast(one));
219 >        assertSame(zero, q.peekFirst());
220 >        assertSame(one, q.peekLast());
221      }
222  
223      /**
224 <     * add succeeds
224 >     * add(null) throws NPE
225 >     */
226 >    public void testAddNull() {
227 >        try {
228 >            ArrayDeque q = new ArrayDeque();
229 >            q.add(null);
230 >            shouldThrow();
231 >        } catch (NullPointerException success) {}
232 >    }
233 >
234 >    /**
235 >     * addFirst(null) throws NPE
236 >     */
237 >    public void testAddFirstNull() {
238 >        try {
239 >            ArrayDeque q = new ArrayDeque();
240 >            q.addFirst(null);
241 >            shouldThrow();
242 >        } catch (NullPointerException success) {}
243 >    }
244 >
245 >    /**
246 >     * addLast(null) throws NPE
247 >     */
248 >    public void testAddLastNull() {
249 >        try {
250 >            ArrayDeque q = new ArrayDeque();
251 >            q.addLast(null);
252 >            shouldThrow();
253 >        } catch (NullPointerException success) {}
254 >    }
255 >
256 >    /**
257 >     * add(x) succeeds
258       */
259      public void testAdd() {
260          ArrayDeque q = new ArrayDeque();
261 <        for (int i = 0; i < SIZE; ++i) {
262 <            assertEquals(i, q.size());
263 <            assertTrue(q.add(new Integer(i)));
264 <        }
261 >        assertTrue(q.add(zero));
262 >        assertTrue(q.add(one));
263 >        assertSame(zero, q.peekFirst());
264 >        assertSame(one, q.peekLast());
265 >    }
266 >
267 >    /**
268 >     * addFirst(x) succeeds
269 >     */
270 >    public void testAddFirst() {
271 >        ArrayDeque q = new ArrayDeque();
272 >        q.addFirst(zero);
273 >        q.addFirst(one);
274 >        assertSame(one, q.peekFirst());
275 >        assertSame(zero, q.peekLast());
276 >    }
277 >
278 >    /**
279 >     * addLast(x) succeeds
280 >     */
281 >    public void testAddLast() {
282 >        ArrayDeque q = new ArrayDeque();
283 >        q.addLast(zero);
284 >        q.addLast(one);
285 >        assertSame(zero, q.peekFirst());
286 >        assertSame(one, q.peekLast());
287      }
288  
289      /**
# Line 177 | Line 298 | public class ArrayDequeTest extends JSR1
298      }
299  
300      /**
301 <     * Queue contains all elements, in traversal order, of successful addAll
301 >     * addAll of a collection with null elements throws NPE
302 >     */
303 >    public void testAddAll2() {
304 >        try {
305 >            ArrayDeque q = new ArrayDeque();
306 >            Integer[] ints = new Integer[SIZE];
307 >            q.addAll(Arrays.asList(ints));
308 >            shouldThrow();
309 >        } catch (NullPointerException success) {}
310 >    }
311 >
312 >    /**
313 >     * addAll of a collection with any null elements throws NPE after
314 >     * possibly adding some elements
315 >     */
316 >    public void testAddAll3() {
317 >        try {
318 >            ArrayDeque q = new ArrayDeque();
319 >            Integer[] ints = new Integer[SIZE];
320 >            for (int i = 0; i < SIZE-1; ++i)
321 >                ints[i] = new Integer(i);
322 >            q.addAll(Arrays.asList(ints));
323 >            shouldThrow();
324 >        } catch (NullPointerException success) {}
325 >    }
326 >
327 >    /**
328 >     * Deque contains all elements, in traversal order, of successful addAll
329       */
330      public void testAddAll5() {
331          Integer[] empty = new Integer[0];
# Line 192 | Line 340 | public class ArrayDequeTest extends JSR1
340      }
341  
342      /**
343 <     *  pollFirst succeeds unless empty
343 >     * pollFirst() succeeds unless empty
344       */
345      public void testPollFirst() {
346          ArrayDeque q = populatedDeque(SIZE);
347          for (int i = 0; i < SIZE; ++i) {
348 <            assertEquals(i, ((Integer)q.pollFirst()).intValue());
348 >            assertEquals(i, q.pollFirst());
349          }
350          assertNull(q.pollFirst());
351      }
352  
353      /**
354 <     *  pollLast succeeds unless empty
354 >     * pollLast() succeeds unless empty
355       */
356      public void testPollLast() {
357          ArrayDeque q = populatedDeque(SIZE);
358          for (int i = SIZE-1; i >= 0; --i) {
359 <            assertEquals(i, ((Integer)q.pollLast()).intValue());
359 >            assertEquals(i, q.pollLast());
360          }
361          assertNull(q.pollLast());
362      }
363  
364      /**
365 <     *  poll succeeds unless empty
365 >     * poll() succeeds unless empty
366       */
367      public void testPoll() {
368          ArrayDeque q = populatedDeque(SIZE);
369          for (int i = 0; i < SIZE; ++i) {
370 <            assertEquals(i, ((Integer)q.poll()).intValue());
370 >            assertEquals(i, q.poll());
371          }
372          assertNull(q.poll());
373      }
374  
375      /**
376 <     *  remove removes next element, or throws NSEE if empty
376 >     * remove() removes next element, or throws NSEE if empty
377       */
378      public void testRemove() {
379          ArrayDeque q = populatedDeque(SIZE);
380          for (int i = 0; i < SIZE; ++i) {
381 <            assertEquals(i, ((Integer)q.remove()).intValue());
381 >            assertEquals(i, q.remove());
382          }
383          try {
384              q.remove();
# Line 239 | Line 387 | public class ArrayDequeTest extends JSR1
387      }
388  
389      /**
390 <     *  peekFirst returns next element, or null if empty
390 >     * remove(x) removes x and returns true if present
391 >     */
392 >    public void testRemoveElement() {
393 >        ArrayDeque q = populatedDeque(SIZE);
394 >        for (int i = 1; i < SIZE; i+=2) {
395 >            assertTrue(q.contains(i));
396 >            assertTrue(q.remove(i));
397 >            assertFalse(q.contains(i));
398 >            assertTrue(q.contains(i-1));
399 >        }
400 >        for (int i = 0; i < SIZE; i+=2) {
401 >            assertTrue(q.contains(i));
402 >            assertTrue(q.remove(i));
403 >            assertFalse(q.contains(i));
404 >            assertFalse(q.remove(i+1));
405 >            assertFalse(q.contains(i+1));
406 >        }
407 >        assertTrue(q.isEmpty());
408 >    }
409 >
410 >    /**
411 >     * peekFirst() returns next element, or null if empty
412       */
413      public void testPeekFirst() {
414          ArrayDeque q = populatedDeque(SIZE);
415          for (int i = 0; i < SIZE; ++i) {
416 <            assertEquals(i, ((Integer)q.peekFirst()).intValue());
417 <            q.pollFirst();
416 >            assertEquals(i, q.peekFirst());
417 >            assertEquals(i, q.pollFirst());
418              assertTrue(q.peekFirst() == null ||
419 <                       i != ((Integer)q.peekFirst()).intValue());
419 >                       !q.peekFirst().equals(i));
420          }
421          assertNull(q.peekFirst());
422      }
423  
424      /**
425 <     *  peek returns next element, or null if empty
425 >     * peek() returns next element, or null if empty
426       */
427      public void testPeek() {
428          ArrayDeque q = populatedDeque(SIZE);
429          for (int i = 0; i < SIZE; ++i) {
430 <            assertEquals(i, ((Integer)q.peek()).intValue());
431 <            q.poll();
430 >            assertEquals(i, q.peek());
431 >            assertEquals(i, q.poll());
432              assertTrue(q.peek() == null ||
433 <                       i != ((Integer)q.peek()).intValue());
433 >                       !q.peek().equals(i));
434          }
435          assertNull(q.peek());
436      }
437  
438      /**
439 <     *  peekLast returns next element, or null if empty
439 >     * peekLast() returns next element, or null if empty
440       */
441      public void testPeekLast() {
442          ArrayDeque q = populatedDeque(SIZE);
443          for (int i = SIZE-1; i >= 0; --i) {
444 <            assertEquals(i, ((Integer)q.peekLast()).intValue());
445 <            q.pollLast();
444 >            assertEquals(i, q.peekLast());
445 >            assertEquals(i, q.pollLast());
446              assertTrue(q.peekLast() == null ||
447 <                       i != ((Integer)q.peekLast()).intValue());
447 >                       !q.peekLast().equals(i));
448          }
449          assertNull(q.peekLast());
450      }
451  
452      /**
453 <     * getFirst returns next getFirst, or throws NSEE if empty
453 >     * element() returns first element, or throws NSEE if empty
454 >     */
455 >    public void testElement() {
456 >        ArrayDeque q = populatedDeque(SIZE);
457 >        for (int i = 0; i < SIZE; ++i) {
458 >            assertEquals(i, q.element());
459 >            assertEquals(i, q.poll());
460 >        }
461 >        try {
462 >            q.element();
463 >            shouldThrow();
464 >        } catch (NoSuchElementException success) {}
465 >    }
466 >
467 >    /**
468 >     * getFirst() returns first element, or throws NSEE if empty
469       */
470      public void testFirstElement() {
471          ArrayDeque q = populatedDeque(SIZE);
472          for (int i = 0; i < SIZE; ++i) {
473 <            assertEquals(i, ((Integer)q.getFirst()).intValue());
474 <            q.pollFirst();
473 >            assertEquals(i, q.getFirst());
474 >            assertEquals(i, q.pollFirst());
475          }
476          try {
477              q.getFirst();
# Line 296 | Line 480 | public class ArrayDequeTest extends JSR1
480      }
481  
482      /**
483 <     *  getLast returns next element, or throws NSEE if empty
483 >     * getLast() returns last element, or throws NSEE if empty
484       */
485      public void testLastElement() {
486          ArrayDeque q = populatedDeque(SIZE);
487          for (int i = SIZE-1; i >= 0; --i) {
488 <            assertEquals(i, ((Integer)q.getLast()).intValue());
489 <            q.pollLast();
488 >            assertEquals(i, q.getLast());
489 >            assertEquals(i, q.pollLast());
490          }
491          try {
492              q.getLast();
# Line 311 | Line 495 | public class ArrayDequeTest extends JSR1
495          assertNull(q.peekLast());
496      }
497  
314
498      /**
499 <     *  removeFirst removes next element, or throws NSEE if empty
499 >     * removeFirst() removes first element, or throws NSEE if empty
500       */
501      public void testRemoveFirst() {
502          ArrayDeque q = populatedDeque(SIZE);
503          for (int i = 0; i < SIZE; ++i) {
504 <            assertEquals(i, ((Integer)q.removeFirst()).intValue());
504 >            assertEquals(i, q.removeFirst());
505          }
506          try {
507              q.removeFirst();
508              shouldThrow();
509          } catch (NoSuchElementException success) {}
510 +        assertNull(q.peekFirst());
511 +    }
512 +
513 +    /**
514 +     * removeLast() removes last element, or throws NSEE if empty
515 +     */
516 +    public void testRemoveLast() {
517 +        ArrayDeque q = populatedDeque(SIZE);
518 +        for (int i = SIZE - 1; i >= 0; --i) {
519 +            assertEquals(i, q.removeLast());
520 +        }
521 +        try {
522 +            q.removeLast();
523 +            shouldThrow();
524 +        } catch (NoSuchElementException success) {}
525 +        assertNull(q.peekLast());
526      }
527  
528      /**
# Line 363 | Line 562 | public class ArrayDequeTest extends JSR1
562          ArrayDeque q = populatedDeque(SIZE);
563          for (int i = 0; i < SIZE; ++i) {
564              assertTrue(q.contains(new Integer(i)));
565 <            q.pollFirst();
565 >            assertEquals(i, q.pollFirst());
566              assertFalse(q.contains(new Integer(i)));
567          }
568      }
# Line 376 | Line 575 | public class ArrayDequeTest extends JSR1
575          q.clear();
576          assertTrue(q.isEmpty());
577          assertEquals(0, q.size());
578 <        q.add(new Integer(1));
578 >        assertTrue(q.add(new Integer(1)));
579          assertFalse(q.isEmpty());
580          q.clear();
581          assertTrue(q.isEmpty());
# Line 391 | Line 590 | public class ArrayDequeTest extends JSR1
590          for (int i = 0; i < SIZE; ++i) {
591              assertTrue(q.containsAll(p));
592              assertFalse(p.containsAll(q));
593 <            p.add(new Integer(i));
593 >            assertTrue(p.add(new Integer(i)));
594          }
595          assertTrue(p.containsAll(q));
596      }
# Line 404 | Line 603 | public class ArrayDequeTest extends JSR1
603          ArrayDeque p = populatedDeque(SIZE);
604          for (int i = 0; i < SIZE; ++i) {
605              boolean changed = q.retainAll(p);
606 <            if (i == 0)
408 <                assertFalse(changed);
409 <            else
410 <                assertTrue(changed);
411 <
606 >            assertEquals(changed, (i > 0));
607              assertTrue(q.containsAll(p));
608              assertEquals(SIZE-i, q.size());
609              p.removeFirst();
# Line 425 | Line 620 | public class ArrayDequeTest extends JSR1
620              assertTrue(q.removeAll(p));
621              assertEquals(SIZE-i, q.size());
622              for (int j = 0; j < i; ++j) {
623 <                Integer I = (Integer)(p.removeFirst());
429 <                assertFalse(q.contains(I));
623 >                assertFalse(q.contains(p.removeFirst()));
624              }
625          }
626      }
627  
628      /**
629 <     *  toArray contains all elements
629 >     * toArray() contains all elements in FIFO order
630       */
631      public void testToArray() {
632          ArrayDeque q = populatedDeque(SIZE);
633          Object[] o = q.toArray();
440        Arrays.sort(o);
634          for (int i = 0; i < o.length; i++)
635 <            assertEquals(o[i], q.pollFirst());
635 >            assertSame(o[i], q.pollFirst());
636      }
637  
638      /**
639 <     *  toArray(a) contains all elements
639 >     * toArray(a) contains all elements in FIFO order
640       */
641      public void testToArray2() {
642 <        ArrayDeque q = populatedDeque(SIZE);
642 >        ArrayDeque<Integer> q = populatedDeque(SIZE);
643          Integer[] ints = new Integer[SIZE];
644 <        ints = (Integer[])q.toArray(ints);
645 <        Arrays.sort(ints);
644 >        Integer[] array = q.toArray(ints);
645 >        assertSame(ints, array);
646          for (int i = 0; i < ints.length; i++)
647 <            assertEquals(ints[i], q.pollFirst());
647 >            assertSame(ints[i], q.remove());
648      }
649  
650      /**
651 <     * toArray(null) throws NPE
651 >     * toArray(null) throws NullPointerException
652       */
653 <    public void testToArray_BadArg() {
653 >    public void testToArray_NullArg() {
654 >        ArrayDeque l = new ArrayDeque();
655 >        l.add(new Object());
656          try {
657 <            ArrayDeque l = new ArrayDeque();
463 <            l.add(new Object());
464 <            Object o[] = l.toArray(null);
657 >            l.toArray(null);
658              shouldThrow();
659          } catch (NullPointerException success) {}
660      }
661  
662      /**
663 <     * toArray with incompatable aray type throws CCE
663 >     * toArray(incompatible array type) throws ArrayStoreException
664       */
665      public void testToArray1_BadArg() {
666 +        ArrayDeque l = new ArrayDeque();
667 +        l.add(new Integer(5));
668          try {
669 <            ArrayDeque l = new ArrayDeque();
475 <            l.add(new Integer(5));
476 <            Object o[] = l.toArray(new String[10] );
669 >            l.toArray(new String[10]);
670              shouldThrow();
671          } catch (ArrayStoreException success) {}
672      }
673  
674      /**
675 <     *  iterator iterates through all elements
675 >     * Iterator iterates through all elements
676       */
677      public void testIterator() {
678          ArrayDeque q = populatedDeque(SIZE);
# Line 493 | Line 686 | public class ArrayDequeTest extends JSR1
686      }
687  
688      /**
689 <     *  iterator ordering is FIFO
689 >     * Iterator ordering is FIFO
690       */
691      public void testIteratorOrdering() {
692          final ArrayDeque q = new ArrayDeque();
693 <        q.add(new Integer(1));
694 <        q.add(new Integer(2));
695 <        q.add(new Integer(3));
693 >        q.add(one);
694 >        q.add(two);
695 >        q.add(three);
696          int k = 0;
697          for (Iterator it = q.iterator(); it.hasNext();) {
698 <            int i = ((Integer)(it.next())).intValue();
506 <            assertEquals(++k, i);
698 >            assertEquals(++k, it.next());
699          }
700  
701          assertEquals(3, k);
702      }
703  
704      /**
705 <     * iterator.remove removes current element
705 >     * iterator.remove() removes current element
706       */
707 <    public void testIteratorRemove () {
707 >    public void testIteratorRemove() {
708          final ArrayDeque q = new ArrayDeque();
709          final Random rng = new Random();
710          for (int iters = 0; iters < 100; ++iters) {
# Line 538 | Line 730 | public class ArrayDequeTest extends JSR1
730      }
731  
732      /**
733 <     *  Descending iterator iterates through all elements
733 >     * Descending iterator iterates through all elements
734       */
735      public void testDescendingIterator() {
736          ArrayDeque q = populatedDeque(SIZE);
# Line 552 | Line 744 | public class ArrayDequeTest extends JSR1
744          assertFalse(it.hasNext());
745          try {
746              it.next();
747 +            shouldThrow();
748          } catch (NoSuchElementException success) {}
749      }
750  
751      /**
752 <     *  Descending iterator ordering is reverse FIFO
752 >     * Descending iterator ordering is reverse FIFO
753       */
754      public void testDescendingIteratorOrdering() {
755          final ArrayDeque q = new ArrayDeque();
# Line 566 | Line 759 | public class ArrayDequeTest extends JSR1
759              q.add(new Integer(1));
760              int k = 0;
761              for (Iterator it = q.descendingIterator(); it.hasNext();) {
762 <                int i = ((Integer)(it.next())).intValue();
570 <                assertEquals(++k, i);
762 >                assertEquals(++k, it.next());
763              }
764  
765              assertEquals(3, k);
# Line 578 | Line 770 | public class ArrayDequeTest extends JSR1
770      }
771  
772      /**
773 <     * descendingIterator.remove removes current element
773 >     * descendingIterator.remove() removes current element
774       */
775 <    public void testDescendingIteratorRemove () {
775 >    public void testDescendingIteratorRemove() {
776          final ArrayDeque q = new ArrayDeque();
777          final Random rng = new Random();
778          for (int iters = 0; iters < 100; ++iters) {
# Line 605 | Line 797 | public class ArrayDequeTest extends JSR1
797          }
798      }
799  
608
800      /**
801 <     * toString contains toStrings of elements
801 >     * toString() contains toStrings of elements
802       */
803      public void testToString() {
804          ArrayDeque q = populatedDeque(SIZE);
805          String s = q.toString();
806          for (int i = 0; i < SIZE; ++i) {
807 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
807 >            assertTrue(s.contains(String.valueOf(i)));
808          }
809      }
810  
811      /**
812 <     * peekFirst returns element inserted with addFirst
812 >     * A deserialized serialized deque has same elements in same order
813       */
814 <    public void testAddFirst() {
815 <        ArrayDeque q = populatedDeque(3);
816 <        q.addFirst(four);
626 <        assertEquals(four,q.peekFirst());
627 <    }
814 >    public void testSerialization() throws Exception {
815 >        Queue x = populatedDeque(SIZE);
816 >        Queue y = serialClone(x);
817  
818 <    /**
819 <     * peekLast returns element inserted with addLast
820 <     */
821 <    public void testAddLast() {
822 <        ArrayDeque q = populatedDeque(3);
823 <        q.addLast(four);
824 <        assertEquals(four,q.peekLast());
818 >        assertTrue(x != y);
819 >        assertEquals(x.size(), y.size());
820 >        assertEquals(x.toString(), y.toString());
821 >        assertTrue(Arrays.equals(x.toArray(), y.toArray()));
822 >        while (!x.isEmpty()) {
823 >            assertFalse(y.isEmpty());
824 >            assertEquals(x.remove(), y.remove());
825 >        }
826 >        assertTrue(y.isEmpty());
827      }
828  
829   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines