View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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   * @version $Revision: 480451 $ $Date: 2006-11-29 02:45:08 -0500 (Wed, 29 Nov 2006) $
28   * @author Rodney Waldhoff
29   */
30  public abstract class BaseUnmodifiableShortListTest extends TestCase {
31  
32      // conventional
33      // ------------------------------------------------------------------------
34  
35      public BaseUnmodifiableShortListTest(String testName) {
36          super(testName);
37      }
38      
39      // framework
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      // tests
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      // util
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              // expected
91          }
92          
93          try {
94              iter.add((short)2);
95              fail("Expected UnsupportedOperationException");
96          } catch(UnsupportedOperationException e) {
97              // expected
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             // expected
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             // expected
119         }
120         
121         try {
122             list.add(1,(short)2);
123             fail("Expected UnsupportedOperationException");
124         } catch(UnsupportedOperationException e) {
125             // expected
126         }
127         
128         try {
129             list.addAll(makeShortList());
130             fail("Expected UnsupportedOperationException");
131         } catch(UnsupportedOperationException e) {
132             // expected
133         }
134         
135         try {
136             list.addAll(1,makeShortList());
137             fail("Expected UnsupportedOperationException");
138         } catch(UnsupportedOperationException e) {
139             // expected
140         }
141         
142         try {
143             list.removeElementAt(1);
144             fail("Expected UnsupportedOperationException");
145         } catch(UnsupportedOperationException e) {
146             // expected
147         }
148         
149         try {
150             list.removeElement((short)1);
151             fail("Expected UnsupportedOperationException");
152         } catch(UnsupportedOperationException e) {
153             // expected
154         }
155         
156         try {
157             list.removeAll(makeShortList());
158             fail("Expected UnsupportedOperationException");
159         } catch(UnsupportedOperationException e) {
160             // expected
161         }
162                 
163         try {
164             list.retainAll(makeShortList());
165             fail("Expected UnsupportedOperationException");
166         } catch(UnsupportedOperationException e) {
167             // expected
168         }
169 
170         try {
171             list.clear();
172             fail("Expected UnsupportedOperationException");
173         } catch(UnsupportedOperationException e) {
174             // expected
175         }
176         
177         try {
178             list.set(1,(short)2);
179             fail("Expected UnsupportedOperationException");
180         } catch(UnsupportedOperationException e) {
181             // expected
182         }
183     }
184 }