1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.iterators;
18
19 import java.util.Arrays;
20 import java.util.ListIterator;
21 import java.util.NoSuchElementException;
22
23
24
25
26
27 public class ObjectArrayListIteratorTest<E> extends ObjectArrayIteratorTest<E> {
28
29 public ObjectArrayListIteratorTest(final String testName) {
30 super(testName);
31 }
32
33 @Override
34 @SuppressWarnings("unchecked")
35 public ObjectArrayListIterator<E> makeEmptyIterator() {
36 return new ObjectArrayListIterator<>((E[]) new Object[0]);
37 }
38
39 @Override
40 @SuppressWarnings("unchecked")
41 public ObjectArrayListIterator<E> makeObject() {
42 return new ObjectArrayListIterator<>((E[]) testArray);
43 }
44
45 public ObjectArrayListIterator<E> makeArrayListIterator(final E[] array) {
46 return new ObjectArrayListIterator<>(array);
47 }
48
49
50
51
52
53 public void testListIterator() {
54 final ListIterator<E> iter = makeObject();
55
56
57
58
59
60 while (iter.hasNext()) {
61 iter.next();
62 }
63
64 for (int x = testArray.length - 1; x >= 0; x--) {
65 final Object testValue = testArray[x];
66 final Object iterValue = iter.previous();
67
68 assertEquals("Iteration value is correct", testValue, iterValue);
69 }
70
71 assertTrue("Iterator should now be empty", !iter.hasPrevious());
72
73 try {
74 iter.previous();
75 } catch (final Exception e) {
76 assertTrue(
77 "NoSuchElementException must be thrown",
78 e.getClass().equals(new NoSuchElementException().getClass()));
79 }
80
81 }
82
83
84
85
86 @SuppressWarnings("unchecked")
87 public void testListIteratorSet() {
88 final String[] testData = new String[] { "a", "b", "c" };
89
90 final String[] result = new String[] { "0", "1", "2" };
91
92 ListIterator<E> iter = makeArrayListIterator((E[]) testData);
93 int x = 0;
94
95 while (iter.hasNext()) {
96 iter.next();
97 iter.set((E) Integer.toString(x));
98 x++;
99 }
100
101 assertTrue("The two arrays should have the same value, i.e. {0,1,2}", Arrays.equals(testData, result));
102
103
104 iter = makeArrayListIterator((E[]) testArray);
105
106 try {
107 iter.set((E) "should fail");
108 fail("ListIterator#set should fail if next() or previous() have not yet been called.");
109 } catch (final IllegalStateException e) {
110
111 } catch (final Throwable t) {
112 fail(t.toString());
113 }
114
115 }
116
117 }