1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * 4 * This code is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License version 2 only, as 6 * published by the Free Software Foundation. 7 * 8 * This code is distributed in the hope that it will be useful, but WITHOUT 9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 11 * version 2 for more details (a copy is included in the LICENSE file that 12 * accompanied this code). 13 * 14 * You should have received a copy of the GNU General Public License version 15 * 2 along with this work; if not, write to the Free Software Foundation, 16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 17 * 18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 19 * or visit www.oracle.com if you need additional information or have any 20 * questions. 21 */ 22 23 /* 24 * This file is available under and governed by the GNU General Public 25 * License version 2 only, as published by the Free Software Foundation. 26 * However, the following notice accompanied the original version of this 27 * file: 28 * 29 * Written by Doug Lea and Martin Buchholz with assistance from 30 * members of JCP JSR-166 Expert Group and released to the public 31 * domain, as explained at 32 * http://creativecommons.org/publicdomain/zero/1.0/ 33 */ 34 35 import java.util.ArrayList; 36 import java.util.Arrays; 37 import java.util.List; 38 39 import junit.framework.Test; 40 41 public class ArrayListTest extends JSR166TestCase { 42 public static void main(String[] args) { 43 main(suite(), args); 44 } 45 46 public static Test suite() { 47 class Implementation implements CollectionImplementation { 48 public Class<?> klazz() { return ArrayList.class; } 49 public List emptyCollection() { return new ArrayList(); } 50 public Object makeElement(int i) { return i; } 51 public boolean isConcurrent() { return false; } 52 public boolean permitsNulls() { return true; } 53 } 54 class SubListImplementation extends Implementation { 55 public List emptyCollection() { 56 return super.emptyCollection().subList(0, 0); 57 } 58 } 59 return newTestSuite( 60 // ArrayListTest.class, 61 CollectionTest.testSuite(new Implementation()), 62 CollectionTest.testSuite(new SubListImplementation())); 63 } 64 65 /** 66 * A cloned list equals original 67 */ 68 public void testClone() throws Exception { 69 ArrayList<Integer> x = new ArrayList<>(); 70 x.add(1); 71 x.add(2); 72 x.add(3); 73 ArrayList<Integer> y = (ArrayList<Integer>) x.clone(); 74 75 assertNotSame(y, x); 76 assertEquals(x, y); 77 assertEquals(y, x); 78 assertEquals(x.size(), y.size()); 79 assertEquals(x.toString(), y.toString()); 80 assertTrue(Arrays.equals(x.toArray(), y.toArray())); 81 while (!x.isEmpty()) { 82 assertFalse(y.isEmpty()); 83 assertEquals(x.remove(0), y.remove(0)); 84 } 85 assertTrue(y.isEmpty()); 86 } 87 88 }