package org.embulk.standards; import org.junit.Rule; import org.junit.Test; import static org.junit.Assert.assertEquals; import java.nio.charset.Charset; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.joda.time.DateTimeZone; import org.embulk.EmbulkTestRuntime; import org.embulk.config.ConfigException; import org.embulk.config.ConfigSource; import org.embulk.spi.Exec; import org.embulk.spi.util.Newline; public class TestCsvParserPlugin { @Rule public EmbulkTestRuntime runtime = new EmbulkTestRuntime(); @Test public void checkDefaultValues() { ConfigSource config = Exec.newConfigSource() .set("columns", ImmutableList.of( ImmutableMap.of( "name", "date_code", "type", "string")) ); CsvParserPlugin.PluginTask task = config.loadConfig(CsvParserPlugin.PluginTask.class); assertEquals(Charset.forName("utf-8"), task.getCharset()); assertEquals(Newline.CRLF, task.getNewline()); assertEquals(false, task.getHeaderLine().or(false)); assertEquals(",", task.getDelimiter()); assertEquals(Optional.of(new CsvParserPlugin.QuoteCharacter('\"')), task.getQuoteChar()); assertEquals(false, task.getAllowOptionalColumns()); assertEquals(DateTimeZone.UTC, task.getDefaultTimeZone()); assertEquals("%Y-%m-%d %H:%M:%S.%N %z", task.getDefaultTimestampFormat()); } @Test(expected = ConfigException.class) public void checkColumnsRequired() { ConfigSource config = Exec.newConfigSource(); config.loadConfig(CsvParserPlugin.PluginTask.class); } @Test public void checkLoadConfig() { ConfigSource config = Exec.newConfigSource() .set("charset", "utf-16") .set("newline", "LF") .set("header_line", true) .set("delimiter", "\t") .set("quote", "\\") .set("allow_optional_columns", true) .set("columns", ImmutableList.of( ImmutableMap.of( "name", "date_code", "type", "string")) ); CsvParserPlugin.PluginTask task = config.loadConfig(CsvParserPlugin.PluginTask.class); assertEquals(Charset.forName("utf-16"), task.getCharset()); assertEquals(Newline.LF, task.getNewline()); assertEquals(true, task.getHeaderLine().or(false)); assertEquals("\t", task.getDelimiter()); assertEquals(Optional.of(new CsvParserPlugin.QuoteCharacter('\\')), task.getQuoteChar()); assertEquals(true, task.getAllowOptionalColumns()); } }