1b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Protocol Buffers - Google's data interchange format
2b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Copyright 2008 Google Inc.  All rights reserved.
3b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// https://developers.google.com/protocol-buffers/
4b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
5b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Redistribution and use in source and binary forms, with or without
6b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// modification, are permitted provided that the following conditions are
7b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// met:
8b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
9b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Redistributions of source code must retain the above copyright
10b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// notice, this list of conditions and the following disclaimer.
11b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Redistributions in binary form must reproduce the above
12b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// copyright notice, this list of conditions and the following disclaimer
13b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// in the documentation and/or other materials provided with the
14b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// distribution.
15b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Neither the name of Google Inc. nor the names of its
16b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// contributors may be used to endorse or promote products derived from
17b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// this software without specific prior written permission.
18b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
19b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
31b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerpackage com.google.protobuf;
32b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
33b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerimport static java.util.Arrays.asList;
34b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
35b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerimport junit.framework.TestCase;
36b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
37b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerimport java.util.Collections;
38b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerimport java.util.ConcurrentModificationException;
39b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerimport java.util.Iterator;
40b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
41b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/**
42b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer * Tests for {@link DoubleArrayList}.
43b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer *
44b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer * @author dweis@google.com (Daniel Weis)
45b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer */
46b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerpublic class DoubleArrayListTest extends TestCase {
47b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
48b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  private static final DoubleArrayList UNARY_LIST = newImmutableDoubleArrayList(1);
49b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  private static final DoubleArrayList TERTIARY_LIST =
50b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      newImmutableDoubleArrayList(1, 2, 3);
51b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
52b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  private DoubleArrayList list;
53b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
54b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  @Override
55b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  protected void setUp() throws Exception {
56b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list = new DoubleArrayList();
57b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
58b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
59b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testEmptyListReturnsSameInstance() {
60b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertSame(DoubleArrayList.emptyList(), DoubleArrayList.emptyList());
61b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
62b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
63b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testEmptyListIsImmutable() {
64b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertImmutable(DoubleArrayList.emptyList());
65b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
66b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
67b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testMakeImmutable() {
68b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(2);
69b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(4);
70b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(6);
71b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(8);
72b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.makeImmutable();
73b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertImmutable(list);
74b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
75b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
76b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testModificationWithIteration() {
77b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addAll(asList(1D, 2D, 3D, 4D));
78b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    Iterator<Double> iterator = list.iterator();
79b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(4, list.size());
80b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, (double) list.get(0));
81b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, (double) iterator.next());
82b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.set(0, 1D);
83b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, (double) iterator.next());
84b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
85b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.remove(0);
86b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
87b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      iterator.next();
88b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
89b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (ConcurrentModificationException e) {
90b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
91b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
92b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
93b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    iterator = list.iterator();
94b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.add(0, 0D);
95b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
96b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      iterator.next();
97b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
98b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (ConcurrentModificationException e) {
99b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
100b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
101b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
102b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
103b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testGet() {
104b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, (double) TERTIARY_LIST.get(0));
105b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, (double) TERTIARY_LIST.get(1));
106b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(3D, (double) TERTIARY_LIST.get(2));
107b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
108b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
109b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      TERTIARY_LIST.get(-1);
110b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
111b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
112b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
113b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
114b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
115b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
116b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      TERTIARY_LIST.get(3);
117b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
118b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
119b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
120b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
121b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
122b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
123b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testGetInt() {
124b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, TERTIARY_LIST.getDouble(0));
125b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, TERTIARY_LIST.getDouble(1));
126b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(3D, TERTIARY_LIST.getDouble(2));
127b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
128b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
129b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      TERTIARY_LIST.get(-1);
130b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
131b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
132b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
133b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
134b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
135b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
136b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      TERTIARY_LIST.get(3);
137b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
138b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
139b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
140b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
141b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
142b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
143b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testSize() {
144b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0, DoubleArrayList.emptyList().size());
145b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1, UNARY_LIST.size());
146b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(3, TERTIARY_LIST.size());
147b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
148b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(2);
149b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(4);
150b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(6);
151b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(8);
152b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(4, list.size());
153b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
154b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.remove(0);
155b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(3, list.size());
156b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
157b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.add(16D);
158b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(4, list.size());
159b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
160b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
161b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testSet() {
162b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(2);
163b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(4);
164b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
165b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, (double) list.set(0, 0D));
166b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0D, list.getDouble(0));
167b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
168b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(4D, (double) list.set(1, 0D));
169b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0D, list.getDouble(1));
170b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
171b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
172b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.set(-1, 0D);
173b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
174b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
175b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
176b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
177b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
178b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
179b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.set(2, 0D);
180b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
181b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
182b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
183b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
184b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
185b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
186b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testSetInt() {
187b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(2);
188b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(4);
189b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
190b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, list.setDouble(0, 0));
191b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0D, list.getDouble(0));
192b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
193b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(4D, list.setDouble(1, 0));
194b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0D, list.getDouble(1));
195b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
196b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
197b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.setDouble(-1, 0);
198b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
199b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
200b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
201b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
202b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
203b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
204b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.setDouble(2, 0);
205b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
206b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
207b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
208b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
209b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
210b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
211b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testAdd() {
212b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0, list.size());
213b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
214b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.add(2D));
215b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D), list);
216b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
217b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.add(3D));
218b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.add(0, 4D);
219b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(4D, 2D, 3D), list);
220b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
221b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.add(0, 1D);
222b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.add(0, 0D);
223b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    // Force a resize by getting up to 11 elements.
224b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    for (int i = 0; i < 6; i++) {
225b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.add(Double.valueOf(5 + i));
226b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
227b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(0D, 1D, 4D, 2D, 3D, 5D, 6D, 7D, 8D, 9D, 10D), list);
228b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
229b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
230b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.add(-1, 5D);
231b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
232b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
233b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
234b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
235b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
236b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.add(4, 5D);
237b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
238b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
239b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
240b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
241b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
242b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testAddInt() {
243b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0, list.size());
244b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
245b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(2);
246b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D), list);
247b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
248b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addDouble(3);
249b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D, 3D), list);
250b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
251b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
252b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testAddAll() {
253b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(0, list.size());
254b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
255b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.addAll(Collections.singleton(1D)));
256b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1, list.size());
257b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, (double) list.get(0));
258b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, list.getDouble(0));
259b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
260b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.addAll(asList(2D, 3D, 4D, 5D, 6D)));
261b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(1D, 2D, 3D, 4D, 5D, 6D), list);
262b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
263b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.addAll(TERTIARY_LIST));
264b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(1D, 2D, 3D, 4D, 5D, 6D, 1D, 2D, 3D), list);
265b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
266b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertFalse(list.addAll(Collections.<Double>emptyList()));
267b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertFalse(list.addAll(DoubleArrayList.emptyList()));
268b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
269b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
270b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  public void testRemove() {
271b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.addAll(TERTIARY_LIST);
272b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(1D, (double) list.remove(0));
273b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D, 3D), list);
274b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
275b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertTrue(list.remove(Double.valueOf(3)));
276b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D), list);
277b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
278b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertFalse(list.remove(Double.valueOf(3)));
279b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(2D), list);
280b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
281b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(2D, (double) list.remove(0));
282b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    assertEquals(asList(), list);
283b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
284b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
285b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.remove(-1);
286b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
287b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
288b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
289b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
290b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
291b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
292b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.remove(0);
293b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (IndexOutOfBoundsException e) {
294b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
295b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
296b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
297b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
298b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  private void assertImmutable(DoubleArrayList list) {
299b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    if (list.contains(1D)) {
300b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      throw new RuntimeException("Cannot test the immutability of lists that contain 1.");
301b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
302b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
303b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
304b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.add(1D);
305b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
306b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
307b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
308b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
309b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
310b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
311b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.add(0, 1D);
312b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
313b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
314b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
315b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
316b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
317b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
318b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(Collections.<Double>emptyList());
319b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
320b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
321b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
322b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
323b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
324b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
325b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(Collections.singletonList(1D));
326b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
327b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
328b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
329b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
330b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
331b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
332b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(new DoubleArrayList());
333b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
334b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
335b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
336b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
337b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
338b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
339b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(UNARY_LIST);
340b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
341b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
342b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
343b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
344b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
345b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
346b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(0, Collections.singleton(1D));
347b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
348b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
349b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
350b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
351b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
352b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
353b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(0, UNARY_LIST);
354b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
355b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
356b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
357b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
358b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
359b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
360b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addAll(0, Collections.<Double>emptyList());
361b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
362b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
363b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
364b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
365b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
366b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
367b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addDouble(0);
368b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
369b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
370b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
371b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
372b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
373b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
374b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.clear();
375b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
376b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
377b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
378b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
379b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
380b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
381b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.remove(1);
382b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
383b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
384b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
385b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
386b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
387b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
388b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.remove(new Object());
389b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
390b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
391b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
392b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
393b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
394b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
395b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.removeAll(Collections.<Double>emptyList());
396b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
397b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
398b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
399b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
400b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
401b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
402b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.removeAll(Collections.singleton(1D));
403b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
404b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
405b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
406b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
407b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
408b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
409b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.removeAll(UNARY_LIST);
410b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
411b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
412b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
413b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
414b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
415b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
416b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.retainAll(Collections.<Double>emptyList());
417b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
418b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
419b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
420b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
421b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
422b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
423b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.retainAll(Collections.singleton(1D));
424b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
425b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
426b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
427b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
428b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
429b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
430b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.retainAll(UNARY_LIST);
431b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
432b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
433b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
434b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
435b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
436b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
437b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.set(0, 0D);
438b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
439b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
440b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
441b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
442b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
443b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    try {
444b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.setDouble(0, 0);
445b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      fail();
446b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    } catch (UnsupportedOperationException e) {
447b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      // expected
448b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
449b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
450b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
451b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  private static DoubleArrayList newImmutableDoubleArrayList(double... elements) {
452b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    DoubleArrayList list = new DoubleArrayList();
453b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    for (double element : elements) {
454b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer      list.addDouble(element);
455b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    }
456b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    list.makeImmutable();
457b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    return list;
458b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  }
459b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer}
460