public static <R> void checkReaderIteration(DatasetReader<R> reader,
int expectedRecordCount, RecordValidator<R> validator) {
int recordCount = 0;
Assert.assertTrue("Reader is not open", reader.isOpen());
Assert.assertTrue("Reader has no records, expected " + expectedRecordCount,
(expectedRecordCount == 0) || reader.hasNext());
for (R record : reader) {
validator.validate(record, recordCount);
Assert.assertNotNull(record);
reader.hasNext();
recordCount++;
}
Assert.assertFalse("Reader is empty, but hasNext is true",
reader.hasNext());
try {
reader.next();
Assert.fail("Reader did not throw NoSuchElementException");
} catch (NoSuchElementException ex) {
}
Assert.assertTrue("Reader is empty, but should be open", reader.isOpen());
Assert.assertEquals("Incorrect number of records",
expectedRecordCount, recordCount);
}