ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/jtreg/util/AbstractList/FailFastIterator.java
Revision: 1.2
Committed: Wed Sep 1 20:12:39 2010 UTC (13 years, 9 months ago) by jsr166
Branch: MAIN
Changes since 1.1: +3 -3 lines
Log Message:
coding style

File Contents

# User Rev Content
1 jsr166 1.1 /*
2     * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
3     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4     *
5     * This code is free software; you can redistribute it and/or modify it
6     * under the terms of the GNU General Public License version 2 only, as
7     * published by the Free Software Foundation.
8     *
9     * This code is distributed in the hope that it will be useful, but WITHOUT
10     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11     * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12     * version 2 for more details (a copy is included in the LICENSE file that
13     * accompanied this code).
14     *
15     * You should have received a copy of the GNU General Public License version
16     * 2 along with this work; if not, write to the Free Software Foundation,
17     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18     *
19     * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20     * CA 95054 USA or visit www.sun.com if you need additional information or
21     * have any questions.
22     */
23    
24     /**
25     * @test
26     * @bug 4189896
27     * @summary AbstractList iterators previously checked for co-modificatin
28     * *after* the set/add/remove operations were performed.
29     */
30    
31     import java.util.*;
32    
33     public class FailFastIterator {
34     public static void main(String[] args) throws Exception {
35     List orig = new ArrayList(100);
36     for (int i=0; i<100; i++)
37     orig.add(new Integer(i));
38    
39     List copy = new ArrayList(orig);
40     try {
41     ListIterator i = copy.listIterator();
42     i.next();
43     copy.remove(99);
44     copy.add(new Integer(99));
45     i.remove();
46     throw new Exception("remove: iterator didn't fail fast");
47 jsr166 1.2 } catch (ConcurrentModificationException e) {
48 jsr166 1.1 }
49     if (!copy.equals(orig))
50     throw new Exception("remove: iterator didn't fail fast enough");
51    
52     try {
53     ListIterator i = copy.listIterator();
54     i.next();
55     copy.remove(99);
56     copy.add(new Integer(99));
57     i.set(new Integer(666));
58     throw new Exception("set: iterator didn't fail fast");
59 jsr166 1.2 } catch (ConcurrentModificationException e) {
60 jsr166 1.1 }
61     if (!copy.equals(orig))
62     throw new Exception("set: iterator didn't fail fast enough");
63    
64     try {
65     ListIterator i = copy.listIterator();
66     copy.remove(99);
67     copy.add(new Integer(99));
68     i.add(new Integer(666));
69     throw new Exception("add: iterator didn't fail fast");
70 jsr166 1.2 } catch (ConcurrentModificationException e) {
71 jsr166 1.1 }
72     if (!copy.equals(orig))
73     throw new Exception("add: iterator didn't fail fast enough");
74     }
75     }