1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import com.google.common.annotations.GwtCompatible;
20
21 import junit.framework.TestCase;
22
23 import java.util.Iterator;
24 import java.util.ListIterator;
25 import java.util.NoSuchElementException;
26
27
28
29
30
31
32 @GwtCompatible
33 public class UnmodifiableListIteratorTest extends TestCase {
34 public void testRemove() {
35 Iterator<String> iterator = create();
36
37 assertTrue(iterator.hasNext());
38 assertEquals("a", iterator.next());
39 try {
40 iterator.remove();
41 fail();
42 } catch (UnsupportedOperationException expected) {}
43 }
44
45 public void testAdd() {
46 ListIterator<String> iterator = create();
47
48 assertTrue(iterator.hasNext());
49 assertEquals("a", iterator.next());
50 assertEquals("b", iterator.next());
51 assertEquals("b", iterator.previous());
52 try {
53 iterator.add("c");
54 fail();
55 } catch (UnsupportedOperationException expected) {}
56 }
57
58 public void testSet() {
59 ListIterator<String> iterator = create();
60
61 assertTrue(iterator.hasNext());
62 assertEquals("a", iterator.next());
63 assertEquals("b", iterator.next());
64 assertEquals("b", iterator.previous());
65 try {
66 iterator.set("c");
67 fail();
68 } catch (UnsupportedOperationException expected) {}
69 }
70
71 UnmodifiableListIterator<String> create() {
72 final String[] array = {"a", "b", "c"};
73
74 return new UnmodifiableListIterator<String>() {
75 int i;
76 @Override
77 public boolean hasNext() {
78 return i < array.length;
79 }
80 @Override
81 public String next() {
82 if (!hasNext()) {
83 throw new NoSuchElementException();
84 }
85 return array[i++];
86 }
87 @Override public boolean hasPrevious() {
88 return i > 0;
89 }
90 @Override public int nextIndex() {
91 return i;
92 }
93 @Override public String previous() {
94 if (!hasPrevious()) {
95 throw new NoSuchElementException();
96 }
97 return array[--i];
98 }
99 @Override public int previousIndex() {
100 return i-1;
101 }
102 };
103 }
104 }