diff options
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators')
25 files changed, 0 insertions, 5057 deletions
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayIteratorTests.java deleted file mode 100644 index a99d88d3fe..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayIteratorTests.java +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; - -@SuppressWarnings("nls") -public class ArrayIteratorTests extends TestCase { - - public ArrayIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildIterator(); stream.hasNext(); ) { - stream.next(); - i++; - } - assertEquals(this.buildArray().length, i); - } - - public void testNext() { - int i = 1; - for (Iterator<String> stream = this.buildIterator(); stream.hasNext(); ) { - assertEquals("bogus element", i++, Integer.parseInt(stream.next())); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildIterator(); stream.hasNext(); ) { - if (stream.next().equals("3")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testIllegalArgumentException() { - this.triggerIllegalArgumentException(-1, 1); - this.triggerIllegalArgumentException(8, 1); - this.triggerIllegalArgumentException(0, -1); - this.triggerIllegalArgumentException(0, 9); - } - - public void testGenerics() { - Integer[] integers = new Integer[3]; - integers[0] = new Integer(0); - integers[1] = new Integer(1); - integers[2] = new Integer(2); - int i = 0; - for (Iterator<Number> stream = this.buildGenericIterator(integers); stream.hasNext();) { - assertEquals(i++, stream.next().intValue()); - } - assertEquals(integers.length, i); - } - - Iterator<Number> buildGenericIterator(Integer[] integers) { - return new ArrayIterator<Number>(integers); - } - - public void testVarargs() { - int i = 0; - for (Iterator<Number> stream = this.buildVarArgIterator(); stream.hasNext();) { - assertEquals(i++, stream.next().intValue()); - } - assertEquals(3, i); - } - - Iterator<Number> buildVarArgIterator() { - return new ArrayIterator<Number>(new Integer(0), new Integer(1), new Integer(2)); - } - - void triggerIllegalArgumentException(int start, int length) { - boolean exCaught = false; - Iterator<String> stream = null; - try { - stream = this.buildIterator(start, length); - } catch (IllegalArgumentException ex) { - exCaught = true; - } - assertTrue("IllegalArgumentException not thrown: " + stream, exCaught); - } - - Iterator<String> buildIterator() { - return this.buildIterator(this.buildArray()); - } - - Iterator<String> buildIterator(String[] array) { - return new ArrayIterator<String>(array); - } - - Iterator<String> buildIterator(int start, int length) { - return this.buildIterator(this.buildArray(), start, length); - } - - Iterator<String> buildIterator(String[] array, int start, int length) { - return new ArrayIterator<String>(array, start, length); - } - - String[] buildArray() { - return new String[] { "1", "2", "3", "4", "5", "6", "7", "8" }; - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayListIteratorTests.java deleted file mode 100644 index 9685b6ff60..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ArrayListIteratorTests.java +++ /dev/null @@ -1,140 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.ListIterator; -import java.util.NoSuchElementException; - -import org.eclipse.jpt.utility.internal.iterators.ArrayListIterator; - -@SuppressWarnings("nls") -public class ArrayListIteratorTests extends ArrayIteratorTests { - - public ArrayListIteratorTests(String name) { - super(name); - } - - public void testHasPrevious() { - ListIterator<String> stream = this.buildListIterator(); - while (stream.hasNext()) { - stream.next(); - } - int i = 0; - while (stream.hasPrevious()) { - stream.previous(); - i++; - } - assertEquals(this.buildArray().length, i); - } - - public void testPrevious() { - ListIterator<String> stream = this.buildListIterator(); - while (stream.hasNext()) { - stream.next(); - } - int i = this.buildArray().length; - while (stream.hasPrevious()) { - assertEquals("bogus element", i--, Integer.parseInt(stream.previous())); - } - } - - public void testNextIndex() { - int i = 0; - ListIterator<String> stream = this.buildListIterator(); - while (stream.hasNext()) { - assertEquals(i, stream.nextIndex()); - stream.next(); - i++; - } - assertEquals(i, stream.nextIndex()); - } - - public void testPreviousIndex() { - int i = 0; - ListIterator<String> stream = this.buildListIterator(); - while (stream.hasNext()) { - assertEquals(i - 1, stream.previousIndex()); - stream.next(); - i++; - } - assertEquals(i - 1, stream.previousIndex()); - } - - @Override - public void testNoSuchElementException() { - boolean exCaught = false; - ListIterator<String> stream = this.buildListIterator(); - String string = null; - try { - string = stream.previous(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testUnsupportedOperationExceptionAdd() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildListIterator(); stream.hasNext();) { - if (stream.next().equals("3")) { - try { - stream.add("3.5"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testUnsupportedOperationExceptionSet() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildListIterator(); stream.hasNext();) { - if (stream.next().equals("3")) { - try { - stream.set("three"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - @Override - Iterator<Number> buildGenericIterator(Integer[] integers) { - return new ArrayListIterator<Number>(integers); - } - - @Override - Iterator<Number> buildVarArgIterator() { - return new ArrayListIterator<Number>(new Integer(0), new Integer(1), new Integer(2)); - } - - private ListIterator<String> buildListIterator() { - return this.buildListIterator(this.buildArray()); - } - - private ListIterator<String> buildListIterator(String[] array) { - return new ArrayListIterator<String>(array); - } - - @Override - Iterator<String> buildIterator(String[] array) { - return new ArrayListIterator<String>(array); - } - - @Override - Iterator<String> buildIterator(String[] array, int start, int length) { - return new ArrayListIterator<String>(array, start, length); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ChainIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ChainIteratorTests.java deleted file mode 100644 index 97d6cee45d..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ChainIteratorTests.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.AbstractCollection; -import java.util.AbstractList; -import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.Vector; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.ChainIterator; - -@SuppressWarnings("nls") -public class ChainIteratorTests extends TestCase { - private final static Class<?>[] VECTOR_HIERARCHY = { Vector.class, AbstractList.class, AbstractCollection.class, Object.class }; - - public ChainIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<Class<?>> stream = this.buildIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(VECTOR_HIERARCHY.length, i); - } - - public void testInnerHasNext() { - int i = 0; - for (Iterator<Class<?>> stream = this.buildInnerIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(VECTOR_HIERARCHY.length, i); - } - - public void testNext() { - int i = 0; - for (Iterator<Class<?>> stream = this.buildIterator(); stream.hasNext(); i++) { - assertEquals("bogus link", VECTOR_HIERARCHY[i], stream.next()); - } - } - - public void testInnerNext() { - int i = 0; - for (Iterator<Class<?>> stream = this.buildInnerIterator(); stream.hasNext(); i++) { - assertEquals("bogus link", VECTOR_HIERARCHY[i], stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<Class<?>> stream = this.buildIterator(); - Class<?> javaClass = null; - while (stream.hasNext()) { - javaClass = stream.next(); - } - try { - javaClass = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + javaClass, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<Class<?>> stream = this.buildIterator(); stream.hasNext();) { - if (stream.next() == AbstractCollection.class) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - private Iterator<Class<?>> buildIterator() { - return this.buildChainIterator(Vector.class, this.buildLinker()); - } - - private Iterator<Class<?>> buildInnerIterator() { - return this.buildInnerChainIterator(Vector.class); - } - - private Iterator<Class<?>> buildChainIterator(Class<?> startLink, ChainIterator.Linker<Class<?>> linker) { - return new ChainIterator<Class<?>>(startLink, linker); - } - - private ChainIterator.Linker<Class<?>> buildLinker() { - // chain up the class's hierarchy - return new ChainIterator.Linker<Class<?>>() { - public Class<?> nextLink(Class<?> currentLink) { - return currentLink.getSuperclass(); - } - }; - } - - private Iterator<Class<?>> buildInnerChainIterator(Class<?> startLink) { - // chain up the class's hierarchy - return new ChainIterator<Class<?>>(startLink) { - @Override - protected Class<?> nextLink(Class<?> currentLink) { - return currentLink.getSuperclass(); - } - }; - } - - public void testInvalidChainIterator() { - // missing method override - Iterator<Class<?>> iterator = new ChainIterator<Class<?>>(Vector.class); - boolean exCaught = false; - try { - Class<?> c = iterator.next(); - fail("invalid class: " + c.getName()); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneIteratorTests.java deleted file mode 100644 index a548cc77e9..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneIteratorTests.java +++ /dev/null @@ -1,237 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.NoSuchElementException; - -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.tests.internal.MultiThreadedTestCase; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class CloneIteratorTests - extends MultiThreadedTestCase -{ - Collection<String> originalCollection; - - private Collection<String> concurrentCollection; - - public CloneIteratorTests(String name) { - super(name); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - this.originalCollection = this.buildCollection(); - } - - public void testHasNext() { - int originalSize = this.originalCollection.size(); - int i = 0; - for (Iterator<String> stream = this.buildCloneIterator(); stream.hasNext();) { - stream.next(); - // should allow concurrent modification - this.originalCollection.add("foo"); - i++; - } - assertTrue(originalSize != this.originalCollection.size()); - assertEquals(originalSize, i); - } - - public void testNext() { - Iterator<String> nestedIterator = this.originalCollection.iterator(); - for (Iterator<String> stream = this.buildCloneIterator(); stream.hasNext();) { - assertEquals("bogus element", nestedIterator.next(), stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildCloneIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testRemoveDefault() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildCloneIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testRemoveEliminator() { - CloneIterator.Remover<String> eliminator = new CloneIterator.Remover<String>() { - public void remove(String element) { - CloneIteratorTests.this.originalCollection.remove(element); - } - }; - this.verifyRemove(new CloneIterator<String>(this.originalCollection, eliminator)); - } - - public void testRemoveSubclass() { - this.verifyRemove(new CloneIterator<String>(this.originalCollection) { - @Override - protected void remove(String current) { - CloneIteratorTests.this.originalCollection.remove(current); - } - }); - } - - /** - * Test concurrent access: First build a clone iterator in a separate thread - * that hangs momentarily during its construction; then modify the shared - * collection in this thread. This would cause a - * ConcurrentModificationException in the other thread if the clone iterator - * were not synchronized on the original collection. - */ - public void testConcurrentAccess() throws Exception { - SlowCollection<String> slow = new SlowCollection<String>(); - this.populateCollection(slow); - // using the unsynchronized collection will cause the test to fail - // this.originalCollection = slow; - this.originalCollection = Collections.synchronizedCollection(slow); - - this.concurrentCollection = new ArrayList<String>(); - Thread thread = this.buildThread(this.buildRunnable()); - thread.start(); - while ( ! slow.hasStartedClone()) { - // wait for the other thread to start the clone... - Thread.yield(); - } - // ...then sneak in an extra element - this.originalCollection.add("seventeen"); - thread.join(); - Collection<String> expected = new ArrayList<String>(); - this.populateCollection(expected); - assertEquals(expected, this.concurrentCollection); - } - - private Runnable buildRunnable() { - return new TestRunnable() { - @Override - protected void run_() throws Throwable { - CloneIteratorTests.this.loopWithCloneIterator(); - } - }; - } - - /** - * use a clone iterator to loop over the "slow" collection and copy its - * contents to the concurrent collection - */ - void loopWithCloneIterator() { - for (Iterator<String> stream = this.buildCloneIterator(); stream.hasNext();) { - this.concurrentCollection.add(stream.next()); - } - } - - private void verifyRemove(Iterator<String> iterator) { - Object removed = "three"; - assertTrue(this.originalCollection.contains(removed)); - // try to remove before calling #next() - boolean exCaught = false; - try { - iterator.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - while (iterator.hasNext()) { - if (iterator.next().equals(removed)) { - iterator.remove(); - // try to remove twice - exCaught = false; - try { - iterator.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - } - assertFalse(this.originalCollection.contains(removed)); - } - - private Iterator<String> buildCloneIterator() { - return this.buildCloneIterator(this.originalCollection); - } - - private Iterator<String> buildCloneIterator(Collection<String> c) { - return new CloneIterator<String>(c); - } - - private Collection<String> buildCollection() { - Collection<String> c = this.buildEmptyCollection(); - this.populateCollection(c); - return c; - } - - protected Collection<String> buildEmptyCollection() { - return new ArrayList<String>(); - } - - private void populateCollection(Collection<String> c) { - c.add("one"); - c.add("two"); - c.add("three"); - c.add("four"); - c.add("five"); - c.add("six"); - c.add("seven"); - c.add("eight"); - } - - // ********** custom collection ********** - static class SlowCollection<E> extends ArrayList<E> { - private static final long serialVersionUID = 1L; - private boolean hasStartedClone = false; - - public SlowCollection() { - super(); - } - - @Override - public Object[] toArray() { - this.setHasStartedClone(true); - // take a little snooze before returning the array - TestTools.sleep(100); - return super.toArray(); - } - - synchronized void setHasStartedClone(boolean hasStartedClone) { - this.hasStartedClone = hasStartedClone; - } - - synchronized boolean hasStartedClone() { - return this.hasStartedClone; - } - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneListIteratorTests.java deleted file mode 100644 index 69c1cd8254..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CloneListIteratorTests.java +++ /dev/null @@ -1,397 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; - -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.tests.internal.MultiThreadedTestCase; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class CloneListIteratorTests - extends MultiThreadedTestCase -{ - List<String> originalList; - - private List<String> concurrentList; - - public CloneListIteratorTests(String name) { - super(name); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - this.originalList = this.buildList(); - } - - public void testHasNext() { - int originalSize = this.originalList.size(); - int i = 0; - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - stream.next(); - // should allow concurrent modification - this.originalList.add("foo"); - i++; - } - assertTrue(originalSize != this.originalList.size()); - assertEquals(originalSize, i); - } - - public void testNext() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - assertEquals("bogus element", nestedListIterator.next(), stream.next()); - } - } - - public void testIndex() { - ListIterator<String> cloneListIterator = this.buildCloneListIterator(); - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - for (int i = 0; i < 7; i++) { - nestedListIterator.next(); - cloneListIterator.next(); - assertEquals("bogus index", nestedListIterator.nextIndex(), cloneListIterator.nextIndex()); - assertEquals("bogus index", nestedListIterator.previousIndex(), cloneListIterator.previousIndex()); - } - - for (int i = 0; i < 3; i++) { - nestedListIterator.previous(); - cloneListIterator.previous(); - assertEquals("bogus index", nestedListIterator.nextIndex(), cloneListIterator.nextIndex()); - assertEquals("bogus index", nestedListIterator.previousIndex(), cloneListIterator.previousIndex()); - } - - while (nestedListIterator.hasNext()) { - nestedListIterator.next(); - cloneListIterator.next(); - assertEquals("bogus index", nestedListIterator.nextIndex(), cloneListIterator.nextIndex()); - assertEquals("bogus index", nestedListIterator.previousIndex(), cloneListIterator.previousIndex()); - } - } - - public void testHasPrevious() { - int originalSize = this.originalList.size(); - int i = 0; - ListIterator<String> stream = this.buildCloneListIterator(); - while (stream.hasNext()) { - stream.next(); - this.originalList.add("foo"); - i++; - } - assertTrue(originalSize != this.originalList.size()); - originalSize = this.originalList.size(); - while (stream.hasPrevious()) { - stream.previous(); - // should allow concurrent modification - this.originalList.add("bar"); - i--; - } - assertTrue(originalSize != this.originalList.size()); - assertEquals(0, i); - } - - public void testPrevious() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - ListIterator<String> stream = this.buildCloneListIterator(); - while (stream.hasNext()) { - nestedListIterator.next(); - stream.next(); - } - while (stream.hasPrevious()) { - assertEquals("bogus element", nestedListIterator.previous(), stream.previous()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - ListIterator<String> stream = this.buildCloneListIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - - exCaught = false; - while (stream.hasPrevious()) { - string = stream.previous(); - } - try { - string = stream.previous(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testModifyDefault() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - - exCaught = false; - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.add("three and a half"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - - exCaught = false; - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.set("another three"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testModifyMutatorNext() { - this.verifyModifyNext(new CloneListIterator<String>(this.originalList, this.buildMutator())); - } - - public void testModifyMutatorPrevious() { - this.verifyModifyPrevious(new CloneListIterator<String>(this.originalList, this.buildMutator())); - } - - private CloneListIterator.Mutator<String> buildMutator() { - return new CloneListIterator.Mutator<String>() { - public void add(int index, String o) { - CloneListIteratorTests.this.originalList.add(index, o); - } - - public void remove(int index) { - CloneListIteratorTests.this.originalList.remove(index); - } - - public void set(int index, String o) { - CloneListIteratorTests.this.originalList.set(index, o); - } - }; - } - - public void testModifySubclassNext() { - this.verifyModifyNext(this.buildSubclass()); - } - - public void testModifySubclassPrevious() { - this.verifyModifyPrevious(this.buildSubclass()); - } - - private ListIterator<String> buildSubclass() { - return new CloneListIterator<String>(this.originalList) { - @Override - protected void add(int currentIndex, String o) { - CloneListIteratorTests.this.originalList.add(currentIndex, o); - } - - @Override - protected void remove(int currentIndex) { - CloneListIteratorTests.this.originalList.remove(currentIndex); - } - - @Override - protected void set(int currentIndex, String o) { - CloneListIteratorTests.this.originalList.set(currentIndex, o); - } - }; - } - - private void verifyModifyNext(ListIterator<String> iterator) { - String removed = "three"; - String addedAfter = "five"; - String added = "five and a half"; - String replaced = "seven"; - String replacement = "another seven"; - assertTrue(this.originalList.contains(removed)); - assertTrue(this.originalList.contains(addedAfter)); - assertTrue(this.originalList.contains(replaced)); - // try to remove before calling #next() - boolean exCaught = false; - try { - iterator.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue(exCaught); - while (iterator.hasNext()) { - String next = iterator.next(); - if (next.equals(addedAfter)) { - iterator.add(added); - } - if (next.equals(removed)) { - iterator.remove(); - // try to remove twice - exCaught = false; - try { - iterator.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue(exCaught); - } - if (next.equals(replaced)) { - iterator.set(replacement); - } - } - assertTrue(this.originalList.contains(added)); - assertFalse(this.originalList.contains(removed)); - assertFalse(this.originalList.contains(replaced)); - assertTrue(this.originalList.contains(replacement)); - } - - private void verifyModifyPrevious(ListIterator<String> iterator) { - String removed = "three"; - String addedBefore = "five"; - String added = "four and a half"; - String replaced = "seven"; - String replacement = "another seven"; - assertTrue(this.originalList.contains(removed)); - assertTrue(this.originalList.contains(addedBefore)); - assertTrue(this.originalList.contains(replaced)); - while (iterator.hasNext()) { - iterator.next(); - } - while (iterator.hasPrevious()) { - Object previous = iterator.previous(); - if (previous.equals(addedBefore)) { - iterator.add(added); - } - if (previous.equals(removed)) { - iterator.remove(); - // try to remove twice - boolean exCaught = false; - try { - iterator.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - if (previous.equals(replaced)) { - iterator.set(replacement); - } - } - assertTrue(this.originalList.contains(added)); - assertFalse(this.originalList.contains(removed)); - assertFalse(this.originalList.contains(replaced)); - assertTrue(this.originalList.contains(replacement)); - } - - private ListIterator<String> buildCloneListIterator() { - return this.buildCloneListIterator(this.originalList); - } - - private ListIterator<String> buildCloneListIterator(List<String> list) { - return new CloneListIterator<String>(list); - } - - private ListIterator<String> buildNestedListIterator() { - return this.originalList.listIterator(); - } - - private List<String> buildList() { - List<String> list = this.buildEmptyList(); - this.populateList(list); - return list; - } - - private void populateList(List<String> list) { - list.add("zero"); - list.add("one"); - list.add("two"); - list.add("three"); - list.add("four"); - list.add("five"); - list.add("six"); - list.add("seven"); - list.add("eight"); - list.add("nine"); - } - - protected List<String> buildEmptyList() { - return new ArrayList<String>(); - } - - /** - * Test concurrent access: First build a clone iterator in a separate thread - * that hangs momentarily during its construction; then modify the shared - * collection in this thread. This would cause a - * ConcurrentModificationException in the other thread if the clone iterator - * were not synchronized on the original collection. - */ - public void testConcurrentAccess() throws Exception { - CloneIteratorTests.SlowCollection<String> slow = new CloneIteratorTests.SlowCollection<String>(); - this.populateList(slow); - // using the unsynchronized list will cause the test to fail - // this.originalList = slow; - this.originalList = Collections.synchronizedList(slow); - - this.concurrentList = new ArrayList<String>(); - Thread thread = this.buildThread(this.buildRunnable()); - thread.start(); - while ( ! slow.hasStartedClone()) { - // wait for the other thread to start the clone... - Thread.yield(); - } - // ...then sneak in an extra element - this.originalList.add("seventeen"); - thread.join(); - List<String> expected = new ArrayList<String>(); - this.populateList(expected); - assertEquals(expected, this.concurrentList); - } - - private Runnable buildRunnable() { - return new TestRunnable() { - @Override - protected void run_() throws Throwable { - CloneListIteratorTests.this.loopWithCloneListIterator(); - } - }; - } - - /** - * use a clone iterator to loop over the "slow" collection and copy its - * contents to the concurrent collection - */ - void loopWithCloneListIterator() { - for (ListIterator<String> stream = this.buildCloneListIterator(); stream.hasNext();) { - this.concurrentList.add(stream.next()); - } - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeIteratorTests.java deleted file mode 100644 index 573c1d93b0..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeIteratorTests.java +++ /dev/null @@ -1,351 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; - -@SuppressWarnings("nls") -public class CompositeIteratorTests extends TestCase { - - public CompositeIteratorTests(String name) { - super(name); - } - - public void testHasAnother() { - this.verifyHasAnother(this.buildCompositeIterator()); - } - - public void testHasAnother2() { - this.verifyHasAnother(this.buildCompositeIterator2()); - } - - public void testHasAnother3() { - this.verifyHasAnother(this.buildCompositeIterator3()); - } - - void verifyHasAnother(Iterator<String> stream) { - this.verifyHasAnother(8, stream); - } - - void verifyHasAnother(int expected, Iterator<String> stream) { - int i = 0; - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(expected, i); - } - - public void testAnother() { - this.verifyAnother(this.buildCompositeIterator()); - } - - public void testAnother2() { - this.verifyAnother(this.buildCompositeIterator2()); - } - - public void testAnother3() { - this.verifyAnother(this.buildCompositeIterator3()); - } - - void verifyAnother(Iterator<String> stream) { - this.verifyAnother(1, stream); - } - - void verifyAnother(int start, Iterator<String> stream) { - int index = start; - while (stream.hasNext()) { - assertEquals("bogus element", String.valueOf(index++), stream.next().substring(0, 1)); - } - } - - public void testRemove() { - this.verifyRemove(); - } - - protected void verifyRemove() { - List<String> list1 = this.buildList1(); - Object lastElement1 = list1.get(list1.size() - 1); - List<String> list2 = this.buildList2(); - List<String> list3 = this.buildList3(); - - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(list1.listIterator()); - list.add(list2.listIterator()); - list.add(list3.listIterator()); - - Iterator<String> stream = this.buildCompositeIterator(list.listIterator()); - while (stream.hasNext()) { - Object next = stream.next(); - if (next.equals("333")) { - stream.remove(); - } - // test special case - where we are between iterators - if (next.equals(lastElement1)) { - // this will trigger the next iterator to be loaded - stream.hasNext(); - // now try to remove from the previous iterator - stream.remove(); - } - } - stream.remove(); - - assertEquals("nothing removed from collection 1", this.buildList1().size() - 2, list1.size()); - assertFalse("element still in collection 1", list1.contains("333")); - assertFalse("last element still in collection 1", list1.contains(lastElement1)); - assertTrue("wrong element removed from collection 1", list1.contains("22")); - - assertEquals("nothing removed from collection 3", this.buildList3().size() - 1, list3.size()); - assertFalse("element still in collection 3", list3.contains("88888888")); - assertTrue("wrong element removed from collection 3", list3.contains("666666")); - } - - public void testSingleElement() { - String item = "0"; - this.verifyHasAnother(9, this.buildCompositeIterator(item, this.buildCompositeIterator())); - this.verifyAnother(0, this.buildCompositeIterator(item, this.buildCompositeIterator())); - } - - public void testNoSuchElementException() { - this.verifyNoSuchElementException(this.buildCompositeIterator()); - } - - void verifyNoSuchElementException(Iterator<String> stream) { - boolean exCaught = false; - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testUnsupportedOperationException() { - this.verifyUnsupportedOperationException(this.buildUnmodifiableCompositeIterator()); - } - - void verifyUnsupportedOperationException(Iterator<String> stream) { - boolean exCaught = false; - while (stream.hasNext()) { - Object string = stream.next(); - if (string.equals("333")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testIllegalStateException() { - this.verifyIllegalStateException(); - } - - void verifyIllegalStateException() { - this.verifyIllegalStateException(this.buildCompositeIterator()); - } - - void verifyIllegalStateException(Iterator<String> stream) { - boolean exCaught = false; - try { - stream.remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - - public void testEmptyHasAnother1() { - this.verifyEmptyHasAnother(this.buildEmptyCompositeIterator1()); - } - - void verifyEmptyHasAnother(Iterator<String> stream) { - int i = 0; - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(0, i); - } - - public void testEmptyNoSuchElementException1() { - this.verifyNoSuchElementException(this.buildEmptyCompositeIterator1()); - } - - public void testEmptyIllegalStateException1() { - this.verifyEmptyIllegalStateException1(); - } - - void verifyEmptyIllegalStateException1() { - this.verifyIllegalStateException(this.buildEmptyCompositeIterator1()); - } - - public void testEmptyHasAnother2() { - this.verifyEmptyHasAnother(this.buildEmptyCompositeIterator2()); - } - - public void testEmptyNoSuchElementException2() { - this.verifyNoSuchElementException(this.buildEmptyCompositeIterator2()); - } - - public void testEmptyIllegalStateException2() { - this.verifyEmptyIllegalStateException2(); - } - - void verifyEmptyIllegalStateException2() { - this.verifyIllegalStateException(this.buildEmptyCompositeIterator2()); - } - - Iterator<String> buildCompositeIterator() { - return this.buildCompositeIterator(this.buildIterators()); - } - - Iterator<String> buildEmptyCompositeIterator1() { - return this.buildCompositeIterator(this.buildEmptyIterators1()); - } - - Iterator<String> buildEmptyCompositeIterator2() { - return this.buildCompositeIterator(this.buildEmptyIterators2()); - } - - Iterator<String> buildUnmodifiableCompositeIterator() { - return this.buildCompositeIterator(this.buildUnmodifiableIterators()); - } - - // leave unchecked so we can override in subclass - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator(Iterator iterators) { - return new CompositeIterator<String>(iterators); - } - - // use vararg constructor - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator2() { - return new CompositeIterator<String>(this.buildIterator1(), this.buildIterator2(), this.buildIterator3()); - } - - // use vararg constructor - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator3() { - return new CompositeIterator<String>(new Iterator[] { this.buildIterator1(), this.buildIterator2(), this.buildIterator3() }); - } - - Iterator<String> buildCompositeIterator(String string, Iterator<String> iterator) { - return new CompositeIterator<String>(string, iterator); - } - - ListIterator<Iterator<String>> buildIterators() { - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(this.buildIterator1()); - list.add(this.buildIterator2()); - list.add(this.buildIterator3()); - return list.listIterator(); - } - - ListIterator<Iterator<String>> buildEmptyIterators1() { - return this.buildEmptyIteratorIterator(); - } - - ListIterator<Iterator<String>> buildEmptyIterators2() { - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(this.buildEmptyStringIterator()); - list.add(this.buildEmptyStringIterator()); - list.add(this.buildEmptyStringIterator()); - return list.listIterator(); - } - - ListIterator<Iterator<String>> buildUnmodifiableIterators() { - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(this.buildUnmodifiableIterator1()); - list.add(this.buildUnmodifiableIterator2()); - list.add(this.buildUnmodifiableIterator3()); - return list.listIterator(); - } - - ListIterator<String> buildIterator1() { - return this.buildList1().listIterator(); - } - - ListIterator<String> buildIterator2() { - return this.buildList2().listIterator(); - } - - ListIterator<String> buildIterator3() { - return this.buildList3().listIterator(); - } - - ListIterator<String> buildUnmodifiableIterator1() { - return this.buildUnmodifiableList1().listIterator(); - } - - ListIterator<String> buildUnmodifiableIterator2() { - return this.buildUnmodifiableList2().listIterator(); - } - - ListIterator<String> buildUnmodifiableIterator3() { - return this.buildUnmodifiableList3().listIterator(); - } - - ListIterator<Iterator<String>> buildEmptyIteratorIterator() { - return (new ArrayList<Iterator<String>>()).listIterator(); - } - - ListIterator<String> buildEmptyStringIterator() { - return (new ArrayList<String>()).listIterator(); - } - - List<String> buildList1() { - List<String> list = new ArrayList<String>(); - list.add("1"); - list.add("22"); - list.add("333"); - list.add("4444"); - return list; - } - - List<String> buildList2() { - return new ArrayList<String>(); - } - - List<String> buildList3() { - List<String> list = new ArrayList<String>(); - list.add("55555"); - list.add("666666"); - list.add("7777777"); - list.add("88888888"); - return list; - } - - List<String> buildUnmodifiableList1() { - return Collections.unmodifiableList(this.buildList1()); - } - - List<String> buildUnmodifiableList2() { - return Collections.unmodifiableList(this.buildList2()); - } - - List<String> buildUnmodifiableList3() { - return Collections.unmodifiableList(this.buildList3()); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeListIteratorTests.java deleted file mode 100644 index 3da104a4a3..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/CompositeListIteratorTests.java +++ /dev/null @@ -1,331 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; - -@SuppressWarnings("nls") -public class CompositeListIteratorTests extends ReadOnlyCompositeListIteratorTests { - - public CompositeListIteratorTests(String name) { - super(name); - } - - @Override - public void testRemove() { - super.testRemove(); - List<String> list1 = this.buildList1(); - List<String> list2 = this.buildList2(); - List<String> list3 = this.buildList3(); - Object firstElement3 = list3.get(0); - - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(list1.listIterator()); - list.add(list2.listIterator()); - list.add(list3.listIterator()); - - ListIterator<String> stream = (ListIterator<String>) this.buildCompositeIterator(list.listIterator()); - // position to end of stream - while (stream.hasNext()) { - stream.next(); - } - while (stream.hasPrevious()) { - Object previous = stream.previous(); - if (previous.equals("333")) { - stream.remove(); - } - // test special case - where we are between iterators - if (previous.equals(firstElement3)) { - // this will trigger the next iterator to be loaded - stream.hasPrevious(); - // now try to remove from the previous iterator - stream.remove(); - } - } - stream.remove(); - - assertEquals("nothing removed from collection 1", this.buildList1().size() - 2, list1.size()); - assertFalse("element still in collection 1", list1.contains("1")); - assertFalse("element still in collection 1", list1.contains("333")); - - assertEquals("nothing removed from collection 3", this.buildList3().size() - 1, list3.size()); - assertFalse("first element still in collection 3", list3.contains(firstElement3)); - assertTrue("wrong element removed from collection 3", list3.contains("666666")); - } - - public void testAdd() { - List<String> list1 = this.buildList1(); - Object lastElement1 = list1.get(list1.size() - 1); - List<String> list2 = this.buildList2(); - List<String> list3 = this.buildList3(); - Object firstElement3 = list3.get(0); - - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(list1.listIterator()); - list.add(list2.listIterator()); - list.add(list3.listIterator()); - - ListIterator<String> stream = (ListIterator<String>) this.buildCompositeIterator(list.listIterator()); - while (stream.hasNext()) { - Object next = stream.next(); - if (next.equals("333")) { - stream.add("3.5"); - } - // test special case - where we are between iterators - if (next.equals(lastElement1)) { - // this will trigger the next iterator to be loaded - stream.hasNext(); - // now try to add to the iterator - stream.add("something in 3"); - } - } - stream.add("finale"); - boolean checkForFinale = true; - while (stream.hasPrevious()) { - Object previous = stream.previous(); - if (checkForFinale) { - checkForFinale = false; - assertEquals("added element dropped", "finale", previous); - } - if (previous.equals("333")) { - stream.add("2.5"); - } - // test special case - where we are between iterators - if (previous.equals(firstElement3)) { - // this will trigger the next iterator to be loaded - stream.hasPrevious(); - // now try to remove from the previous iterator - stream.add("old start of 3"); - } - } - stream.add("prelude"); - assertEquals("added element dropped", "prelude", stream.previous()); - - assertEquals("elements not added to collection 1", this.buildList1().size() + 3, list1.size()); - assertEquals("element not added to collection 1", "prelude", list1.get(0)); - assertEquals("element not added to collection 1", "2.5", list1.get(3)); - assertEquals("element not added to collection 1", "3.5", list1.get(5)); - - assertEquals("elements not added to collection 3", this.buildList3().size() + 3, list3.size()); - assertEquals("element not added to collection 3", "something in 3", list3.get(0)); - assertEquals("element not added to collection 3", "old start of 3", list3.get(1)); - assertEquals("element not added to collection 3", "finale", list3.get(list3.size() - 1)); - - // add to the front - stream = (ListIterator<String>) this.buildCompositeIterator(); - stream.add("blah"); - assertFalse("added element should be placed BEFORE the \"cursor\"", stream.next().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - stream.add("blah"); - assertTrue("added element should be placed BEFORE the \"cursor\"", stream.previous().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - while (stream.hasPrevious()) { - stream.previous(); - } - stream.add("blah"); - assertFalse("added element should be placed BEFORE the \"cursor\"", stream.next().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - while (stream.hasPrevious()) { - stream.previous(); - } - stream.add("blah"); - assertTrue("added element should be placed BEFORE the \"cursor\"", stream.previous().equals("blah")); - - // add to the middle - stream = (ListIterator<String>) this.buildCompositeIterator(); - stream.next(); - stream.add("blah"); - assertFalse("added element should be placed BEFORE the \"cursor\"", stream.next().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - stream.next(); - stream.add("blah"); - assertTrue("added element should be placed BEFORE the \"cursor\"", stream.previous().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - stream.previous(); - stream.add("blah"); - assertFalse("added element should be placed BEFORE the \"cursor\"", stream.next().equals("blah")); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - stream.previous(); - stream.add("blah"); - assertTrue("added element should be placed BEFORE the \"cursor\"", stream.previous().equals("blah")); - - // add to the end - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - stream.add("blah"); - assertFalse("added element should be placed BEFORE the \"cursor\"", stream.hasNext()); - - stream = (ListIterator<String>) this.buildCompositeIterator(); - while (stream.hasNext()) { - stream.next(); - } - stream.add("blah"); - assertTrue("added element should be placed BEFORE the \"cursor\"", stream.previous().equals("blah")); - } - - public void testSet() { - List<String> list1 = this.buildList1(); - Object lastElement1 = list1.get(list1.size() - 1); - List<String> list2 = this.buildList2(); - List<String> list3 = this.buildList3(); - Object firstElement3 = list3.get(0); - - List<Iterator<String>> list = new ArrayList<Iterator<String>>(); - list.add(list1.listIterator()); - list.add(list2.listIterator()); - list.add(list3.listIterator()); - - ListIterator<String> stream = (ListIterator<String>) this.buildCompositeIterator(list.listIterator()); - // position to end of stream - while (stream.hasNext()) { - Object next = stream.next(); - if (next.equals("333")) { - stream.set("333a"); - } - // test special case - where we are between iterators - if (next.equals(lastElement1)) { - // this will trigger the next iterator to be loaded - stream.hasNext(); - // now try to remove from the previous iterator - stream.set("end of 1"); - } - } - while (stream.hasPrevious()) { - Object previous = stream.previous(); - if (previous.equals("22")) { - stream.set("22a"); - } - // test special case - where we are between iterators - if (previous.equals(firstElement3)) { - // this will trigger the next iterator to be loaded - stream.hasPrevious(); - // now try to remove from the previous iterator - stream.set("start of 3"); - } - } - - assertEquals("element(s) added to collection 1", this.buildList1().size(), list1.size()); - assertEquals("element not set in collection 1", "22a", list1.get(1)); - assertFalse("element not set in collection 1", list1.contains("22")); - assertEquals("element not set in collection 1", "333a", list1.get(2)); - assertFalse("element not set in collection 1", list1.contains("333")); - assertEquals("element not set in collection 1", "end of 1", list1.get(list1.size() - 1)); - assertFalse("element not set in collection 1", list1.contains(lastElement1)); - - assertEquals("element(s) added to collection 3", this.buildList3().size(), list3.size()); - assertEquals("element not set in collection 3", "start of 3", list3.get(0)); - assertFalse("element not set in collection 3", list3.contains(firstElement3)); - } - - @Override - public void testNextIndexPreviousIndex() { - int i = 0; - ListIterator<String> stream = (ListIterator<String>) this.buildCompositeIterator(); - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - while (stream.hasNext()) { - Object next = stream.next(); - i++; - if (next.equals("333")) { - stream.remove(); - i--; - } - if (next.equals("7777777")) { - stream.add("7.5"); - i++; - } - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - } - assertEquals("index is corrupt", 8, i); - - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - while (stream.hasPrevious()) { - Object previous = stream.previous(); - i--; - if (previous.equals("666666")) { - stream.remove(); - // removing a previous element, does not change the cursor - } - if (previous.equals("22")) { - stream.add("1.5"); - i++; - } - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - } - assertEquals("index is corrupt", 0, i); - } - - @Override - public void testIllegalStateException() { - this.verifyIllegalStateException(); - } - - @Override - public void testEmptyIllegalStateException1() { - this.verifyEmptyIllegalStateException1(); - } - - @Override - public void testEmptyIllegalStateException2() { - this.verifyEmptyIllegalStateException2(); - } - - // unchecked so we can override the unchecked method in superclass - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator(Iterator iterators) { - return new CompositeListIterator<String>((ListIterator<ListIterator<String>>) iterators); - } - - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator2() { - return new CompositeListIterator<String>(this.buildIterator1(), this.buildIterator2(), this.buildIterator3()); - } - - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator3() { - return new CompositeListIterator<String>(new ListIterator[] { this.buildIterator1(), this.buildIterator2(), this.buildIterator3() }); - } - - @Override - ListIterator<String> buildCompositeListIterator(String string, ListIterator<String> iterator) { - return new CompositeListIterator<String>(string, iterator); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyIteratorTests.java deleted file mode 100644 index d54ccd0e99..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyIteratorTests.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - -@SuppressWarnings("nls") -public class EmptyIteratorTests extends TestCase { - - public EmptyIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<Object> stream = EmptyIterator.instance(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(0, i); - } - - public void testNext() { - for (Iterator<String> stream = EmptyIterator.instance(); stream.hasNext();) { - fail("bogus element: " + stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<Number> stream = EmptyIterator.instance(); - Object element = null; - while (stream.hasNext()) { - element = stream.next(); - } - try { - element = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + element, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - try { - EmptyIterator.instance().remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyListIteratorTests.java deleted file mode 100644 index b4ac671869..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EmptyListIteratorTests.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ListIterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; - -@SuppressWarnings("nls") -public class EmptyListIteratorTests extends TestCase { - - public EmptyListIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (ListIterator<Object> stream = EmptyListIterator.instance(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(0, i); - } - - public void testNext() { - for (ListIterator<Object> stream = EmptyListIterator.instance(); stream.hasNext();) { - fail("bogus element: " + stream.next()); - } - } - - public void testNextIndex() { - ListIterator<Object> stream = EmptyListIterator.instance(); - assertEquals(0, stream.nextIndex()); - } - - public void testHasPrevious() { - ListIterator<Object> stream = EmptyListIterator.instance(); - int i = 0; - while (stream.hasPrevious()) { - stream.previous(); - i++; - } - assertEquals(0, i); - - while (stream.hasNext()) { - stream.next(); - } - i = 0; - while (stream.hasPrevious()) { - stream.previous(); - i++; - } - assertEquals(0, i); - } - - public void testPrevious() { - ListIterator<Object> stream = EmptyListIterator.instance(); - while (stream.hasPrevious()) { - fail("bogus element: " + stream.previous()); - } - while (stream.hasNext()) { - stream.next(); - } - while (stream.hasPrevious()) { - fail("bogus element: " + stream.previous()); - } - } - - public void testPreviousIndex() { - ListIterator<Object> stream = EmptyListIterator.instance(); - assertEquals(-1, stream.previousIndex()); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - ListIterator<Object> stream = EmptyListIterator.instance(); - Object element = null; - while (stream.hasNext()) { - element = stream.next(); - } - try { - element = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown (next): " + element, exCaught); - while (stream.hasPrevious()) { - element = stream.previous(); - } - try { - element = stream.previous(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown (previous): " + element, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - try { - EmptyListIterator.instance().remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("UnsupportedOperationException not thrown (remove)", exCaught); - try { - EmptyListIterator.instance().set(new Object()); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("UnsupportedOperationException not thrown (set)", exCaught); - try { - EmptyListIterator.instance().add(new Object()); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("UnsupportedOperationException not thrown (add)", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EnumerationIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EnumerationIteratorTests.java deleted file mode 100644 index cd34295f6a..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/EnumerationIteratorTests.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Enumeration; -import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.Vector; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.EnumerationIterator; - -@SuppressWarnings("nls") -public class EnumerationIteratorTests extends TestCase { - - public EnumerationIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(this.buildVector().size(), i); - } - - public void testHasNextUpcast() { - int i = 0; - for (Iterator<Object> stream = this.buildIteratorUpcast(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(this.buildVector().size(), i); - } - - public void testNext() { - Enumeration<String> enumeration = this.buildEnumeration(); - for (Iterator<String> stream = this.buildIterator(); stream.hasNext();) { - assertEquals("bogus element", enumeration.nextElement(), stream.next()); - } - } - - public void testNextUpcast() { - Enumeration<String> enumeration = this.buildEnumeration(); - for (Iterator<Object> stream = this.buildIteratorUpcast(); stream.hasNext();) { - assertEquals("bogus element", enumeration.nextElement(), stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - private Iterator<String> buildIterator() { - return this.buildIterator(this.buildEnumeration()); - } - - private Iterator<String> buildIterator(Enumeration<String> enumeration) { - return new EnumerationIterator<String>(enumeration); - } - - private Enumeration<String> buildEnumeration() { - return this.buildVector().elements(); - } - - private Vector<String> buildVector() { - Vector<String> v = new Vector<String>(); - v.addElement("one"); - v.addElement("two"); - v.addElement("three"); - v.addElement("four"); - v.addElement("five"); - v.addElement("six"); - v.addElement("seven"); - v.addElement("eight"); - return v; - } - - private Iterator<Object> buildIteratorUpcast() { - return this.buildIteratorUpcast(this.buildEnumeration()); - } - - private Iterator<Object> buildIteratorUpcast(Enumeration<String> enumeration) { - return new EnumerationIterator<Object>(enumeration); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/FilteringIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/FilteringIteratorTests.java deleted file mode 100644 index 8e1fe4ce6a..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/FilteringIteratorTests.java +++ /dev/null @@ -1,266 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.NoSuchElementException; - -import junit.framework.TestCase; - -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.SimpleFilter; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - -@SuppressWarnings("nls") -public class FilteringIteratorTests extends TestCase { - - private static final String PREFIX = "prefix"; - - public FilteringIteratorTests(String name) { - super(name); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildAcceptIterator(); stream.hasNext();) { - String string = stream.next(); - if (string.equals(PREFIX + "3")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildAcceptIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testAcceptHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildAcceptIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testAcceptNext() { - for (Iterator<String> stream = this.buildAcceptIterator(); stream.hasNext();) { - assertTrue("bogus accept", stream.next().startsWith(PREFIX)); - } - } - - public void testInnerHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildInnerIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testInnerNext() { - for (Iterator<String> stream = this.buildInnerIterator(); stream.hasNext();) { - assertTrue("bogus accept", stream.next().startsWith(PREFIX)); - } - } - - public void testRejectHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildRejectIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(2, i); - } - - public void testRejectNext() { - for (Iterator<String> stream = this.buildRejectIterator(); stream.hasNext();) { - assertFalse("bogus reject", stream.next().startsWith(PREFIX)); - } - } - - public void testBothHasNext() { - // if both accept() and reject() are overridden, accept() is used - int i = 0; - for (Iterator<String> stream = this.buildBothIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testLoadNext() { - // loadNext() used to cause a NPE when executing during the - // constructor because the "outer" class is not bound until completion - // of the constructor - for (Iterator<String> stream = this.buildInnerIterator2(); stream.hasNext();) { - assertTrue("bogus accept", stream.next().startsWith(PREFIX)); - } - } - - public void testFilterHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildFilterIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testFilterNext() { - for (Iterator<String> stream = this.buildFilterIterator(); stream.hasNext();) { - assertTrue("bogus accept", stream.next().startsWith(PREFIX)); - } - } - - private Iterator<String> buildFilteredIterator(Iterator<String> nestedIterator, Filter<String> filter) { - return new FilteringIterator<String>(nestedIterator, filter); - } - - private Iterator<String> buildInnerFilteredIterator(Iterator<String> nestedIterator) { - return new FilteringIterator<String>(nestedIterator) { - @Override - protected boolean accept(String s) { - return s.startsWith(PREFIX); - } - }; - } - - String getPrefix() { - return PREFIX; - } - - // this inner iterator will call the "outer" object - private Iterator<String> buildInnerFilteredIterator2(Iterator<String> nestedIterator) { - return new FilteringIterator<String>(nestedIterator) { - @Override - protected boolean accept(String s) { - return s.startsWith(FilteringIteratorTests.this.getPrefix()); - } - }; - } - - private Iterator<String> buildNestedIterator() { - Collection<String> c = new ArrayList<String>(); - c.add(PREFIX + "1"); - c.add(PREFIX + "2"); - c.add(PREFIX + "3"); - c.add("4"); - c.add(PREFIX + "5"); - c.add(PREFIX + "6"); - c.add(PREFIX + "7"); - c.add("8"); - return c.iterator(); - } - - private Iterator<String> buildAcceptIterator() { - return this.buildFilteredIterator(this.buildNestedIterator(), this.buildAcceptFilter(PREFIX)); - } - - private Iterator<String> buildInnerIterator() { - return this.buildInnerFilteredIterator(this.buildNestedIterator()); - } - - // this inner iterator will call the "outer" object - private Iterator<String> buildInnerIterator2() { - return this.buildInnerFilteredIterator2(this.buildNestedIterator()); - } - - private Iterator<String> buildFilterIterator() { - return this.buildFilteredIterator(this.buildNestedIterator(), this.buildFilterFilter(PREFIX)); - } - - private Filter<String> buildAcceptFilter(String prefix) { - return new SimpleFilter<String, String>(prefix) { - private static final long serialVersionUID = 1L; - - @Override - public boolean accept(String s) { - return s.startsWith(this.criterion); - } - }; - } - - private Iterator<String> buildRejectIterator() { - return this.buildFilteredIterator(this.buildNestedIterator(), this.buildRejectFilter(PREFIX)); - } - - private Filter<String> buildRejectFilter(String prefix) { - return new SimpleFilter<String, String>(prefix) { - private static final long serialVersionUID = 1L; - - @Override - public boolean reject(String s) { - return s.startsWith(this.criterion); - } - }; - } - - // use anonymous inner Filter - private Filter<String> buildFilterFilter(final String prefix) { - return new Filter<String>() { - public boolean accept(String s) { - return s.startsWith(prefix); - } - }; - } - - private Iterator<String> buildBothIterator() { - return this.buildFilteredIterator(this.buildNestedIterator(), this.buildBothFilter(PREFIX)); - } - - private Filter<String> buildBothFilter(String prefix) { - return new SimpleFilter<String, String>(prefix) { - private static final long serialVersionUID = 1L; - - @Override - public boolean reject(String s) { - return s.startsWith(this.criterion); - } - - @Override - public boolean accept(String s) { - return s.startsWith(this.criterion); - } - }; - } - - public void testInvalidFilteringIterator() { - boolean exCaught = false; - try { - // missing method override - Iterator<String> iterator = new FilteringIterator<String>(this.buildNestedIterator()); - String s = iterator.next(); - fail("invalid string: " + s); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/GraphIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/GraphIteratorTests.java deleted file mode 100644 index b0e7ebd428..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/GraphIteratorTests.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.GraphIterator; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class GraphIteratorTests extends TestCase { - /** this will be populated with all the nodes created for the test */ - Collection<GraphNode> nodes = new ArrayList<GraphNode>(); - - public GraphIteratorTests(String name) { - super(name); - } - - @Override - protected void tearDown() throws Exception { - TestTools.clear(this); - super.tearDown(); - } - - public void testHasNext1() { - this.verifyHasNext(this.buildGraphIterator1()); - } - - public void testHasNext2() { - this.verifyHasNext(this.buildGraphIterator2()); - } - - private void verifyHasNext(Iterator<GraphNode> iterator) { - int i = 0; - while (iterator.hasNext()) { - iterator.next(); - i++; - } - assertEquals(this.nodes.size(), i); - } - - public void testNext1() { - this.verifyNext(this.buildGraphIterator1()); - } - - public void testNext2() { - this.verifyNext(this.buildGraphIterator2()); - } - - private void verifyNext(Iterator<GraphNode> iterator) { - while (iterator.hasNext()) { - assertTrue("bogus element", this.nodes.contains(iterator.next())); - } - } - - public void testNoSuchElementException1() { - this.verifyNoSuchElementException(this.buildGraphIterator1()); - } - - public void testNoSuchElementException2() { - this.verifyNoSuchElementException(this.buildGraphIterator2()); - } - - private void verifyNoSuchElementException(Iterator<GraphNode> iterator) { - boolean exCaught = false; - while (iterator.hasNext()) { - iterator.next(); - } - try { - iterator.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - - public void testSize1() { - this.verifySize(this.buildGraphIterator1()); - } - - public void testSize2() { - this.verifySize(this.buildGraphIterator2()); - } - - private void verifySize(Iterator<GraphNode> iterator) { - int iteratorSize = CollectionTools.size(iterator); - int actualSize = this.nodes.size(); - assertTrue("Too few items in iterator.", iteratorSize >= actualSize); - assertTrue("Too many items in iterator.", iteratorSize <= actualSize); - } - - public void testInvalidGraphIterator() { - boolean exCaught = false; - try { - // missing method override - Iterator<GraphNode> iterator = new GraphIterator<GraphNode>(this.buildGraphRoot()); - GraphNode gn = iterator.next(); - fail("invalid graph node: " + gn); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - - /** - * build a graph iterator with an explicit misterRogers - */ - private Iterator<GraphNode> buildGraphIterator1() { - return new GraphIterator<GraphNode>(this.buildGraphRoot(), this.buildMisterRogers()); - } - - private GraphIterator.MisterRogers<GraphNode> buildMisterRogers() { - return new GraphIterator.MisterRogers<GraphNode>() { - public Iterator<GraphNode> neighbors(GraphNode next) { - return next.neighbors(); - } - }; - } - - /** - * build a graph iterator with an override - */ - private Iterator<GraphNode> buildGraphIterator2() { - return new GraphIterator<GraphNode>(this.buildGraphRoot()) { - @Override - public Iterator<GraphNode> neighbors(GraphNode next) { - return next.neighbors(); - } - }; - } - - private GraphNode buildGraphRoot() { - GraphNode ncNode = new GraphNode("North Carolina"); - GraphNode vaNode = new GraphNode("Virginia"); - GraphNode scNode = new GraphNode("South Carolina"); - GraphNode gaNode = new GraphNode("Georgia"); - GraphNode flNode = new GraphNode("Florida"); - GraphNode alNode = new GraphNode("Alabama"); - GraphNode msNode = new GraphNode("Mississippi"); - GraphNode tnNode = new GraphNode("Tennessee"); - - ncNode.setNeighbors(new GraphNode[] { vaNode, scNode, gaNode, tnNode }); - vaNode.setNeighbors(new GraphNode[] { ncNode, tnNode }); - scNode.setNeighbors(new GraphNode[] { ncNode, gaNode }); - gaNode.setNeighbors(new GraphNode[] { ncNode, scNode, flNode, alNode, tnNode }); - flNode.setNeighbors(new GraphNode[] { gaNode }); - alNode.setNeighbors(new GraphNode[] { gaNode, msNode, tnNode }); - msNode.setNeighbors(new GraphNode[] { alNode, tnNode }); - tnNode.setNeighbors(new GraphNode[] { vaNode, ncNode, gaNode, alNode, msNode }); - - return ncNode; - } - - public class GraphNode { - private String name; - - private Collection<GraphNode> neighbors = new ArrayList<GraphNode>(); - - public GraphNode(String name) { - super(); - GraphIteratorTests.this.nodes.add(this); // log node - this.name = name; - } - - public String getName() { - return this.name; - } - - void setNeighbors(GraphNode[] neighbors) { - this.neighbors = CollectionTools.list(neighbors); - } - - public Iterator<GraphNode> neighbors() { - return this.neighbors.iterator(); - } - - public int neighborsSize() { - return this.neighbors.size(); - } - - @Override - public String toString() { - return "GraphNode(" + this.name + ")"; - } - } -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java deleted file mode 100644 index 0cd247c942..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * decentralize test creation code - */ -public class JptUtilityIteratorsTests { - - public static Test suite() { - TestSuite suite = new TestSuite(JptUtilityIteratorsTests.class.getPackage().getName()); - - suite.addTestSuite(ArrayIteratorTests.class); - suite.addTestSuite(ArrayListIteratorTests.class); - suite.addTestSuite(ChainIteratorTests.class); - suite.addTestSuite(CloneIteratorTests.class); - suite.addTestSuite(CloneListIteratorTests.class); - suite.addTestSuite(CompositeIteratorTests.class); - suite.addTestSuite(CompositeListIteratorTests.class); - suite.addTestSuite(EmptyIteratorTests.class); - suite.addTestSuite(EmptyListIteratorTests.class); - suite.addTestSuite(EnumerationIteratorTests.class); - suite.addTestSuite(FilteringIteratorTests.class); - suite.addTestSuite(SuperIteratorWrapperTests.class); - suite.addTestSuite(GraphIteratorTests.class); - suite.addTestSuite(PeekableIteratorTests.class); - suite.addTestSuite(ReadOnlyCompositeListIteratorTests.class); - suite.addTestSuite(ReadOnlyIteratorTests.class); - suite.addTestSuite(ReadOnlyListIteratorTests.class); - suite.addTestSuite(SingleElementIteratorTests.class); - suite.addTestSuite(SingleElementListIteratorTests.class); - suite.addTestSuite(SynchronizedIteratorTests.class); - suite.addTestSuite(SynchronizedListIteratorTests.class); - suite.addTestSuite(TransformationIteratorTests.class); - suite.addTestSuite(TransformationListIteratorTests.class); - suite.addTestSuite(TreeIteratorTests.class); - - return suite; - } - - private JptUtilityIteratorsTests() { - super(); - throw new UnsupportedOperationException(); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/PeekableIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/PeekableIteratorTests.java deleted file mode 100644 index 9fcea76674..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/PeekableIteratorTests.java +++ /dev/null @@ -1,141 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.PeekableIterator; - -@SuppressWarnings("nls") -public class PeekableIteratorTests extends TestCase { - - public PeekableIteratorTests(String name) { - super(name); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildPeekableIterator(); stream.hasNext();) { - String string = stream.next(); - if (string.equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildPeekableIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildPeekableIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testHasNextUpcast() { - int i = 0; - for (Iterator<Object> stream = this.buildPeekableIteratorUpcast(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(6, i); - } - - public void testNext() { - Iterator<String> stream = this.buildPeekableIterator(); - assertEquals("zero", stream.next()); - assertEquals("one", stream.next()); - assertEquals("two", stream.next()); - assertEquals("three", stream.next()); - assertEquals("four", stream.next()); - assertEquals("five", stream.next()); - } - - public void testNextUpcast() { - Iterator<Object> stream = this.buildPeekableIteratorUpcast(); - assertEquals("zero", stream.next()); - assertEquals("one", stream.next()); - assertEquals("two", stream.next()); - assertEquals("three", stream.next()); - assertEquals("four", stream.next()); - assertEquals("five", stream.next()); - } - - public void testPeek() { - Object next = null; - for (PeekableIterator<String> stream = this.buildPeekableIterator(); stream.hasNext();) { - Object peek = stream.peek(); - assertTrue("peek and next are prematurely identical", peek != next); - next = stream.next(); - assertTrue("peek and next are not identical", peek == next); - } - } - - public void testPeekUpcast() { - Object next = null; - for (PeekableIterator<Object> stream = this.buildPeekableIteratorUpcast(); stream.hasNext();) { - Object peek = stream.peek(); - assertTrue("peek and next are prematurely identical", peek != next); - next = stream.next(); - assertTrue("peek and next are not identical", peek == next); - } - } - - private PeekableIterator<String> buildPeekableIterator() { - return this.buildPeekableIterator(this.buildNestedIterator()); - } - - private PeekableIterator<Object> buildPeekableIteratorUpcast() { - return this.buildPeekableIteratorUpcast(this.buildNestedIterator()); - } - - private PeekableIterator<String> buildPeekableIterator(Iterator<String> nestedIterator) { - return new PeekableIterator<String>(nestedIterator); - } - - private PeekableIterator<Object> buildPeekableIteratorUpcast(Iterator<String> nestedIterator) { - return new PeekableIterator<Object>(nestedIterator); - } - - private Iterator<String> buildNestedIterator() { - Collection<String> c = new ArrayList<String>(); - c.add("zero"); - c.add("one"); - c.add("two"); - c.add("three"); - c.add("four"); - c.add("five"); - return c.iterator(); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyCompositeListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyCompositeListIteratorTests.java deleted file mode 100644 index 30cbfe9ffc..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyCompositeListIteratorTests.java +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; -import org.eclipse.jpt.utility.internal.iterators.ReadOnlyCompositeListIterator; - -@SuppressWarnings("nls") -public class ReadOnlyCompositeListIteratorTests extends CompositeIteratorTests { - - public ReadOnlyCompositeListIteratorTests(String name) { - super(name); - } - - @Override - void verifyHasAnother(Iterator<String> stream) { - super.verifyHasAnother(stream); - ListIterator<String> stream2 = (ListIterator<String>) stream; - int i = 0; - while (stream2.hasPrevious()) { - stream2.previous(); - i++; - } - assertEquals(8, i); - } - - @Override - void verifyAnother(Iterator<String> stream) { - super.verifyAnother(stream); - int i = 8; - ListIterator<String> stream2 = (ListIterator<String>) stream; - while (stream2.hasPrevious()) { - assertEquals("bogus element", String.valueOf(i--), stream2.previous().substring(0, 1)); - } - } - - public void testNextIndexPreviousIndex() { - int i = 0; - ListIterator<String> stream = (ListIterator<String>) this.buildCompositeIterator(); - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - while (stream.hasNext()) { - stream.next(); - i++; - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - } - assertEquals("index is corrupt", 8, i); - - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - while (stream.hasPrevious()) { - stream.previous(); - i--; - assertEquals(i, stream.nextIndex()); - assertEquals(i - 1, stream.previousIndex()); - } - assertEquals("index is corrupt", 0, i); - } - - public void testPreviousIndex() { - // TODO - } - - @Override - public void testRemove() { - // #remove() is not supported - } - - @Override - public void testIllegalStateException() { - // #remove() is not supported - } - - @Override - public void testEmptyIllegalStateException1() { - // #remove() is not supported - } - - @Override - public void testEmptyIllegalStateException2() { - // #remove() is not supported - } - - @Override - void verifyNoSuchElementException(Iterator<String> stream) { - super.verifyNoSuchElementException(stream); - ListIterator<String> stream2 = (ListIterator<String>) stream; - boolean exCaught = false; - String string = null; - while (stream2.hasPrevious()) { - string = stream2.previous(); - } - try { - string = stream2.previous(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - @Override - void verifyUnsupportedOperationException(Iterator<String> stream) { - super.verifyUnsupportedOperationException(stream); - boolean exCaught = false; - ListIterator<String> stream2 = (ListIterator<String>) stream; - while (stream2.hasPrevious()) { - Object string = stream2.previous(); - if (string.equals("333")) { - try { - stream2.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - @Override - void verifyIllegalStateException(Iterator<String> stream) { - super.verifyIllegalStateException(stream); - ListIterator<String> stream2 = (ListIterator<String>) stream; - boolean exCaught = false; - try { - stream2.set("junk"); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - - @Override - void verifyEmptyHasAnother(Iterator<String> stream) { - super.verifyEmptyHasAnother(stream); - ListIterator<String> stream2 = (ListIterator<String>) stream; - int i = 0; - while (stream2.hasPrevious()) { - stream2.previous(); - i++; - } - assertEquals(0, i); - } - - // unchecked so we can override the unchecked method in superclass - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator(Iterator iterators) { - return new ReadOnlyCompositeListIterator<String>((ListIterator<ListIterator<String>>) iterators); - } - - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator2() { - return new ReadOnlyCompositeListIterator<String>(this.buildIterator1(), this.buildIterator2(), this.buildIterator3()); - } - - @Override - @SuppressWarnings("unchecked") - Iterator<String> buildCompositeIterator3() { - return new ReadOnlyCompositeListIterator<String>(new ListIterator[] { this.buildIterator1(), this.buildIterator2(), this.buildIterator3() }); - } - - Iterator<String> buildCompositeIterator(String string, ListIterator<String> iterator) { - return this.buildCompositeListIterator(string, iterator); - } - - ListIterator<String> buildCompositeListIterator(String string, ListIterator<String> iterator) { - return new ReadOnlyCompositeListIterator<String>(string, iterator); - } - - public void testVariedNestedIterators() { - List<Integer> integerList = new ArrayList<Integer>(); - integerList.add(new Integer(42)); - integerList.add(new Integer(42)); - integerList.add(new Integer(111)); - integerList.add(new Integer(77)); - - List<Float> floatList = new ArrayList<Float>(); - floatList.add(new Float(42.42f)); - floatList.add(new Float(22.22f)); - floatList.add(new Float(111.111f)); - floatList.add(new Float(77.77f)); - - List<List<? extends Number>> list = new ArrayList<List<? extends Number>>(); - list.add(integerList); - list.add(floatList); - ListIterator<Number> li = new ReadOnlyCompositeListIterator<Number>(list); - while (li.hasNext()) { - assertTrue(li.next().intValue() > 0); - } - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyIteratorTests.java deleted file mode 100644 index c6351b7021..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyIteratorTests.java +++ /dev/null @@ -1,119 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.Vector; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator; - -@SuppressWarnings("nls") -public class ReadOnlyIteratorTests extends TestCase { - - public ReadOnlyIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildReadOnlyIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(this.buildVector().size(), i); - } - - public void testHasNextUpcast() { - int i = 0; - for (Iterator<Object> stream = this.buildReadOnlyIteratorUpcast(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(this.buildVector().size(), i); - } - - public void testNext() { - Iterator<String> nestedIterator = this.buildNestedIterator(); - for (Iterator<String> stream = this.buildReadOnlyIterator(); stream.hasNext();) { - assertEquals("bogus element", nestedIterator.next(), stream.next()); - } - } - - public void testNextUpcast() { - Iterator<String> nestedIterator = this.buildNestedIterator(); - for (Iterator<Object> stream = this.buildReadOnlyIteratorUpcast(); stream.hasNext();) { - assertEquals("bogus element", nestedIterator.next(), stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildReadOnlyIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testRemove() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildReadOnlyIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - private Iterator<String> buildReadOnlyIterator() { - return this.buildReadOnlyIterator(this.buildNestedIterator()); - } - - private Iterator<Object> buildReadOnlyIteratorUpcast() { - return this.buildReadOnlyIteratorUpcast(this.buildNestedIterator()); - } - - private Iterator<String> buildReadOnlyIterator(Iterator<String> nestedIterator) { - return new ReadOnlyIterator<String>(nestedIterator); - } - - private Iterator<Object> buildReadOnlyIteratorUpcast(Iterator<String> nestedIterator) { - return new ReadOnlyIterator<Object>(nestedIterator); - } - - private Iterator<String> buildNestedIterator() { - return this.buildVector().iterator(); - } - - private Vector<String> buildVector() { - Vector<String> v = new Vector<String>(); - v.addElement("one"); - v.addElement("two"); - v.addElement("three"); - v.addElement("four"); - v.addElement("five"); - v.addElement("six"); - v.addElement("seven"); - v.addElement("eight"); - return v; - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyListIteratorTests.java deleted file mode 100644 index c5a1548dde..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/ReadOnlyListIteratorTests.java +++ /dev/null @@ -1,204 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.ReadOnlyListIterator; - -@SuppressWarnings("nls") -public class ReadOnlyListIteratorTests extends TestCase { - - public ReadOnlyListIteratorTests(String name) { - super(name); - } - - public void testHasNextAndHasPrevious() { - int i = 0; - ListIterator<String> stream = this.buildReadOnlyListIterator(); - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(this.buildList().size(), i); - - while (stream.hasPrevious()) { - stream.previous(); - i--; - } - assertEquals(0, i); - } - - public void testHasNextAndHasPreviousUpcast() { - int i = 0; - ListIterator<Object> stream = this.buildReadOnlyListIteratorUpcast(); - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(this.buildList().size(), i); - - while (stream.hasPrevious()) { - stream.previous(); - i--; - } - assertEquals(0, i); - } - - public void testNextAndPrevious() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - ListIterator<String> stream = this.buildReadOnlyListIterator(); - while (stream.hasNext()) { - assertEquals("bogus element", nestedListIterator.next(), stream.next()); - } - while (stream.hasPrevious()) { - assertEquals("bogus element", nestedListIterator.previous(), stream.previous()); - } - } - - public void testNextAndPreviousUpcast() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - ListIterator<Object> stream = this.buildReadOnlyListIteratorUpcast(); - while (stream.hasNext()) { - assertEquals("bogus element", nestedListIterator.next(), stream.next()); - } - while (stream.hasPrevious()) { - assertEquals("bogus element", nestedListIterator.previous(), stream.previous()); - } - } - - public void testNextIndexAndPreviousIndex() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - ListIterator<String> stream = this.buildReadOnlyListIterator(); - while (stream.hasNext()) { - assertEquals("bogus index", nestedListIterator.nextIndex(), stream.nextIndex()); - nestedListIterator.next(); - stream.next(); - } - assertEquals("bogus index", this.buildList().size(), stream.nextIndex()); - while (stream.hasPrevious()) { - assertEquals("bogus element", nestedListIterator.previousIndex(), stream.previousIndex()); - nestedListIterator.previous(); - stream.previous(); - } - assertEquals("bogus index", -1, stream.previousIndex()); - } - - public void testNextIndexAndPreviousIndexUpcast() { - ListIterator<String> nestedListIterator = this.buildNestedListIterator(); - ListIterator<Object> stream = this.buildReadOnlyListIteratorUpcast(); - while (stream.hasNext()) { - assertEquals("bogus index", nestedListIterator.nextIndex(), stream.nextIndex()); - nestedListIterator.next(); - stream.next(); - } - assertEquals("bogus index", this.buildList().size(), stream.nextIndex()); - while (stream.hasPrevious()) { - assertEquals("bogus element", nestedListIterator.previousIndex(), stream.previousIndex()); - nestedListIterator.previous(); - stream.previous(); - } - assertEquals("bogus index", -1, stream.previousIndex()); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - ListIterator<String> stream = this.buildReadOnlyListIterator(); - String string = null; - while (stream.hasNext()) { - string = stream.next(); - } - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testRemove() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildReadOnlyListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testSet() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildReadOnlyListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.set("bogus"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testAdd() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildReadOnlyListIterator(); stream.hasNext();) { - if (stream.next().equals("three")) { - try { - stream.add("bogus"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - private ListIterator<String> buildReadOnlyListIterator() { - return this.buildReadOnlyListIterator(this.buildNestedListIterator()); - } - - private ListIterator<Object> buildReadOnlyListIteratorUpcast() { - return this.buildReadOnlyListIteratorUpcast(this.buildNestedListIterator()); - } - - private ListIterator<String> buildReadOnlyListIterator(ListIterator<String> nestedListIterator) { - return new ReadOnlyListIterator<String>(nestedListIterator); - } - - private ListIterator<Object> buildReadOnlyListIteratorUpcast(ListIterator<String> nestedListIterator) { - return new ReadOnlyListIterator<Object>(nestedListIterator); - } - - private ListIterator<String> buildNestedListIterator() { - return this.buildList().listIterator(); - } - - private List<String> buildList() { - List<String> l = new ArrayList<String>(); - l.add("one"); - l.add("two"); - l.add("three"); - l.add("four"); - l.add("five"); - l.add("six"); - l.add("seven"); - l.add("eight"); - return l; - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementIteratorTests.java deleted file mode 100644 index b7e226934b..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementIteratorTests.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.SingleElementIterator; - -@SuppressWarnings("nls") -public class SingleElementIteratorTests extends TestCase { - - public SingleElementIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<String> stream = this.buildSingleElementIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(1, i); - } - - public void testNext() { - for (Iterator<String> stream = this.buildSingleElementIterator(); stream.hasNext();) { - assertEquals("bogus element", this.singleElement(), stream.next()); - } - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<String> stream = this.buildSingleElementIterator(); - String string = stream.next(); - try { - string = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + string, exCaught); - } - - public void testRemove() { - boolean exCaught = false; - for (Iterator<String> stream = this.buildSingleElementIterator(); stream.hasNext();) { - if (stream.next().equals(this.singleElement())) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - protected Iterator<String> buildSingleElementIterator() { - return new SingleElementIterator<String>(this.singleElement()); - } - - protected String singleElement() { - return "single element"; - } -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementListIteratorTests.java deleted file mode 100644 index 1ad48b2232..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SingleElementListIteratorTests.java +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.ListIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementListIterator; - -@SuppressWarnings("nls") -public class SingleElementListIteratorTests extends SingleElementIteratorTests { - - public SingleElementListIteratorTests(String name) { - super(name); - } - - public void testNextIndex() { - ListIterator<String> stream = this.buildSingleElementListIterator(); - while (stream.hasNext()) { - assertEquals("bogus index", 0, stream.nextIndex()); - stream.next(); - } - assertEquals("bogus index", 1, stream.nextIndex()); - } - - public void testHasPrevious() { - int i = 0; - ListIterator<String> stream = this.buildSingleElementListIterator(); - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(1, i); - - while (stream.hasPrevious()) { - stream.previous(); - i++; - } - assertEquals(2, i); - } - - public void testPrevious() { - ListIterator<String> stream = this.buildSingleElementListIterator(); - - while (stream.hasNext()) { - assertEquals("bogus element", this.singleElement(), stream.next()); - } - - while (stream.hasPrevious()) { - assertEquals("bogus element", this.singleElement(), stream.previous()); - } - } - - public void testPreviousIndex() { - ListIterator<String> stream = this.buildSingleElementListIterator(); - - while (stream.hasNext()) { - assertEquals("bogus index", 0, stream.nextIndex()); - stream.next(); - } - - while (stream.hasPrevious()) { - assertEquals("bogus index", 0, stream.previousIndex()); - stream.previous(); - } - - assertEquals("bogus index", -1, stream.previousIndex()); - } - - public void testAdd() { - boolean exCaught = false; - ListIterator<String> stream = this.buildSingleElementListIterator(); - - try { - stream.add("foo"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testSet() { - boolean exCaught = false; - for (ListIterator<String> stream = this.buildSingleElementListIterator(); stream.hasNext();) { - if (stream.next().equals(this.singleElement())) { - try { - stream.set("foo"); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - @Override - protected Iterator<String> buildSingleElementIterator() { - return new SingleElementListIterator<String>(this.singleElement()); - } - - protected ListIterator<String> buildSingleElementListIterator() { - return (ListIterator<String>) this.buildSingleElementIterator(); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SuperIteratorWrapperTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SuperIteratorWrapperTests.java deleted file mode 100644 index 080062f860..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SuperIteratorWrapperTests.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Iterator; - -import junit.framework.TestCase; - -import org.eclipse.jpt.utility.internal.iterators.SuperIteratorWrapper; - -@SuppressWarnings("nls") -public class SuperIteratorWrapperTests extends TestCase { - - public SuperIteratorWrapperTests(String name) { - super(name); - } - - public void testIterator() { - ArrayList<String> list = new ArrayList<String>(); - list.add("foo"); - list.add("bar"); - list.add("baz"); - String concat = ""; - for (Iterator<String> stream = list.iterator(); stream.hasNext(); ) { - concat += stream.next(); - } - assertEquals("foobarbaz", concat); - - Iterator<Object> iterator = new SuperIteratorWrapper<Object>(list); - concat = ""; - while (iterator.hasNext()) { - Object next = iterator.next(); - if (next.equals("bar")) { - iterator.remove(); - } else { - concat += next; - } - } - assertEquals("foobaz", concat); - assertEquals(2, list.size()); - assertFalse(list.contains("bar")); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedIteratorTests.java deleted file mode 100644 index e44e72ec3e..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedIteratorTests.java +++ /dev/null @@ -1,310 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.NoSuchElementException; - -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.SynchronizedIterator; -import org.eclipse.jpt.utility.tests.internal.MultiThreadedTestCase; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class SynchronizedIteratorTests - extends MultiThreadedTestCase -{ - public SynchronizedIteratorTests(String name) { - super(name); - } - - /** - * test that an unsynchronized iterator will produce corrupt output; - * thread 1 will read the first element from the iterator - * and then sleep for a bit, allowing thread 2 to sneak in and - * read the same element from the iterator - */ - public void testUnsynchronizedNext() throws Exception { - TestIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - NextTestRunnable<String> runnable2 = new NextTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // both threads should have read the same element from the iterator :-( - assertEquals("foo", runnable1.next); - assertEquals("foo", runnable2.next); - } - - /** - * test that a synchronized iterator will produce valid output; - * thread 1 will read the first element from the iterator - * and then sleep for a bit, but thread 2 will be locked out and - * wait to read the second element from the iterator - */ - public void testSynchronizedNext() throws Exception { - TestIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - Iterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - NextTestRunnable<String> runnable2 = new NextTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the threads should have read the correct elements from the iterator :-) - assertEquals("foo", runnable1.next); - assertEquals("bar", runnable2.next); - } - - public void testUnsynchronizedHasNext() throws Exception { - TestIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - HasNextTestRunnable<String> runnable2 = new HasNextTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the last element, - // but thread 2 will think there are more elements on the iterator :-( - assertEquals("baz", runnable1.next); - assertEquals(true, runnable2.hasNext); - } - - public void testSynchronizedHasNext() throws Exception { - TestIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - Iterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - HasNextTestRunnable<String> runnable2 = new HasNextTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the last element, - // and thread 2 will think there are no more elements on the iterator :-) - assertEquals("baz", runnable1.next); - assertEquals(false, runnable2.hasNext); - } - - public void testUnsynchronizedRemove() throws Exception { - TestIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - RemoveTestRunnable<String> runnable2 = new RemoveTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the wrong element was removed :-( - assertEquals("bar", runnable1.next); - assertFalse(iterator.list.contains("foo")); - assertTrue(iterator.list.contains("bar")); - assertTrue(iterator.list.contains("baz")); - } - - public void testSynchronizedRemove() throws Exception { - TestIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - Iterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - RemoveTestRunnable<String> runnable2 = new RemoveTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the correct element was removed :-) - assertEquals("bar", runnable1.next); - assertTrue(nestedIterator.list.contains("foo")); - assertFalse(nestedIterator.list.contains("bar")); - assertTrue(nestedIterator.list.contains("baz")); - } - - TestIterator<String> buildTestIterator(long delay) { - return new TestIterator<String>(delay, this.buildArray()); - } - - String[] buildArray() { - return new String[] {"foo", "bar", "baz"}; - } - - Iterator<String> buildSynchronizedIterator(Iterator<String> nestedIterator) { - return new SynchronizedIterator<String>(nestedIterator); - } - - - /** - * next runnable - */ - class NextTestRunnable<E> implements Runnable { - final Iterator<E> iterator; - E next; - - NextTestRunnable(Iterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.next = this.iterator.next(); - } - - } - - /** - * has next runnable - */ - class HasNextTestRunnable<E> implements Runnable { - final Iterator<E> iterator; - boolean hasNext; - - HasNextTestRunnable(Iterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.hasNext = this.iterator.hasNext(); - } - - } - - /** - * remove runnable - */ - class RemoveTestRunnable<E> implements Runnable { - final Iterator<E> iterator; - - RemoveTestRunnable(Iterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.iterator.remove(); - } - - } - - /** - * Test iterator: If {@link #next()} is called while executing on the - * {@link slowThread}, the iterator will delay for the configured time. - */ - static class TestIterator<E> implements Iterator<E> { - final long delay; - final ArrayList<E> list = new ArrayList<E>(); - int nextIndex = 0; - int lastIndex = -1; - Thread slowThread; - - TestIterator(long delay, E... array) { - super(); - this.delay = delay; - CollectionTools.addAll(this.list, array); - } - - public boolean hasNext() { - return this.nextIndex != this.list.size(); - } - - public E next() { - if (this.hasNext()) { - E next = this.list.get(this.nextIndex); - if (Thread.currentThread() == this.slowThread) { - TestTools.sleep(this.delay); - } - this.lastIndex = this.nextIndex++; - return next; - } - throw new NoSuchElementException(); - } - - public void remove() { - if (this.lastIndex == -1) { - throw new IllegalStateException(); - } - this.list.remove(this.lastIndex); - if (this.lastIndex < this.nextIndex) { // check necessary for ListIterator - this.nextIndex--; - } - this.lastIndex = -1; - } - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedListIteratorTests.java deleted file mode 100644 index 727da0caa6..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/SynchronizedListIteratorTests.java +++ /dev/null @@ -1,524 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.Iterator; -import java.util.ListIterator; -import java.util.NoSuchElementException; - -import org.eclipse.jpt.utility.internal.iterators.SynchronizedListIterator; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class SynchronizedListIteratorTests - extends SynchronizedIteratorTests -{ - public SynchronizedListIteratorTests(String name) { - super(name); - } - - public void testUnsynchronizedPrevious() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - PreviousTestRunnable<String> runnable2 = new PreviousTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // both threads should have read the same element from the iterator :-( - assertEquals("bar", runnable1.previous); - assertEquals("bar", runnable2.previous); - } - - public void testSynchronizedPrevious() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - PreviousTestRunnable<String> runnable2 = new PreviousTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the threads should have read the correct elements from the iterator :-) - assertEquals("bar", runnable1.previous); - assertEquals("foo", runnable2.previous); - } - - public void testUnsynchronizedHasPrevious() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - HasPreviousTestRunnable<String> runnable2 = new HasPreviousTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // but thread 2 will think there are more "previous" elements on the iterator :-( - assertEquals("foo", runnable1.previous); - assertEquals(true, runnable2.hasPrevious); - } - - public void testSynchronizedHasPrevious() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - HasPreviousTestRunnable<String> runnable2 = new HasPreviousTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // and thread 2 will think there are no more "previous" elements on the iterator :-) - assertEquals("foo", runnable1.previous); - assertEquals(false, runnable2.hasPrevious); - } - - public void testUnsynchronizedNextIndex() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - NextIndexTestRunnable<String> runnable2 = new NextIndexTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // but thread 2 will think the next index is still 0 :-( - assertEquals("foo", runnable1.next); - assertEquals(0, runnable2.nextIndex); - } - - public void testSynchronizedNextIndex() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - NextIndexTestRunnable<String> runnable2 = new NextIndexTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // and thread 2 will think the next index is 1 :-) - assertEquals("foo", runnable1.next); - assertEquals(1, runnable2.nextIndex); - } - - public void testUnsynchronizedPreviousIndex() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - PreviousIndexTestRunnable<String> runnable2 = new PreviousIndexTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // but thread 2 will think the next index is still 0 :-( - assertEquals("foo", runnable1.previous); - assertEquals(0, runnable2.previousIndex); - } - - public void testSynchronizedPreviousIndex() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - - PreviousTestRunnable<String> runnable1 = new PreviousTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - PreviousIndexTestRunnable<String> runnable2 = new PreviousIndexTestRunnable<String>(iterator); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // thread 1 will have the first element, - // and thread 2 will think the next index is -1 :-) - assertEquals("foo", runnable1.previous); - assertEquals(-1, runnable2.previousIndex); - } - - public void testUnsynchronizedSet() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - SetTestRunnable<String> runnable2 = new SetTestRunnable<String>(iterator, "xxx"); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the wrong element was set :-( - assertEquals("bar", runnable1.next); - assertFalse(iterator.list.contains("foo")); - assertTrue(iterator.list.contains("xxx")); - assertTrue(iterator.list.contains("bar")); - assertTrue(iterator.list.contains("baz")); - } - - public void testSynchronizedSet() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - SetTestRunnable<String> runnable2 = new SetTestRunnable<String>(iterator, "xxx"); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the right element was set :-) - assertEquals("bar", runnable1.next); - assertTrue(nestedIterator.list.contains("foo")); - assertFalse(nestedIterator.list.contains("bar")); - assertTrue(nestedIterator.list.contains("xxx")); - assertTrue(nestedIterator.list.contains("baz")); - } - - public void testUnsynchronizedAdd() throws Exception { - TestListIterator<String> iterator = this.buildTestIterator(TWO_TICKS); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - AddTestRunnable<String> runnable2 = new AddTestRunnable<String>(iterator, "xxx"); - Thread thread2 = this.buildThread(runnable2); - iterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the element was added at the wrong index :-( - assertEquals("bar", runnable1.next); - assertTrue(iterator.list.contains("foo")); - assertEquals(0, iterator.list.indexOf("xxx")); - assertTrue(iterator.list.contains("xxx")); - assertTrue(iterator.list.contains("bar")); - assertTrue(iterator.list.contains("baz")); - } - - public void testSynchronizedAdd() throws Exception { - TestListIterator<String> nestedIterator = this.buildTestIterator(TWO_TICKS); - ListIterator<String> iterator = this.buildSynchronizedIterator(nestedIterator); - iterator.next(); - - NextTestRunnable<String> runnable1 = new NextTestRunnable<String>(iterator); - Thread thread1 = this.buildThread(runnable1); - AddTestRunnable<String> runnable2 = new AddTestRunnable<String>(iterator, "xxx"); - Thread thread2 = this.buildThread(runnable2); - nestedIterator.slowThread = thread1; - - thread1.start(); - - // allow thread 1 to read the first element and get bogged down - this.sleep(TICK); - thread2.start(); - - // wait for the threads to finish - thread1.join(); - thread2.join(); - - // the element was added at the correct index :-) - assertEquals("bar", runnable1.next); - assertTrue(nestedIterator.list.contains("foo")); - assertEquals(1, nestedIterator.list.indexOf("xxx")); - assertTrue(nestedIterator.list.contains("xxx")); - assertTrue(nestedIterator.list.contains("bar")); - assertTrue(nestedIterator.list.contains("baz")); - } - - @Override - ListIterator<String> buildSynchronizedIterator(Iterator<String> nestedIterator) { - return new SynchronizedListIterator<String>((ListIterator<String>) nestedIterator); - } - - @Override - TestListIterator<String> buildTestIterator(long delay) { - return new TestListIterator<String>(delay, this.buildArray()); - } - - /** - * previous runnable - */ - class PreviousTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - E previous; - - PreviousTestRunnable(ListIterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.previous = this.iterator.previous(); - } - - } - - /** - * has previous runnable - */ - class HasPreviousTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - boolean hasPrevious; - - HasPreviousTestRunnable(ListIterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.hasPrevious = this.iterator.hasPrevious(); - } - - } - - /** - * next index runnable - */ - class NextIndexTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - int nextIndex; - - NextIndexTestRunnable(ListIterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.nextIndex = this.iterator.nextIndex(); - } - - } - - /** - * previous index runnable - */ - class PreviousIndexTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - int previousIndex; - - PreviousIndexTestRunnable(ListIterator<E> iterator) { - super(); - this.iterator = iterator; - } - - public void run() { - this.previousIndex = this.iterator.previousIndex(); - } - - } - - /** - * set runnable - */ - class SetTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - final E element; - - SetTestRunnable(ListIterator<E> iterator, E element) { - super(); - this.iterator = iterator; - this.element = element; - } - - public void run() { - this.iterator.set(this.element); - } - - } - - /** - * add runnable - */ - class AddTestRunnable<E> implements Runnable { - final ListIterator<E> iterator; - final E element; - - AddTestRunnable(ListIterator<E> iterator, E element) { - super(); - this.iterator = iterator; - this.element = element; - } - - public void run() { - this.iterator.add(this.element); - } - - } - - /** - * Test iterator: If {@link #next()} or {@link #previous()} is called - * while executing on the {@link slowThread}, the iterator will delay - * for the configured time. - */ - static class TestListIterator<E> extends TestIterator<E> implements ListIterator<E> { - - TestListIterator(long delay, E... array) { - super(delay, array); - } - - public int nextIndex() { - return this.nextIndex; - } - - public boolean hasPrevious() { - return this.nextIndex != 0; - } - - public E previous() { - if (this.hasPrevious()) { - E previous = this.list.get(this.previousIndex()); - if (Thread.currentThread() == this.slowThread) { - TestTools.sleep(this.delay); - } - this.nextIndex--; - this.lastIndex = this.nextIndex; - return previous; - } - throw new NoSuchElementException(); - } - - public int previousIndex() { - return this.nextIndex - 1; - } - - public void set(E e) { - if (this.lastIndex == -1) { - throw new IllegalStateException(); - } - this.list.set(this.lastIndex, e); - } - - public void add(E e) { - this.list.add(this.lastIndex, e); - this.lastIndex++; - this.lastIndex = -1; - } - - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationIteratorTests.java deleted file mode 100644 index 0cfa7fa796..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationIteratorTests.java +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.Transformer; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; - -@SuppressWarnings("nls") -public class TransformationIteratorTests extends TestCase { - - public TransformationIteratorTests(String name) { - super(name); - } - - public void testHasNext() { - int i = 0; - for (Iterator<Integer> stream = this.buildIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(8, i); - } - - public void testHasNextUpcast() { - int i = 0; - for (Iterator<Object> stream = this.buildIteratorUpcast(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(8, i); - } - - public void testInnerHasNext() { - int i = 0; - for (Iterator<Integer> stream = this.buildInnerIterator(); stream.hasNext();) { - stream.next(); - i++; - } - assertEquals(8, i); - } - - public void testNext() { - int i = 0; - for (Iterator<Integer> stream = this.buildIterator(); stream.hasNext();) { - assertEquals("bogus transformation", ++i, stream.next().intValue()); - } - } - - public void testNextUpcast() { - int i = 0; - for (Iterator<Object> stream = this.buildIteratorUpcast(); stream.hasNext();) { - assertEquals("bogus transformation", ++i, ((Integer) stream.next()).intValue()); - } - } - - public void testInnerNext() { - int i = 0; - for (Iterator<Integer> stream = this.buildInnerIterator(); stream.hasNext();) { - assertEquals("bogus transformation", ++i, stream.next().intValue()); - } - } - - public void testRemove() { - Collection<String> c = this.buildCollection(); - for (Iterator<Integer> stream = this.buildInnerTransformationIterator(c.iterator()); stream.hasNext();) { - if (stream.next().intValue() == 3) { - stream.remove(); - } - } - assertEquals("nothing removed", this.buildCollection().size() - 1, c.size()); - assertFalse("element still in collection", c.contains("333")); - assertTrue("wrong element removed", c.contains("22")); - } - - public void testInnerRemove() { - Collection<String> c = this.buildCollection(); - for (Iterator<Integer> stream = this.buildTransformationIterator(c.iterator(), this.buildTransformer()); stream.hasNext();) { - if (stream.next().intValue() == 3) { - stream.remove(); - } - } - assertEquals("nothing removed", this.buildCollection().size() - 1, c.size()); - assertFalse("element still in collection", c.contains("333")); - assertTrue("wrong element removed", c.contains("22")); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - Iterator<Integer> stream = this.buildIterator(); - Integer integer = null; - while (stream.hasNext()) { - integer = stream.next(); - } - try { - integer = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + integer, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<Integer> stream = this.buildUnmodifiableIterator(); stream.hasNext();) { - int i = stream.next().intValue(); - if (i == 3) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testIllegalStateException() { - boolean exCaught = false; - try { - this.buildIterator().remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - - private Iterator<Integer> buildIterator() { - return this.buildTransformationIterator(this.buildNestedIterator(), this.buildTransformer()); - } - - private Iterator<Object> buildIteratorUpcast() { - return this.buildTransformationIteratorUpcast(this.buildNestedIterator(), this.buildTransformerUpcast()); - } - - private Iterator<Integer> buildInnerIterator() { - return this.buildInnerTransformationIterator(this.buildNestedIterator()); - } - - private Iterator<Integer> buildUnmodifiableIterator() { - return this.buildTransformationIterator(this.buildUnmodifiableNestedIterator(), this.buildTransformer()); - } - - private Iterator<Integer> buildTransformationIterator(Iterator<String> nestedIterator, Transformer<String, Integer> transformer) { - return new TransformationIterator<String, Integer>(nestedIterator, transformer); - } - - private Iterator<Object> buildTransformationIteratorUpcast(Iterator<String> nestedIterator, Transformer<Object, Integer> transformer) { - return new TransformationIterator<Object, Object>(nestedIterator, transformer); - } - - private Transformer<String, Integer> buildTransformer() { - // transform each string into an integer with a value of the string's length - return new Transformer<String, Integer>() { - public Integer transform(String next) { - return new Integer(next.length()); - } - }; - } - - private Transformer<Object, Integer> buildTransformerUpcast() { - // transform each string into an integer with a value of the string's length - return new Transformer<Object, Integer>() { - public Integer transform(Object next) { - return new Integer(((String) next).length()); - } - }; - } - - private Iterator<Integer> buildInnerTransformationIterator(Iterator<String> nestedIterator) { - // transform each string into an integer with a value of the string's length - return new TransformationIterator<String, Integer>(nestedIterator) { - @Override - protected Integer transform(String next) { - return new Integer(next.length()); - } - }; - } - - private Iterator<String> buildNestedIterator() { - return this.buildCollection().iterator(); - } - - private Iterator<String> buildUnmodifiableNestedIterator() { - return this.buildUnmodifiableCollection().iterator(); - } - - private Collection<String> buildCollection() { - Collection<String> c = new ArrayList<String>(); - c.add("1"); - c.add("22"); - c.add("333"); - c.add("4444"); - c.add("55555"); - c.add("666666"); - c.add("7777777"); - c.add("88888888"); - return c; - } - - private Collection<String> buildUnmodifiableCollection() { - return Collections.unmodifiableCollection(this.buildCollection()); - } - - public void testInvalidTransformationIterator() { - // missing method override - Iterator<Integer> iterator = new TransformationIterator<String, Integer>(this.buildCollection().iterator()); - boolean exCaught = false; - try { - Integer integer = iterator.next(); - fail("invalid integer: " + integer); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationListIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationListIteratorTests.java deleted file mode 100644 index 28863e7428..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TransformationListIteratorTests.java +++ /dev/null @@ -1,322 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.Transformer; -import org.eclipse.jpt.utility.internal.iterators.TransformationListIterator; - -@SuppressWarnings("nls") -public class TransformationListIteratorTests extends TestCase { - - public TransformationListIteratorTests(String name) { - super(name); - } - - public void testHasNextAndHasPrevious() { - int i = 0; - ListIterator<Integer> stream = this.buildIterator(); - - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(8, i); - - while (stream.hasPrevious()) { - stream.previous(); - i--; - } - assertEquals(0, i); - } - - public void testHasNextAndHasPreviousUpcast() { - int i = 0; - ListIterator<Object> stream = this.buildIteratorUpcast(); - - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(8, i); - - while (stream.hasPrevious()) { - stream.previous(); - i--; - } - assertEquals(0, i); - } - - public void testInnerHasNextAndHasPrevious() { - int i = 0; - ListIterator<Integer> stream = this.buildInnerIterator(); - - while (stream.hasNext()) { - stream.next(); - i++; - } - assertEquals(8, i); - - while (stream.hasPrevious()) { - stream.previous(); - i--; - } - assertEquals(0, i); - } - - public void testNextAndPrevious() { - int i = 0; - ListIterator<Integer> stream = this.buildIterator(); - - while (stream.hasNext()) { - assertEquals(++i, stream.next().intValue()); - } - - ++i; - - while (stream.hasPrevious()) { - assertEquals(--i, stream.previous().intValue()); - } - } - - public void testInnerNextAndPrevious() { - int i = 0; - ListIterator<Integer> stream = this.buildInnerIterator(); - - while (stream.hasNext()) { - assertEquals(++i, stream.next().intValue()); - } - - ++i; - - while (stream.hasPrevious()) { - assertEquals(--i, stream.previous().intValue()); - } - } - - public void testNextIndexAndPreviousIndex() { - int i = -1; - ListIterator<Integer> stream = this.buildIterator(); - - while (stream.hasNext()) { - assertEquals(++i, stream.nextIndex()); - stream.next(); - } - - ++i; - - while (stream.hasPrevious()) { - assertEquals(--i, stream.previousIndex()); - stream.previous(); - } - } - - public void testInnerNextIndexAndPreviousIndex() { - int i = -1; - ListIterator<Integer> stream = this.buildInnerIterator(); - - while (stream.hasNext()) { - assertEquals(++i, stream.nextIndex()); - stream.next(); - } - - ++i; - - while (stream.hasPrevious()) { - assertEquals(--i, stream.previousIndex()); - stream.previous(); - } - } - - public void testRemove() { - List<String> l = this.buildList(); - for (ListIterator<Integer> stream = this.buildInnerTransformationListIterator(l.listIterator()); stream.hasNext();) { - if (stream.next().intValue() == 3) { - stream.remove(); - } - } - assertEquals("nothing removed", this.buildList().size() - 1, l.size()); - assertFalse("element still in list", l.contains("333")); - assertTrue("wrong element removed", l.contains("22")); - } - - public void testInnerRemove() { - List<String> l = this.buildList(); - for (ListIterator<Integer> stream = this.buildTransformationListIterator(l.listIterator(), this.buildTransformer()); stream.hasNext();) { - if (stream.next().intValue() == 3) { - stream.remove(); - } - } - assertEquals("nothing removed", this.buildList().size() - 1, l.size()); - assertFalse("element still in list", l.contains("333")); - assertTrue("wrong element removed", l.contains("22")); - } - - public void testUnsupportedOperationExceptionOnAdd() { - ListIterator<Integer> stream = this.buildIterator(); - boolean exCaught = false; - try { - stream.add(new Integer(0)); - fail("exception not thrown"); - } catch (UnsupportedOperationException e) { - exCaught = true; - } - assertTrue(exCaught); - } - - public void testUnsupportedOperationExceptionOnSet() { - ListIterator<Integer> stream = this.buildIterator(); - boolean exCaught = false; - try { - stream.set(new Integer(0)); - fail("exception not thrown"); - } catch (UnsupportedOperationException e) { - exCaught = true; - } - assertTrue(exCaught); - } - - public void testNoSuchElementException() { - boolean exCaught = false; - ListIterator<Integer> stream = this.buildIterator(); - Integer integer = null; - while (stream.hasNext()) { - integer = stream.next(); - } - try { - integer = stream.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown: " + integer, exCaught); - } - - public void testUnsupportedOperationException() { - boolean exCaught = false; - for (Iterator<Integer> stream = this.buildUnmodifiableIterator(); stream.hasNext();) { - int i = stream.next().intValue(); - if (i == 3) { - try { - stream.remove(); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - } - } - assertTrue("UnsupportedOperationException not thrown", exCaught); - } - - public void testIllegalStateException() { - boolean exCaught = false; - try { - this.buildIterator().remove(); - } catch (IllegalStateException ex) { - exCaught = true; - } - assertTrue("IllegalStateException not thrown", exCaught); - } - - private ListIterator<Integer> buildIterator() { - return this.buildTransformationListIterator(this.buildNestedIterator(), this.buildTransformer()); - } - - private ListIterator<Object> buildIteratorUpcast() { - return this.buildTransformationListIteratorUpcast(this.buildNestedIterator(), this.buildTransformerUpcast()); - } - - private ListIterator<Integer> buildInnerIterator() { - return this.buildInnerTransformationListIterator(this.buildNestedIterator()); - } - - private ListIterator<Integer> buildUnmodifiableIterator() { - return this.buildTransformationListIterator(this.buildUnmodifiableNestedIterator(), this.buildTransformer()); - } - - private ListIterator<Integer> buildTransformationListIterator(ListIterator<String> nestedIterator, Transformer<String, Integer> transformer) { - return new TransformationListIterator<String, Integer>(nestedIterator, transformer); - } - - private ListIterator<Object> buildTransformationListIteratorUpcast(ListIterator<String> nestedIterator, Transformer<Object, Integer> transformer) { - return new TransformationListIterator<Object, Object>(nestedIterator, transformer); - } - - private Transformer<String, Integer> buildTransformer() { - // transform each string into an integer with a value of the string's length - return new Transformer<String, Integer>() { - public Integer transform(String next) { - return new Integer(next.length()); - } - }; - } - - private Transformer<Object, Integer> buildTransformerUpcast() { - // transform each string into an integer with a value of the string's length - return new Transformer<Object, Integer>() { - public Integer transform(Object next) { - return new Integer(((String) next).length()); - } - }; - } - - private ListIterator<Integer> buildInnerTransformationListIterator(ListIterator<String> nestedIterator) { - // transform each string into an integer with a value of the string's length - return new TransformationListIterator<String, Integer>(nestedIterator) { - @Override - protected Integer transform(String next) { - return new Integer(next.length()); - } - }; - } - - private ListIterator<String> buildNestedIterator() { - return this.buildList().listIterator(); - } - - private ListIterator<String> buildUnmodifiableNestedIterator() { - return this.buildUnmodifiableList().listIterator(); - } - - private List<String> buildList() { - List<String> l = new ArrayList<String>(); - l.add("1"); - l.add("22"); - l.add("333"); - l.add("4444"); - l.add("55555"); - l.add("666666"); - l.add("7777777"); - l.add("88888888"); - return l; - } - - private List<String> buildUnmodifiableList() { - return Collections.unmodifiableList(this.buildList()); - } - - public void testInvalidTransformationListIterator() { - // missing method override - Iterator<Integer> iterator = new TransformationListIterator<String, Integer>(this.buildList().listIterator()); - boolean exCaught = false; - try { - Integer integer = iterator.next(); - fail("invalid integer: " + integer); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - -} diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TreeIteratorTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TreeIteratorTests.java deleted file mode 100644 index cd658d2bb6..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/TreeIteratorTests.java +++ /dev/null @@ -1,211 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.iterators; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.NoSuchElementException; -import junit.framework.TestCase; -import org.eclipse.jpt.utility.internal.iterators.TreeIterator; -import org.eclipse.jpt.utility.tests.internal.TestTools; - -@SuppressWarnings("nls") -public class TreeIteratorTests extends TestCase { - /** this will be populated with all the nodes created for the test */ - Collection<TreeNode> nodes = new ArrayList<TreeNode>(); - - public TreeIteratorTests(String name) { - super(name); - } - - @Override - protected void tearDown() throws Exception { - TestTools.clear(this); - super.tearDown(); - } - - public void testHasNext1() { - this.verifyHasNext(this.buildTreeIterator1()); - } - - public void testHasNext2() { - this.verifyHasNext(this.buildTreeIterator2()); - } - - private void verifyHasNext(Iterator<TreeNode> iterator) { - int i = 0; - while (iterator.hasNext()) { - iterator.next(); - i++; - } - assertEquals(this.nodes.size(), i); - } - - public void testNext1() { - this.verifyNext(this.buildTreeIterator1()); - } - - public void testNext2() { - this.verifyNext(this.buildTreeIterator2()); - } - - private void verifyNext(Iterator<TreeNode> iterator) { - while (iterator.hasNext()) { - assertTrue("bogus element", this.nodes.contains(iterator.next())); - } - } - - public void testNoSuchElementException1() { - this.verifyNoSuchElementException(this.buildTreeIterator1()); - } - - public void testNoSuchElementException2() { - this.verifyNoSuchElementException(this.buildTreeIterator2()); - } - - private void verifyNoSuchElementException(Iterator<TreeNode> iterator) { - boolean exCaught = false; - while (iterator.hasNext()) { - iterator.next(); - } - try { - iterator.next(); - } catch (NoSuchElementException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - - public void testRemove1() { - this.verifyRemove(this.buildTreeIterator1()); - } - - public void testRemove2() { - this.verifyRemove(this.buildTreeIterator2()); - } - - private void verifyRemove(Iterator<TreeNode> iterator) { - String parentName = "child 2"; - String childName = "grandchild 2A"; - int startSize = this.childrenSize(parentName); - while (iterator.hasNext()) { - TreeNode node = iterator.next(); - if (node.getName().equals(childName)) { - iterator.remove(); - } - } - int endSize = this.childrenSize(parentName); - assertEquals(startSize - 1, endSize); - } - - private int childrenSize(String nodeName) { - for (Iterator<TreeNode> stream = this.nodes.iterator(); stream.hasNext();) { - TreeNode node = stream.next(); - if (node.getName().equals(nodeName)) { - return node.childrenSize(); - } - } - throw new IllegalArgumentException(nodeName); - } - - /** - * build a tree iterator with an explicit midwife - */ - private Iterator<TreeNode> buildTreeIterator1() { - return new TreeIterator<TreeNode>(this.buildTree(), this.buildMidwife()); - } - - private TreeIterator.Midwife<TreeNode> buildMidwife() { - return new TreeIterator.Midwife<TreeNode>() { - public Iterator<TreeNode> children(TreeNode next) { - return next.children(); - } - }; - } - - /** - * build a tree iterator with an override - */ - private Iterator<TreeNode> buildTreeIterator2() { - return new TreeIterator<TreeNode>(this.buildTree()) { - @Override - public Iterator<TreeNode> children(TreeNode next) { - return next.children(); - } - }; - } - - public void testInvalidTreeIterator() { - // missing method override - Iterator<TreeNode> iterator = new TreeIterator<TreeNode>(this.buildTree()); - boolean exCaught = false; - try { - TreeNode tn = iterator.next(); - fail("invalid tree node: " + tn); - } catch (UnsupportedOperationException ex) { - exCaught = true; - } - assertTrue("NoSuchElementException not thrown", exCaught); - } - - private TreeNode buildTree() { - TreeNode root = new TreeNode("root"); - TreeNode child1 = new TreeNode(root, "child 1"); - new TreeNode(child1, "grandchild 1A"); - TreeNode child2 = new TreeNode(root, "child 2"); - new TreeNode(child2, "grandchild 2A"); - TreeNode grandchild2B = new TreeNode(child2, "grandchild 2B"); - new TreeNode(grandchild2B, "great-grandchild 2B1"); - new TreeNode(grandchild2B, "great-grandchild 2B2"); - TreeNode grandchild2C = new TreeNode(child2, "grandchild 2C"); - new TreeNode(grandchild2C, "great-grandchild 2C1"); - new TreeNode(root, "child 3"); - return root; - } - - private class TreeNode { - private String name; - private Collection<TreeNode> children = new ArrayList<TreeNode>(); - - public TreeNode(String name) { - super(); - TreeIteratorTests.this.nodes.add(this); // log node - this.name = name; - } - - public TreeNode(TreeNode parent, String name) { - this(name); - parent.addChild(this); - } - - public String getName() { - return this.name; - } - - private void addChild(TreeNode child) { - this.children.add(child); - } - - public Iterator<TreeNode> children() { - return this.children.iterator(); - } - - public int childrenSize() { - return this.children.size(); - } - - @Override - public String toString() { - return "TreeNode(" + this.name + ")"; - } - } - -} |