} // 4. double check hasNext() true -> next() will return the last object for each // iterator public void testMultiIteratorHasNextConsistency() throws Exception { assertTrue(dynamicCollection.isEmpty()); assertFalse(iter.hasNext()); Iterator iter1 = dynamicCollection.iterator(); Object a = new Object(); Object b = new Object(); Object c = new Object(); dynamicCollection.add(a); dynamicCollection.add(b); Iterator iter2 = dynamicCollection.iterator(); dynamicCollection.add(c); Iterator iter3 = dynamicCollection.iterator(); // iter2 goes in the middle assertSame(a, iter2.next()); // iter3 approaches the end assertSame(a, iter3.next()); assertSame(b, iter3.next()); // check hasNext() and force next() assertTrue(iter3.hasNext()); assertTrue(iter1.hasNext()); assertTrue(iter2.hasNext()); dynamicCollection.remove(c); dynamicCollection.remove(b); dynamicCollection.remove(a); assertSame(a, iter1.next()); assertSame(b, iter2.next()); assertSame(c, iter3.next()); }