31 package com.google.protobuf;
33 import static java.util.Arrays.asList;
36 import java.util.Collections;
37 import java.util.ConcurrentModificationException;
38 import java.util.Iterator;
39 import junit.framework.TestCase;
51 private DoubleArrayList
list;
54 protected void setUp() throws Exception {
55 list =
new DoubleArrayList();
59 assertSame(DoubleArrayList.emptyList(), DoubleArrayList.emptyList());
76 list.addAll(asList(1D, 2D, 3D, 4D));
77 Iterator<Double> iterator =
list.iterator();
78 assertEquals(4,
list.size());
79 assertEquals(1D, (
double)
list.get(0), 0.0);
80 assertEquals(1D, (
double) iterator.next(), 0.0);
82 assertEquals(2D, (
double) iterator.next(), 0.0);
88 }
catch (ConcurrentModificationException e) {
92 iterator =
list.iterator();
97 }
catch (ConcurrentModificationException e) {
110 }
catch (IndexOutOfBoundsException e) {
117 }
catch (IndexOutOfBoundsException e) {
130 }
catch (IndexOutOfBoundsException e) {
137 }
catch (IndexOutOfBoundsException e) {
143 assertEquals(0, DoubleArrayList.emptyList().size());
151 assertEquals(4,
list.size());
154 assertEquals(3,
list.size());
157 assertEquals(4,
list.size());
164 assertEquals(2D, (
double)
list.set(0, 3D), 0.0);
165 assertEquals(3D,
list.getDouble(0), 0.0);
167 assertEquals(4D, (
double)
list.set(1, 0D), 0.0);
168 assertEquals(0D,
list.getDouble(1), 0.0);
173 }
catch (IndexOutOfBoundsException e) {
180 }
catch (IndexOutOfBoundsException e) {
189 assertEquals(1D,
list.setDouble(0, 0), 0.0);
190 assertEquals(0D,
list.getDouble(0), 0.0);
192 assertEquals(3D,
list.setDouble(1, 0), 0.0);
193 assertEquals(0D,
list.getDouble(1), 0.0);
196 list.setDouble(-1, 0);
198 }
catch (IndexOutOfBoundsException e) {
203 list.setDouble(2, 0);
205 }
catch (IndexOutOfBoundsException e) {
211 assertEquals(0,
list.size());
213 assertTrue(
list.add(2D));
214 assertEquals(asList(2D),
list);
216 assertTrue(
list.add(3D));
218 assertEquals(asList(4D, 2D, 3D),
list);
223 for (
int i = 0;
i < 6;
i++) {
226 assertEquals(asList(0D, 1D, 4D, 2D, 3D, 5D, 6D, 7D, 8D, 9D, 10D),
list);
230 }
catch (IndexOutOfBoundsException e) {
236 }
catch (IndexOutOfBoundsException e) {
242 assertEquals(0,
list.size());
245 assertEquals(asList(2D),
list);
248 assertEquals(asList(2D, 3D),
list);
252 assertEquals(0,
list.size());
254 assertTrue(
list.addAll(Collections.singleton(1D)));
255 assertEquals(1,
list.size());
256 assertEquals(1D, (
double)
list.get(0), 0.0);
257 assertEquals(1D,
list.getDouble(0), 0.0);
259 assertTrue(
list.addAll(asList(2D, 3D, 4D, 5D, 6D)));
260 assertEquals(asList(1D, 2D, 3D, 4D, 5D, 6D),
list);
263 assertEquals(asList(1D, 2D, 3D, 4D, 5D, 6D, 1D, 2D, 3D),
list);
265 assertFalse(
list.addAll(Collections.<
Double>emptyList()));
266 assertFalse(
list.addAll(DoubleArrayList.emptyList()));
270 DoubleArrayList list1 =
new DoubleArrayList();
271 DoubleArrayList list2 =
new DoubleArrayList();
273 list1.addDouble(
Double.longBitsToDouble(0x7ff0000000000001L));
274 list2.addDouble(
Double.longBitsToDouble(0x7ff0000000000002L));
275 assertEquals(list1, list2);
280 assertEquals(1D, (
double)
list.remove(0), 0.0);
281 assertEquals(asList(2D, 3D),
list);
284 assertEquals(asList(2D),
list);
287 assertEquals(asList(2D),
list);
289 assertEquals(2D, (
double)
list.remove(0), 0.0);
290 assertEquals(asList(),
list);
295 }
catch (IndexOutOfBoundsException e) {
301 }
catch (IndexOutOfBoundsException e) {
310 assertEquals(0, toRemove.size());
318 assertEquals(1, toRemove.size());
319 assertEquals(4D, (
double) toRemove.get(0));
325 toRemove.subList(0, 1).clear();
326 assertEquals(0, toRemove.size());
330 if (
list.contains(1D)) {
331 throw new RuntimeException(
"Cannot test the immutability of lists that contain 1.");
337 }
catch (UnsupportedOperationException e) {
344 }
catch (UnsupportedOperationException e) {
351 }
catch (UnsupportedOperationException e) {
356 list.addAll(Collections.singletonList(1D));
358 }
catch (UnsupportedOperationException e) {
363 list.addAll(
new DoubleArrayList());
365 }
catch (UnsupportedOperationException e) {
372 }
catch (UnsupportedOperationException e) {
377 list.addAll(0, Collections.singleton(1D));
379 }
catch (UnsupportedOperationException e) {
386 }
catch (UnsupportedOperationException e) {
391 list.addAll(0, Collections.<
Double>emptyList());
393 }
catch (UnsupportedOperationException e) {
400 }
catch (UnsupportedOperationException e) {
407 }
catch (UnsupportedOperationException e) {
414 }
catch (UnsupportedOperationException e) {
419 list.remove(
new Object());
421 }
catch (UnsupportedOperationException e) {
426 list.removeAll(Collections.<
Double>emptyList());
428 }
catch (UnsupportedOperationException e) {
433 list.removeAll(Collections.singleton(1D));
435 }
catch (UnsupportedOperationException e) {
442 }
catch (UnsupportedOperationException e) {
447 list.retainAll(Collections.<
Double>emptyList());
449 }
catch (UnsupportedOperationException e) {
454 list.retainAll(Collections.singleton(1D));
456 }
catch (UnsupportedOperationException e) {
463 }
catch (UnsupportedOperationException e) {
470 }
catch (UnsupportedOperationException e) {
475 list.setDouble(0, 0);
477 }
catch (UnsupportedOperationException e) {
483 DoubleArrayList
list =
new DoubleArrayList();
484 for (
double element : elements) {
485 list.addDouble(element);
487 list.makeImmutable();