package nl.helixsoft.recordstream;
import java.io.Reader;
import java.io.StringReader;
import junit.framework.TestCase;
public class TestTsvRecordStream extends TestCase
{
public void testNormal() throws StreamException
{
Reader reader = new StringReader ("a\tb\tc\n1\t2\t3\n");
TsvRecordStream rs = TsvRecordStream.open(reader).get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("a"));
assertEquals("2", r.get("b"));
assertEquals("3", r.get("c"));
r = rs.getNext();
assertNull(r);
}
public void testTooFewCols() throws StreamException
{
Reader reader = new StringReader ("a\tb\tc\n1\t2\n");
TsvRecordStream rs = TsvRecordStream.open(reader).get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("a"));
assertEquals("2", r.get("b"));
assertNull(r.get("c"));
r = rs.getNext();
assertNull(r);
}
public void testTooManyCols() throws StreamException
{
Reader reader = new StringReader ("a\tb\tc\n1\t2\t3\t4\n");
TsvRecordStream rs = TsvRecordStream.open(reader).get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("a"));
assertEquals("2", r.get("b"));
assertEquals("3", r.get("c"));
// the fourth value will be ignored. A warning message will be logged here.
r = rs.getNext();
assertNull(r);
}
public void testComments() throws StreamException
{
Reader reader = new StringReader ("#commentline\nx\ty\tz\n1\t2\t3\n");
TsvRecordStream rs = TsvRecordStream.open(reader).filterComments().get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("x"));
assertEquals("2", r.get("y"));
assertEquals("3", r.get("z"));
r = rs.getNext();
assertNull(r);
}
public void testComma() throws StreamException
{
Reader reader = new StringReader ("\"x\",\"y\",\"z\"\n1,2,3\n\"Hello, World\",\"\"\"Hello World\"\"\",Goodbye World");
TsvRecordStream rs = TsvRecordStream.open(reader).removeOptionalQuotes().commaSeparated().get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("x"));
assertEquals("2", r.get("y"));
assertEquals("3", r.get("z"));
r = rs.getNext();
assertEquals("Hello, World", r.get("x"));
assertEquals("\"Hello World\"", r.get("y"));
assertEquals("Goodbye World", r.get("z"));
r = rs.getNext();
assertNull(r);
}
public void testCustom() throws StreamException
{
Reader reader = new StringReader ("x;y;z\n1;2;3\n");
TsvRecordStream rs = TsvRecordStream.open(reader).customSeparator(";").get();
Record r;
r = rs.getNext();
assertEquals("1", r.get("x"));
assertEquals("2", r.get("y"));
assertEquals("3", r.get("z"));
r = rs.getNext();
assertNull(r);
}
}