Home | History | Annotate | Download | only in support
      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 
     18 package tests.support;
     19 
     20 import java.util.LinkedList;
     21 import java.util.List;
     22 import java.util.ListIterator;
     23 import java.util.NoSuchElementException;
     24 
     25 public 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