001 /* 002 * LAPIS lightweight structured text processing system 003 * 004 * Copyright (C) 1998-2002 Carnegie Mellon University, 005 * Copyright (C) 2003 Massachusetts Institute of Technology. 006 * All rights reserved. 007 * 008 * This library is free software; you can redistribute it 009 * and/or modify it under the terms of the GNU General 010 * Public License as published by the Free Software 011 * Foundation, version 2. 012 * 013 * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/ 014 */ 015 package lapisx.util; 016 017 import junit.framework.*; 018 import java.util.*; 019 020 /** 021 * A collection of JUnit testcases to test the SafeIteratorSet class. 022 */ 023 public class SafeIteratorSetTest extends TestCase { 024 025 public SafeIteratorSetTest (String name) { 026 super(name); 027 } 028 029 protected void setUp () { 030 } 031 032 public static Test suite () { 033 return new TestSuite (SafeIteratorSetTest.class); 034 } 035 036 public void testSafeIteration () { 037 // fill a SafeIteratorSet from another set 038 Set s1 = new HashSet (Arrays.asList (new String[] {"a", "b", "c"})); 039 Set s2 = new SafeIteratorSet (s1); 040 assertEquals (s1, s2); 041 042 // test whether s2's iterator returns same values as s1 043 Iterator g1 = s2.iterator (); 044 assertEquals (s1, accumulate (g1)); 045 046 // survives adds? 047 Iterator g2 = s2.iterator (); 048 s2.add ("d"); 049 assertEquals (s1, accumulate (g2)); 050 s1.add ("d"); 051 052 // survives removes? 053 Iterator g3 = s2.iterator (); 054 s2.remove ("a"); 055 assertEquals (s1, accumulate (g3)); 056 s1.remove ("a"); 057 058 // survives clear? 059 Iterator g4 = s2.iterator (); 060 s2.clear (); 061 assertEquals (s1, accumulate (g4)); 062 063 // iterator itself refuses remove? 064 Iterator g5 = s2.iterator (); 065 try { 066 g5.remove (); 067 fail (); 068 } catch (UnsupportedOperationException e) { 069 } 070 } 071 072 private Set accumulate (Iterator g) { 073 Set s = new HashSet (); 074 while (g.hasNext ()) 075 s.add (g.next ()); 076 return s; 077 } 078 } 079