ConcatReader extends NativeReader<T> { @Override public ConcatIterator<T> iterator() throws IOException { return new ConcatIterator<T>( readerFactory, options, executionContext, operationContext, sources); } ConcatReader(
      ReaderFactory readerFactory,
      PipelineOptions options,
      DataflowExecutionContext executionContext,
      DataflowOperationContext operationContext,
      List<Source> sources); Iterator<Source> getSources(); @Override ConcatIterator<T> iterator(); static final String SOURCE_NAME; }
@Test public void testReadEmptyList() throws Exception { ConcatReader<String> concat = new ConcatReader<>( registry, null , null , TestOperationContext.create(), new ArrayList<Source>()); ConcatReader.ConcatIterator<String> iterator = concat.iterator(); assertNotNull(iterator); assertFalse(concat.iterator().start()); expectedException.expect(NoSuchElementException.class); iterator.getCurrent(); }