package data.io; import static org.junit.Assert.*; import java.util.Iterator; import org.apache.log4j.PropertyConfigurator; import org.junit.BeforeClass; import org.junit.Test; import data.MVDataEntry; import data.io.stub.StubDataReader; public class SafeDataReaderTest { private static final String LOG_PROPERTIES_FILE = "conf/log4j.properties"; @BeforeClass public static void setup() { PropertyConfigurator.configure(LOG_PROPERTIES_FILE); } @Test public void testNoErrors() { MVDataEntry testEntries[] = new MVDataEntry[5]; for (int i=0;i<5;i++) { testEntries[i] = new MVDataEntry("line"+(i+1)); testEntries[i].put("attr1", "value"+(i+1)); } StubDataReader src = new StubDataReader("testNoSkipErrors_src", testEntries); StubDataReader expected = new StubDataReader("testNoSkipErrors_expected", testEntries); SafeDataReader reader = new SafeDataReader(src, false); // Test twice to check if asking a new iterator "rewinds" correctly for (int i=0;i<2;i++) { //System.out.println("Loop " + (i+1)); Iterator readerIt = reader.iterator(); for ( MVDataEntry e: expected) { assertTrue(readerIt.hasNext()); MVDataEntry r = readerIt.next(); //System.out.println(e + " / " + r); assertEquals(e, r); } assertFalse(readerIt.hasNext()); } } //TODO Real tests with messy input readers (null values, exception, hasNext/next() incoherence) }