/** * {@inheritDoc} * * @see org.modeshape.graph.request.CompositeRequest#iterator() */ @Override public Iterator<Request> iterator() { return createIterator(); }
@Test public void shouldCreateEmptyIteratorIfDoneCalledAfterObtainingIterator() { Iterator<Request> iter = channel.createIterator(); channel.close(); assertThat(iter.hasNext(), is(false)); }
@Test public void shouldCreateEmptyIteratorIfDoneCalledBeforeObtainingIterator() { channel.close(); Iterator<Request> iter = channel.createIterator(); assertThat(iter.hasNext(), is(false)); }
@Test public void shouldCreateIteratorOverRequestsAddedToChannelAfterBeginningIteration() { Iterator<Request> iter = channel.createIterator(); // Add the requests in a separate thread ... new Thread(new AddRequestsRunnable(channel, requests, 100)).start(); // Start iterating ... for (Request expected : requests) { assertThat(iter.hasNext(), is(true)); // blocks assertThat(iter.next(), is(sameInstance(expected))); } assertThat(iter.hasNext(), is(false)); }
@Test public void shouldCreateIteratorOverRequestsAddedToChannelAfterObtainingIterator() { Iterator<Request> iter = channel.createIterator(); // Add the requests ... for (Request request : requests) { channel.add(request); } // Call done ... channel.close(); // Start iterating ... for (Request expected : requests) { assertThat(iter.hasNext(), is(true)); assertThat(iter.next(), is(sameInstance(expected))); } assertThat(iter.hasNext(), is(false)); }