1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections.primitives.decorators;
18
19 import junit.framework.TestCase;
20
21 import org.apache.commons.collections.primitives.ArrayShortList;
22 import org.apache.commons.collections.primitives.ShortIterator;
23 import org.apache.commons.collections.primitives.ShortList;
24 import org.apache.commons.collections.primitives.ShortListIterator;
25
26
27
28
29
30 public abstract class BaseUnmodifiableShortListTest extends TestCase {
31
32
33
34
35 public BaseUnmodifiableShortListTest(String testName) {
36 super(testName);
37 }
38
39
40
41
42 protected abstract ShortList makeUnmodifiableShortList();
43
44 protected ShortList makeShortList() {
45 ShortList list = new ArrayShortList();
46 for(short i=0;i<10;i++) {
47 list.add(i);
48 }
49 return list;
50 }
51
52
53
54
55 public final void testNotModifiable() throws Exception {
56 assertListNotModifiable(makeUnmodifiableShortList());
57 }
58
59 public final void testSublistNotModifiable() throws Exception {
60 ShortList list = makeUnmodifiableShortList();
61 assertListNotModifiable(list.subList(0,list.size()-2));
62 }
63
64 public final void testIteratorNotModifiable() throws Exception {
65 ShortList list = makeUnmodifiableShortList();
66 assertIteratorNotModifiable(list.iterator());
67 assertIteratorNotModifiable(list.subList(0,list.size()-2).iterator());
68 }
69
70 public final void testListIteratorNotModifiable() throws Exception {
71 ShortList list = makeUnmodifiableShortList();
72 assertListIteratorNotModifiable(list.listIterator());
73 assertListIteratorNotModifiable(list.subList(0,list.size()-2).listIterator());
74 assertListIteratorNotModifiable(list.listIterator(1));
75 assertListIteratorNotModifiable(list.subList(0,list.size()-2).listIterator(1));
76 }
77
78
79
80
81 private void assertListIteratorNotModifiable(ShortListIterator iter) throws Exception {
82 assertIteratorNotModifiable(iter);
83
84 assertTrue(iter.hasPrevious());
85
86 try {
87 iter.set((short)2);
88 fail("Expected UnsupportedOperationException");
89 } catch(UnsupportedOperationException e) {
90
91 }
92
93 try {
94 iter.add((short)2);
95 fail("Expected UnsupportedOperationException");
96 } catch(UnsupportedOperationException e) {
97
98 }
99 }
100
101 private void assertIteratorNotModifiable(ShortIterator iter) throws Exception {
102 assertTrue(iter.hasNext());
103 iter.next();
104
105 try {
106 iter.remove();
107 fail("Expected UnsupportedOperationException");
108 } catch(UnsupportedOperationException e) {
109
110 }
111 }
112
113 private void assertListNotModifiable(ShortList list) throws Exception {
114 try {
115 list.add((short)1);
116 fail("Expected UnsupportedOperationException");
117 } catch(UnsupportedOperationException e) {
118
119 }
120
121 try {
122 list.add(1,(short)2);
123 fail("Expected UnsupportedOperationException");
124 } catch(UnsupportedOperationException e) {
125
126 }
127
128 try {
129 list.addAll(makeShortList());
130 fail("Expected UnsupportedOperationException");
131 } catch(UnsupportedOperationException e) {
132
133 }
134
135 try {
136 list.addAll(1,makeShortList());
137 fail("Expected UnsupportedOperationException");
138 } catch(UnsupportedOperationException e) {
139
140 }
141
142 try {
143 list.removeElementAt(1);
144 fail("Expected UnsupportedOperationException");
145 } catch(UnsupportedOperationException e) {
146
147 }
148
149 try {
150 list.removeElement((short)1);
151 fail("Expected UnsupportedOperationException");
152 } catch(UnsupportedOperationException e) {
153
154 }
155
156 try {
157 list.removeAll(makeShortList());
158 fail("Expected UnsupportedOperationException");
159 } catch(UnsupportedOperationException e) {
160
161 }
162
163 try {
164 list.retainAll(makeShortList());
165 fail("Expected UnsupportedOperationException");
166 } catch(UnsupportedOperationException e) {
167
168 }
169
170 try {
171 list.clear();
172 fail("Expected UnsupportedOperationException");
173 } catch(UnsupportedOperationException e) {
174
175 }
176
177 try {
178 list.set(1,(short)2);
179 fail("Expected UnsupportedOperationException");
180 } catch(UnsupportedOperationException e) {
181
182 }
183 }
184 }