@Test
  public void testZipFileIter_HasNextNone() throws Exception {
    GpxZipInputStream zipInputStream = PowerMock.createMock(GpxZipInputStream.class);
    Aborter aborter = PowerMock.createMock(Aborter.class);

    expect(aborter.isAborted()).andReturn(false);
    expect(zipInputStream.getNextEntry()).andReturn(null);

    PowerMock.replayAll();
    assertFalse(new ZipFileIter(zipInputStream, aborter, null).hasNext());
    PowerMock.verifyAll();
  }
  @Test
  public void testZipFileIter_HasNextTrue() throws Exception {
    GpxZipInputStream zipInputStream = PowerMock.createMock(GpxZipInputStream.class);
    ZipEntry zipEntry = PowerMock.createMock(ZipEntry.class);
    Aborter aborter = PowerMock.createMock(Aborter.class);
    ZipInputFileTester zipInputFileTester = PowerMock.createMock(ZipInputFileTester.class);

    expect(aborter.isAborted()).andReturn(false);
    expect(zipInputStream.getNextEntry()).andReturn(zipEntry);
    expect(zipInputFileTester.isValid(zipEntry)).andReturn(true);

    PowerMock.replayAll();
    assertTrue(new ZipFileIter(zipInputStream, aborter, zipInputFileTester, null).hasNext());
    PowerMock.verifyAll();
  }
 @Override
 public boolean hasNext() throws IOException {
   // Iterate through zip file entries.
   if (mNextZipEntry == null) {
     do {
       if (mAborterProvider.get().isAborted()) break;
       mNextZipEntry = mZipInputStream.getNextEntry();
     } while (mNextZipEntry != null && !mZipInputFileTester.isValid(mNextZipEntry));
   }
   return mNextZipEntry != null;
 }
  @Test
  public void testZipFileIter_Next() throws Exception {
    GpxReader gpxReader = PowerMock.createMock(GpxReader.class);
    GpxZipInputStream zipInputStream = PowerMock.createMock(GpxZipInputStream.class);
    ZipEntry zipEntry = PowerMock.createMock(ZipEntry.class);
    InputStreamReader inputStreamReader = PowerMock.createMock(InputStreamReader.class);
    InputStream inputStream = PowerMock.createMock(InputStream.class);
    Aborter aborter = PowerMock.createMock(Aborter.class);
    ZipInputFileTester zipInputFileTester = PowerMock.createMock(ZipInputFileTester.class);

    expect(zipEntry.getName()).andReturn("foo.gpx");
    expect(zipInputStream.getStream()).andReturn(inputStream);
    PowerMock.expectNew(InputStreamReader.class, inputStream).andReturn(inputStreamReader);
    PowerMock.expectNew(GpxReader.class, "foo.gpx", inputStreamReader).andReturn(gpxReader);

    PowerMock.replayAll();
    ZipFileIter iter = new ZipFileIter(zipInputStream, aborter, zipInputFileTester, zipEntry);
    assertEquals(gpxReader, iter.next());
    PowerMock.verifyAll();
  }
 @Override
 public IGpxReader next() throws IOException {
   final String name = mNextZipEntry.getName();
   mNextZipEntry = null;
   return new GpxReader(name, new InputStreamReader(mZipInputStream.getStream()));
 }