### Eclipse Workspace Patch 1.0 #P mauve Index: gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java =================================================================== RCS file: /cvs/mauve/mauve/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java,v retrieving revision 1.1 diff -u -r1.1 SubListTest.java --- gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java 24 Nov 2007 22:43:59 -0000 1.1 +++ gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java 26 Mar 2008 16:11:14 -0000 @@ -23,6 +23,10 @@ package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList; +import java.util.ConcurrentModificationException; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + import gnu.testlet.TestHarness; import gnu.testlet.Testlet; @@ -31,8 +35,88 @@ */ public class SubListTest implements Testlet { + private int [] data = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 + }; + public void test(TestHarness harness) { + CopyOnWriteArrayList list = + new CopyOnWriteArrayList(); + + for (Integer element : data) + list.add(element); + + List subList = list.subList(5, 15); + int i = 5; + for (int element : subList) + { + harness.check(element == i); + i++; + } + + // remove all the element from the subList and check the elements in the + // list + harness.checkPoint("clear list"); + + subList.clear(); + + harness.check(subList.size() == 0); + harness.check(list.size() == 10); + + i = 0; + for (int element : list) + { + harness.check(element == i); + i++; + if (i > 4 && i < 15) + i = 15; + } + + harness.checkPoint("ConcurrentModificationException"); + + list.clear(); + for (Integer element : data) + list.add(element); + + subList = list.subList(5, 15); + list.remove(5); + + try + { + for (int element : subList) + { + // we should never get here + harness.check(false); + } + } + catch (ConcurrentModificationException e) + { + harness.check(true); + } + + harness.checkPoint("Remove elements from SubList"); + + list.clear(); + for (Integer element : data) + list.add(element); + + subList = list.subList(5, 15); + + subList.remove(0); + subList.remove(0); + + harness.check(subList.size() == 8); + harness.check(list.size() == 18); + + subList.add(0, 6); + subList.add(0, 5); + i = 5; + for (int element : subList) + { + harness.check(element == i); + i++; + } } }