1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Serializable;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayDeque;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayList;
234c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.Arrays;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ConcurrentModificationException;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Iterator;
263984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamathimport java.util.LinkedList;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.NoSuchElementException;
284c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.Spliterator;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
323984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamathimport libcore.java.util.ForEachRemainingTester;
334c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport libcore.java.util.SpliteratorTester;
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest;
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class ArrayDequeTest extends TestCase {
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private Object testObjOne;
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private Object testObjTwo;
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private Object testObjThree;
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private Object testObjFour;
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private Object testObjLast;
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private ArrayDeque<Object> testQue;
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @Override
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void setUp() throws Exception {
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        super.setUp();
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testObjOne = new Object();
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testObjTwo = new Object();
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testObjThree = new Object();
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testObjFour = new Object();
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testObjLast = new Object();
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue = new ArrayDeque<Object>();
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#ArrayDeque()}
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor() throws Exception {
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, new ArrayDeque<Object>().size());
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#ArrayDeque(java.util.Collection)}
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor_LCollection() throws Exception {
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, new ArrayDeque<Object>(new ArrayList<Object>()).size());
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new ArrayDeque<Object>(null);
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#ArrayDeque(int)}
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor_Int() throws Exception {
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, new ArrayDeque<Object>(8).size());
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> zeroCapQue = new ArrayDeque<Object>(0);
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, zeroCapQue.size());
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        zeroCapQue.add(testObjOne);
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, zeroCapQue.size());
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, new ArrayDeque<Object>(0).size());
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> negCapQue = new ArrayDeque<Object>(-1);
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, negCapQue.size());
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        negCapQue.add(testObjOne);
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, negCapQue.size());
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> oneCapQue = new ArrayDeque<Object>(1);
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, oneCapQue.size());
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        oneCapQue.add(testObjOne);
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, oneCapQue.size());
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        oneCapQue.add(testObjOne);
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, oneCapQue.size());
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#addFirst(Object)}
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_addFirst() throws Exception {
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addFirst(testObjOne);
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, testQue.size());
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addFirst(testObjOne);
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addFirst(testObjTwo);
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peek());
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.getLast());
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.addFirst(null);
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#addLast(Object)}
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_addLast() throws Exception {
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addLast(testObjOne);
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, testQue.size());
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addLast(testObjOne);
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.addLast(testObjTwo);
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.getLast());
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.addLast(null);
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#offerFirst(Object)}
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_offerFirst() throws Exception {
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerFirst(testObjOne));
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, testQue.size());
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerFirst(testObjOne));
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerFirst(testObjTwo));
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peek());
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.getLast());
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.offerFirst(null);
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#offerLast(Object)}
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_offerLast() throws Exception {
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, testQue.size());
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.getLast());
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.offerLast(null);
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#removeFirst()}
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_removeFirst() throws Exception {
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.removeFirst());
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.removeFirst());
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.removeFirst());
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.removeFirst();
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#removeLast()}
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_removeLast() throws Exception {
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.removeLast());
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.removeLast());
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.removeLast());
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.removeLast();
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#pollFirst()}
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_pollFirst() throws Exception {
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollFirst());
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollFirst());
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollFirst());
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testQue.pollFirst());
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#peekLast()}
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_pollLast() throws Exception {
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollLast());
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollLast());
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollLast());
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testQue.pollFirst());
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#getFirst()}
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getFirst() throws Exception {
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.getFirst());
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollFirst());
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.getFirst());
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollFirst());
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollFirst());
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.getFirst();
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#getLast()}
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getLast() throws Exception {
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.getLast());
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollLast());
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.getLast());
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollLast());
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollLast());
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.getLast();
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#peekFirst()}
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_peekFirst() throws Exception {
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekFirst());
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollFirst());
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peekFirst());
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollFirst());
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollFirst());
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, testQue.peekFirst());
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#peekLast()}
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_peekLast() throws Exception {
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollLast());
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peekLast());
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollLast());
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollLast());
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testQue.peekLast());
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#removeFirstOccurrence(Object)}
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_removeFirstOccurrence() throws Exception {
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeFirstOccurrence(testObjOne));
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.removeFirstOccurrence(testObjFour));
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peekFirst());
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekLast());
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, testQue.size());
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeFirstOccurrence(testObjOne));
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekLast());
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeFirstOccurrence(testObjOne));
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.removeFirstOccurrence(testObjOne));
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#removeLastOccurrence(Object)}
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_removeLastOccurrence() throws Exception {
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeLastOccurrence(testObjOne));
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.removeLastOccurrence(testObjFour));
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekFirst());
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, testQue.size());
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeLastOccurrence(testObjOne));
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekFirst());
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.removeLastOccurrence(testObjOne));
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.removeLastOccurrence(testObjOne));
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#add(Object)}
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_add() throws Exception {
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekFirst());
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.add(null);
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw NullPointerException");
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#offer(Object)}
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_offer() throws Exception {
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offer(testObjOne));
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offer(testObjTwo));
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offer(testObjOne));
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offer(testObjThree));
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekFirst());
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.offer(null);
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw NullPointerException");
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#remove()}
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_remove() throws Exception {
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.remove());
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.remove());
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.remove());
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.remove();
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#poll()}
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_poll() throws Exception {
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.poll());
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.poll());
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.poll());
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testQue.poll());
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#element()}
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_element() throws Exception {
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.element());
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollFirst());
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.element());
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollFirst());
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.element());
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollFirst());
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.element();
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#peek()}
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_peek() throws Exception {
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pollFirst());
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peek());
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pollFirst());
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pollFirst());
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, testQue.peek());
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#push(Object)}
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_push() throws Exception {
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.push(testObjOne);
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, testQue.size());
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.push(testObjOne);
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.push(testObjTwo);
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peek());
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.getLast());
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.push(null);
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#pop()}
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_pop() throws Exception {
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.pop());
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.pop());
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.pop());
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.pop();
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException ");
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#addFirst(Object)}
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_size() throws Exception {
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, testQue.size());
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.remove();
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.remove();
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.clear();
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.size());
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#isEmpty()}
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isEmpty() throws Exception {
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.isEmpty());
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.isEmpty());
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.isEmpty());
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.isEmpty());
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.remove();
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.remove();
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.isEmpty());
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.clear();
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.isEmpty());
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#iterator()}
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_iterator() throws Exception {
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.iterator().hasNext());
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator result = testQue.iterator();
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result.remove();
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalStateException");
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalStateException e) {
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result.next();
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ConcurrentModificationException");
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ConcurrentModificationException e) {
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = testQue.iterator();
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result.next());
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, result.next());
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result.next());
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, result.next());
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjLast, result.next());
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(result.hasNext());
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result.remove();
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, result.next());
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(result.hasNext());
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result.next();
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test a full array
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> ad = new ArrayDeque<Object>();
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(ad.iterator().hasNext());
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator<Object> iter = ad.iterator();
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iter.hasNext());
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test un-full array
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad = new ArrayDeque<Object>();
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; ++i) {
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter = ad.iterator();
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; ++i) {
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iter.hasNext());
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad = new ArrayDeque<Object>();
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter = ad.iterator();
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iter.hasNext());
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < ad.size(); ++i) {
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iter.hasNext());
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad.add(new Object());
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iter.hasNext());
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#descendingIterator()}
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_descendingIterator() throws Exception {
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.descendingIterator().hasNext());
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator result = testQue.descendingIterator();
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result.remove();
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalStateException");
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalStateException e) {
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjFour));
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // a strange behavior here, RI's descendingIterator() and iterator() is
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // properly different. Notice spec: "The iterators returned by this
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // class's iterator method are fail-fast". RI shows descendingIterator()
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // is not an iterator method.
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjLast, result.next());
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = testQue.descendingIterator();
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjFour, result.next());
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjLast, result.next());
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, result.next());
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result.next());
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, result.next());
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(result.hasNext());
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result.remove();
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result.next());
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(result.hasNext());
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result.next();
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test a full array
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> ad = new ArrayDeque<Object>();
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(ad.descendingIterator().hasNext());
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator<Object> iter = ad.descendingIterator();
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iter.hasNext());
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test un-full array
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad = new ArrayDeque<Object>();
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; ++i) {
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter = ad.descendingIterator();
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; ++i) {
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iter.hasNext());
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad = new ArrayDeque<Object>();
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fill the array
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 16; ++i) {
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ad.addLast(new Object());
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter = ad.descendingIterator();
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iter.hasNext());
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < ad.size(); ++i) {
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iter.hasNext());
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iter.remove();
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ad.add(new Object());
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iter.hasNext());
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#contains(Object)}
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_contains() throws Exception {
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.contains(testObjFour));
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.contains(null));
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.contains(testObjOne));
772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.contains(testObjTwo));
773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.contains(testObjThree));
774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.contains(testObjLast));
775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.contains(null));
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.clear();
777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.contains(testObjOne));
778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.contains(testObjTwo));
779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#remove(Object)}
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_remove_LObject() throws Exception {
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjTwo));
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjThree));
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.offerLast(testObjOne));
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.remove(testObjOne));
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.remove(testObjFour));
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, testQue.peekFirst());
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekLast());
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, testQue.size());
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.remove(testObjOne));
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, testQue.size());
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peekLast());
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.remove(testObjOne));
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, testQue.size());
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, testQue.peekLast());
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(testQue.remove(testObjOne));
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#clear()}
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_clear() throws Exception {
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.isEmpty());
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.clear();
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.isEmpty());
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testQue.clear();
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.isEmpty());
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#toArray()}
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toArray() throws Exception {
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, testQue.toArray().length);
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object[] result = testQue.toArray();
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result[0]);
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, result[1]);
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result[2]);
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, result[3]);
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjLast, result[4]);
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // change in array do not affect ArrayDeque
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result[0] = null;
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#toArray(Object[])}
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toArray_$LObject() throws Exception {
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object[] array = new Object[0];
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object[] result = testQue.toArray(array);
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, result.length);
850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(array, result);
851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = testQue.toArray(array);
857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, result.length);
859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, array.length);
860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(array == result);
861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result[0]);
862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjTwo, result[1]);
863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, result[2]);
864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjThree, result[3]);
865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjLast, result[4]);
866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // change in array do not affect ArrayDeque
867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result[0] = null;
868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, testQue.size());
869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(testObjOne, testQue.peek());
870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testQue.toArray(null);
872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.util.ArrayDeque#clone()}
881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_clone() throws Exception {
883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayDeque<Object> cloned = testQue.clone();
884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, cloned.size());
885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(cloned == testQue);
886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjTwo));
888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjOne));
889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjThree));
890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testObjLast));
891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(testQue));
892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cloned = testQue.clone();
893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, cloned.size());
894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (0 != testQue.size()) {
895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(testQue.remove(), cloned.remove());
896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8993984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath    public void test_forEachRemaining_iterator() throws Exception {
900a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        ForEachRemainingTester.test_forEachRemaining(new ArrayDeque<>(),
901a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath                new String[]{ "foo", "bar", "baz "});
902a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        ForEachRemainingTester.test_forEachRemaining_NPE(new ArrayDeque<>(),
903a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath                new String[]{"foo", "bar", "baz "});
904a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath    }
905a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath
906a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath    public void test_forEachRemaining_CME() throws Exception {
907a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        ArrayDeque<String> adq = new ArrayDeque<>();
908a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        adq.add("foo");
909a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath
910a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        // The ArrayDeque forEachRemaining implementation doesn't use a precise check
911a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        // for concurrent modifications.
912a71c780559190439211e731ea8ecf1e0291685d9Narayan Kamath        adq.iterator().forEachRemaining(s -> adq.add(s));
9133984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath    }
9143984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath
9154c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath    public void test_spliterator() throws Exception {
9164c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        ArrayList<Integer> testElements = new ArrayList<>(
9174c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath                Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16));
9184c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        ArrayDeque<Integer> adq = new ArrayDeque<>();
9194c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        adq.addAll(testElements);
9204c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
9214c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.runBasicIterationTests(adq.spliterator(), testElements);
9224c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.runBasicSplitTests(adq, testElements);
9234c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.testSpliteratorNPE(adq.spliterator());
9244c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
9254c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        assertTrue(adq.spliterator().hasCharacteristics(
9264c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath                Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED));
9274c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
9284c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.runOrderedTests(adq);
9294c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.runSizedTests(adq, 16 /* expected size */);
9304c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        SpliteratorTester.runSubSizedTests(adq, 16 /* expected size */);
9314c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath    }
9324c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
9334c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath    public void test_spliterator_CME() throws Exception {
9344c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        ArrayDeque<Integer> adq = new ArrayDeque<>();
9354c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        adq.add(52);
9364c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
9374c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        Spliterator<Integer> sp = adq.spliterator();
9384c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
939a73ca5822d77cff8b675ead6e5a3ad190183ba1cNarayan Kamath        // Spliterators from ArrayDequeues never throw CME. The following statements
940a73ca5822d77cff8b675ead6e5a3ad190183ba1cNarayan Kamath        // would have thrown a CME on most other collection classes.
941a73ca5822d77cff8b675ead6e5a3ad190183ba1cNarayan Kamath        assertTrue(sp.tryAdvance(value -> adq.add(value)));
9424c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath        sp.forEachRemaining(value -> adq.add(value));
9434c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath    }
9444c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath
945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.ArrayDeque#Serialization()
947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_serialization() throws Exception {
949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(1)));
950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(2)));
951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(3)));
952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(4)));
953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(5)));
954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifySelf(testQue, new SerializableAssert() {
955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public void assertDeserialized(Serializable initial,
956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Serializable deserialized) {
957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ArrayDeque<Object> formerQue = (ArrayDeque) initial;
958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ArrayDeque<Object> deserializedQue = (ArrayDeque) deserialized;
959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(formerQue.remove(), deserializedQue.remove());
960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        });
962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization/deserialization compatibility with RI.
966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings({ "unchecked", "boxing" })
968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void testSerializationCompatibility() throws Exception {
969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(1)));
970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(2)));
971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(3)));
972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(4)));
973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(testQue.add(new Integer(5)));
974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifyGolden(this, testQue, new SerializableAssert() {
975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public void assertDeserialized(Serializable initial,
976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Serializable deserialized) {
977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ArrayDeque<Object> formerQue = (ArrayDeque) initial;
978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ArrayDeque<Object> deserializedQue = (ArrayDeque) deserialized;
979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(formerQue.remove(), deserializedQue.remove());
980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        });
982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
984