package com.klarna.hiverunner.data;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class TsvFileParserTest {
@Test
public void parsesTsv() {
File dataFile = new File("src/test/resources/data/data.tsv");
TsvFileParser tsvFileParser = new TsvFileParser();
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1", "e1" }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", "c2", "d2", "e2" }, result.get(1));
}
@Test(expected = IllegalStateException.class)
public void parsesTsvNotEnoughFieldsInFile() {
File dataFile = new File("src/test/resources/data/data.tsv");
TsvFileParser tsvFileParser = new TsvFileParser();
tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e", "f"));
}
@Test
public void parsesTsvSubSelectFields() {
File dataFile = new File("src/test/resources/data/data.tsv");
TsvFileParser tsvFileParser = new TsvFileParser();
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1" }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", "c2", "d2" }, result.get(1));
}
@Test
public void parsesCsvWithEmptyFields() {
File dataFile = new File("src/test/resources/data/data.csv");
TsvFileParser tsvFileParser = new TsvFileParser().withDelimiter(",");
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1", null }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", null, "d2", "e2" }, result.get(1));
}
@Test
public void csvWithCustomNullValue() {
File dataFile = new File("src/test/resources/data/dataWithCustomNullValue.csv");
TsvFileParser tsvFileParser = new TsvFileParser().withDelimiter(",").withNullValue("NULL");
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1", null }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", null, "d2", "e2" }, result.get(1));
}
@Test
public void tsvWithHeader() {
File dataFile = new File("src/test/resources/data/dataWithHeader.tsv");
TsvFileParser tsvFileParser = new TsvFileParser().withHeader();
assertTrue(tsvFileParser.hasColumnNames());
assertEquals(tsvFileParser.getColumnNames(dataFile), Arrays.asList("a", "b", "c", "d", "e"));
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1", "e1" }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", "c2", "d2", "e2" }, result.get(1));
}
@Test
public void csvWithHeader() {
File dataFile = new File("src/test/resources/data/dataWithHeader.csv");
TsvFileParser tsvFileParser = new TsvFileParser().withDelimiter(",").withHeader();
assertTrue(tsvFileParser.hasColumnNames());
assertEquals(tsvFileParser.getColumnNames(dataFile), Arrays.asList("a", "b", "c", "d", "e"));
List<Object[]> result = tsvFileParser.parse(dataFile, null, Arrays.asList("a", "b", "c", "d", "e"));
assertEquals(2, result.size());
assertArrayEquals(new String[] { "a1", "b1", "c1", "d1", null }, result.get(0));
assertArrayEquals(new String[] { "a2", "b2", null, "d2", "e2" }, result.get(1));
}
}