package org.openflamingo.mapreduce.parser; import org.junit.Assert; import org.junit.Test; /** * CsvRowParser에 대한 단위 테스트 케이스. * * @author Edward KIM * @since 0.1 */ public class CsvRowParserTest { @Test public void parse() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); } @Test public void parseWithMultiCharDelimiter1() { CsvRowParser parser = new CsvRowParser(); parser.setInputDelimiter("::"); parser.parse("a::b::c::d"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("a,b,c,d", parser.toRow()); } @Test public void parseWithMultiCharDelimiter2() { CsvRowParser parser = new CsvRowParser(); parser.setInputDelimiter(":::"); parser.parse("a:::b:::c:::d"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("a,b,c,d", parser.toRow()); } @Test public void get() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals("a", parser.get(0)); Assert.assertEquals("b", parser.get(1)); Assert.assertEquals("c", parser.get(2)); Assert.assertEquals("d", parser.get(3)); } @Test public void clear() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); parser.clear(); Assert.assertEquals(0, parser.size()); } @Test public void removeSingle() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); parser.remove(1); Assert.assertEquals(3, parser.size()); Assert.assertEquals("a", parser.get(0)); Assert.assertEquals("c", parser.get(1)); Assert.assertEquals("d", parser.get(2)); } @Test public void removeMultiple() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); parser.remove(1, 2); Assert.assertEquals(2, parser.size()); Assert.assertEquals("a", parser.get(0)); Assert.assertEquals("d", parser.get(1)); } @Test public void insert() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); parser.insert("e", 1); Assert.assertEquals(5, parser.size()); Assert.assertEquals("a", parser.get(0)); Assert.assertEquals("e", parser.get(1)); Assert.assertEquals("b", parser.get(2)); Assert.assertEquals("c", parser.get(3)); Assert.assertEquals("d", parser.get(4)); } @Test public void change() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); parser.change("e", 1); Assert.assertEquals(4, parser.size()); Assert.assertEquals("a", parser.get(0)); Assert.assertEquals("e", parser.get(1)); Assert.assertEquals("c", parser.get(2)); Assert.assertEquals("d", parser.get(3)); } @Test public void toRow() { CsvRowParser parser = new CsvRowParser(); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("a,b,c,d", parser.toRow()); parser.insert("e", 1); Assert.assertEquals("a,e,b,c,d", parser.toRow()); parser.remove(1, 2); Assert.assertEquals("a,c,d", parser.toRow()); parser.clear(); Assert.assertEquals("", parser.toRow()); } @Test public void constructor() { CsvRowParser parser = new CsvRowParser("a,b,c,"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("", parser.get(3)); } @Test(expected = IllegalArgumentException.class) public void constructorIfDifferentColumnSize() { CsvRowParser parser = new CsvRowParser(5); parser.parse("a,b,c,d"); Assert.assertEquals(4, parser.size()); } @Test public void constructorIfSetDelimiter() { CsvRowParser parser = new CsvRowParser(1, "\t", "|"); parser.parse("a,b,c,d"); Assert.assertEquals(1, parser.size()); Assert.assertEquals("a,b,c,d", parser.toRow()); Assert.assertEquals("a,b,c,d", parser.toRowText().toString()); parser.parse("a,b,c,d\te,f,g,h"); Assert.assertEquals(2, parser.size()); Assert.assertEquals("a,b,c,d|e,f,g,h", parser.toRow()); Assert.assertEquals("a,b,c,d|e,f,g,h", parser.toRowText().toString()); } @Test public void constructorIfEmptyColumnExists() { CsvRowParser parser = new CsvRowParser(); Assert.assertEquals(0, parser.size()); parser.parse(",b,c,d"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("", parser.get(0)); parser.parse(",,c,d"); Assert.assertEquals(4, parser.size()); Assert.assertEquals("", parser.get(0)); Assert.assertEquals("", parser.get(1)); } }