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