--- jsr166/src/test/tck/ArrayListTest.java 2016/11/15 23:25:44 1.3 +++ jsr166/src/test/tck/ArrayListTest.java 2019/11/14 01:43:45 1.7 @@ -6,11 +6,10 @@ */ import java.util.ArrayList; -import java.util.Collection; +import java.util.Arrays; import java.util.List; import junit.framework.Test; -import junit.framework.TestSuite; public class ArrayListTest extends JSR166TestCase { public static void main(String[] args) { @@ -30,13 +29,33 @@ public class ArrayListTest extends JSR16 return super.emptyCollection().subList(0, 0); } } - return atLeastJava9() - ? newTestSuite( - // ArrayListTest.class, + return newTestSuite( + ArrayListTest.class, CollectionTest.testSuite(new Implementation()), - CollectionTest.testSuite(new SubListImplementation())) - : newTestSuite( - CollectionTest.testSuite(new Implementation())); + CollectionTest.testSuite(new SubListImplementation())); + } + + /** + * A cloned list equals original + */ + public void testClone() throws Exception { + ArrayList x = new ArrayList<>(); + x.add(1); + x.add(2); + x.add(3); + ArrayList y = (ArrayList) x.clone(); + + assertNotSame(y, x); + assertEquals(x, y); + assertEquals(y, x); + assertEquals(x.size(), y.size()); + assertEquals(x.toString(), y.toString()); + assertTrue(Arrays.equals(x.toArray(), y.toArray())); + while (!x.isEmpty()) { + assertFalse(y.isEmpty()); + assertEquals(x.remove(0), y.remove(0)); + } + assertTrue(y.isEmpty()); } }