1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.AbstractList; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ConcurrentModificationException; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Vector; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ConcurrentModTest extends TestCase { 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test method for 'java.util.AbstractList.subList(int, int)' 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGet() { 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AbstractList al = new ArrayList(); 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double one = new Double(1.0); 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double two = new Double(2.0); 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double three = new Double(3.0); 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double four = new Double(4.0); 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(one); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(two); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(three); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(four); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List sub = al.subList(1, 3); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sub.size()); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the sub.get(1) is 3.0 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() <= 3.0); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() > 2.0); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.remove(1); // remove the 2.0 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal call the subList's method get(int). 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sub.get(1); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("It should throws ConcurrentModificationException."); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test method for 'java.util.AbstractList.subList(int, int)' 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSet() { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AbstractList al = new ArrayList(); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double one = new Double(1.0); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double two = new Double(2.0); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double three = new Double(3.0); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double four = new Double(4.0); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(one); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(two); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(three); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(four); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List sub = al.subList(1, 3); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sub.size()); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the sub.get(1) is 3.0 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() <= 3.0); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() > 2.0); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.remove(1); // remove the 2.0 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal call the subList's method set(int,Object). 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sub.set(1, two); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("It should throws ConcurrentModificationException."); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test method for 'java.util.AbstractList.subList(int, int)' 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAdd() { 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AbstractList al = new ArrayList(); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double one = new Double(1.0); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double two = new Double(2.0); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double three = new Double(3.0); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double four = new Double(4.0); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(one); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(two); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(three); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(four); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List sub = al.subList(1, 3); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sub.size()); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the sub.get(1) is 3.0 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() <= 3.0); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() > 2.0); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.remove(1); // remove the 2.0 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal call the subList's method Add(int,Object). 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sub.add(1, two); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("It should throws ConcurrentModificationException."); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test method for 'java.util.AbstractList.subList(int, int)' 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemove() { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AbstractList al = new ArrayList(); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double one = new Double(1.0); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double two = new Double(2.0); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double three = new Double(3.0); 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double four = new Double(4.0); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(one); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(two); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(three); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(four); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List sub = al.subList(1, 3); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sub.size()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the sub.get(1) is 3.0 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() <= 3.0); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() > 2.0); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.remove(1); // remove the 2.0 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal call the subList's method remove(int). 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sub.remove(1); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("It should throws ConcurrentModificationException."); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test method for 'java.util.AbstractList.subList(int, int)' 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddAll() { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AbstractList al = new ArrayList(); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double one = new Double(1.0); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double two = new Double(2.0); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double three = new Double(3.0); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double four = new Double(4.0); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(one); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(two); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(three); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.add(four); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List sub = al.subList(1, 3); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sub.size()); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the sub.get(1) is 3.0 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() <= 3.0); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(((Double) sub.get(1)).doubleValue() > 2.0); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes al.remove(1); // remove the 2.0 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal call the subList's method addAll(int,Collection). 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Collection c = new Vector(); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Double five = new Double(5.0); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c.add(five); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sub.addAll(1, c); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("It should throws ConcurrentModificationException."); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 184