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 18package tests.support; 19 20import java.util.LinkedList; 21import java.util.List; 22import java.util.ListIterator; 23import java.util.NoSuchElementException; 24 25public class Support_ListTest extends junit.framework.TestCase { 26 27 List<Integer> list; // must contain the Integers 0 to 99 in order 28 29 public Support_ListTest(String p1) { 30 super(p1); 31 } 32 33 public Support_ListTest(String p1, List<Integer> l) { 34 super(p1); 35 list = l; 36 } 37 38 @Override 39 public void runTest() { 40 int hashCode = 1; 41 for (int counter = 0; counter < 100; counter++) { 42 Object elem; 43 elem = list.get(counter); 44 hashCode = 31 * hashCode + elem.hashCode(); 45 assertTrue("ListTest - get failed", elem 46 .equals(new Integer(counter))); 47 } 48 assertTrue("ListTest - hashCode failed", hashCode == list.hashCode()); 49 50 list.add(50, new Integer(1000)); 51 assertTrue("ListTest - a) add with index failed--did not insert", list 52 .get(50).equals(new Integer(1000))); 53 assertTrue( 54 "ListTest - b) add with index failed--did not move following elements", 55 list.get(51).equals(new Integer(50))); 56 assertTrue( 57 "ListTest - c) add with index failed--affected previous elements", 58 list.get(49).equals(new Integer(49))); 59 60 list.set(50, new Integer(2000)); 61 assertTrue("ListTest - a) set failed--did not set", list.get(50) 62 .equals(new Integer(2000))); 63 assertTrue("ListTest - b) set failed--affected following elements", 64 list.get(51).equals(new Integer(50))); 65 assertTrue("ListTest - c) set failed--affected previous elements", list 66 .get(49).equals(new Integer(49))); 67 68 list.remove(50); 69 assertTrue("ListTest - a) remove with index failed--did not remove", 70 list.get(50).equals(new Integer(50))); 71 assertTrue( 72 "ListTest - b) remove with index failed--did not move following elements", 73 list.get(51).equals(new Integer(51))); 74 assertTrue( 75 "ListTest - c) remove with index failed--affected previous elements", 76 list.get(49).equals(new Integer(49))); 77 78 List<Integer> myList = new LinkedList<Integer>(); 79 myList.add(new Integer(500)); 80 myList.add(new Integer(501)); 81 myList.add(new Integer(502)); 82 83 list.addAll(50, myList); 84 assertTrue("ListTest - a) addAll with index failed--did not insert", 85 list.get(50).equals(new Integer(500))); 86 assertTrue("ListTest - b) addAll with index failed--did not insert", 87 list.get(51).equals(new Integer(501))); 88 assertTrue("ListTest - c) addAll with index failed--did not insert", 89 list.get(52).equals(new Integer(502))); 90 assertTrue( 91 "ListTest - d) addAll with index failed--did not move following elements", 92 list.get(53).equals(new Integer(50))); 93 assertTrue( 94 "ListTest - e) addAll with index failed--affected previous elements", 95 list.get(49).equals(new Integer(49))); 96 97 List<Integer> mySubList = list.subList(50, 53); 98 assertEquals(3, mySubList.size()); 99 assertTrue( 100 "ListTest - a) sublist Failed--does not contain correct elements", 101 mySubList.get(0).equals(new Integer(500))); 102 assertTrue( 103 "ListTest - b) sublist Failed--does not contain correct elements", 104 mySubList.get(1).equals(new Integer(501))); 105 assertTrue( 106 "ListTest - c) sublist Failed--does not contain correct elements", 107 mySubList.get(2).equals(new Integer(502))); 108 109 t_listIterator(mySubList); 110 111 mySubList.clear(); 112 assertEquals("ListTest - Clearing the sublist did not remove the appropriate elements from the original list", 113 100, list.size()); 114 115 t_listIterator(list); 116 ListIterator<Integer> li = list.listIterator(); 117 for (int counter = 0; li.hasNext(); counter++) { 118 Object elem; 119 elem = li.next(); 120 assertTrue("ListTest - listIterator failed", elem 121 .equals(new Integer(counter))); 122 } 123 124 new Support_CollectionTest("", list).runTest(); 125 126 } 127 128 public void t_listIterator(List<Integer> list) { 129 ListIterator<Integer> li = list.listIterator(1); 130 assertTrue("listIterator(1)", li.next() == list.get(1)); 131 132 int orgSize = list.size(); 133 li = list.listIterator(); 134 for (int i = 0; i <= orgSize; i++) { 135 if (i == 0) { 136 assertTrue("list iterator hasPrevious(): " + i, !li 137 .hasPrevious()); 138 } else { 139 assertTrue("list iterator hasPrevious(): " + i, li 140 .hasPrevious()); 141 } 142 if (i == list.size()) { 143 assertTrue("list iterator hasNext(): " + i, !li.hasNext()); 144 } else { 145 assertTrue("list iterator hasNext(): " + i, li.hasNext()); 146 } 147 assertTrue("list iterator nextIndex(): " + i, li.nextIndex() == i); 148 assertTrue("list iterator previousIndex(): " + i, li 149 .previousIndex() == i - 1); 150 boolean exception = false; 151 try { 152 assertTrue("list iterator next(): " + i, li.next() == list 153 .get(i)); 154 } catch (NoSuchElementException e) { 155 exception = true; 156 } 157 if (i == list.size()) { 158 assertTrue("list iterator next() exception: " + i, exception); 159 } else { 160 assertTrue("list iterator next() exception: " + i, !exception); 161 } 162 } 163 164 for (int i = orgSize - 1; i >= 0; i--) { 165 assertTrue("list iterator previous(): " + i, li.previous() == list 166 .get(i)); 167 assertTrue("list iterator nextIndex()2: " + i, li.nextIndex() == i); 168 assertTrue("list iterator previousIndex()2: " + i, li 169 .previousIndex() == i - 1); 170 if (i == 0) { 171 assertTrue("list iterator hasPrevious()2: " + i, !li 172 .hasPrevious()); 173 } else { 174 assertTrue("list iterator hasPrevious()2: " + i, li 175 .hasPrevious()); 176 } 177 assertTrue("list iterator hasNext()2: " + i, li.hasNext()); 178 } 179 boolean exception = false; 180 try { 181 li.previous(); 182 } catch (NoSuchElementException e) { 183 exception = true; 184 } 185 assertTrue("list iterator previous() exception", exception); 186 187 Integer add1 = new Integer(600); 188 Integer add2 = new Integer(601); 189 li.add(add1); 190 assertTrue("list iterator add(), size()", list.size() == (orgSize + 1)); 191 assertEquals("list iterator add(), nextIndex()", 1, li.nextIndex()); 192 assertEquals("list iterator add(), previousIndex()", 193 0, li.previousIndex()); 194 Object next = li.next(); 195 assertTrue("list iterator add(), next(): " + next, next == list.get(1)); 196 li.add(add2); 197 Object previous = li.previous(); 198 assertTrue("list iterator add(), previous(): " + previous, 199 previous == add2); 200 assertEquals("list iterator add(), nextIndex()2", 2, li.nextIndex()); 201 assertEquals("list iterator add(), previousIndex()2", 202 1, li.previousIndex()); 203 204 li.remove(); 205 assertTrue("list iterator remove(), size()", 206 list.size() == (orgSize + 1)); 207 assertEquals("list iterator remove(), nextIndex()", 2, li.nextIndex()); 208 assertEquals("list iterator remove(), previousIndex()", 1, li 209 .previousIndex()); 210 assertTrue("list iterator previous()2", li.previous() == list.get(1)); 211 assertTrue("list iterator previous()3", li.previous() == list.get(0)); 212 assertTrue("list iterator next()2", li.next() == list.get(0)); 213 li.remove(); 214 assertTrue("list iterator hasPrevious()3", !li.hasPrevious()); 215 assertTrue("list iterator hasNext()3", li.hasNext()); 216 assertTrue("list iterator size()", list.size() == orgSize); 217 assertEquals("list iterator nextIndex()3", 0, li.nextIndex()); 218 assertEquals("list iterator previousIndex()3", -1, li.previousIndex()); 219 } 220} 221