package org.activityinfo.ui.client.component.importDialog.data; import com.google.common.base.Charsets; import com.google.common.base.Joiner; import com.google.common.io.Resources; import org.activityinfo.core.shared.importing.source.SourceColumn; import org.junit.Test; import java.io.IOException; import java.util.List; import static com.google.common.io.Resources.getResource; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; public class RowParserTest { @Test public void simpleCsv() { List<PastedRow> rows = new RowParser("hello,brave,new,world\n1,2,3,4\n5,6,7,8", ',').parseAllRows(); assertThat(rows.size(), equalTo(3)); assertThat(rows.get(0).getColumnValue(0), equalTo("hello")); assertThat(rows.get(0).getColumnValue(1), equalTo("brave")); assertThat(rows.get(0).getColumnValue(3), equalTo("world")); assertThat(rows.get(1).getColumnValue(0), equalTo("1")); assertThat(rows.get(1).getColumnValue(1), equalTo("2")); assertThat(rows.get(1).getColumnValue(3), equalTo("4")); assertThat(rows.get(2).getColumnValue(3), equalTo("8")); } @Test public void quotedFields() { List<PastedRow> rows = new RowParser("\"hello, fred\",bob,\"hello, there\"\na,b,c", ',').parseAllRows(); assertThat(rows.size(), equalTo(2)); assertThat(rows.get(0).getColumnValue(0), equalTo("hello, fred")); assertThat(rows.get(0).getColumnValue(1), equalTo("bob")); assertThat(rows.get(0).getColumnValue(2), equalTo("hello, there")); assertThat(rows.get(1).getColumnValue(0), equalTo("a")); } @Test public void quotedFieldsWithNewlines() { List<PastedRow> rows = new RowParser( "1,Jane Goodall,\"304 E42nd street\nNew York, NY\nUSA\"\n" + "2,Richard Feynman,\"401 1st Street\nCaltech\nUSA\"", ',').parseAllRows(); System.out.println(Joiner.on('\n').join(rows)); assertThat(rows.size(), equalTo(2)); assertThat(rows.get(0).getColumnValue(2), equalTo("304 E42nd street\n" + "New York, NY\n" + "USA")); assertThat(rows.get(1).getColumnValue(0), equalTo("2")); } @Test public void qisCsvColumns() throws IOException { PastedTable source = new PastedTable( Resources.toString(getResource("org/activityinfo/core/shared/importing/qis.csv"), Charsets.UTF_8)); final List<SourceColumn> columns = source.getColumns(); System.out.println(Joiner.on('\n').join(columns)); assertThat(columns.size(), equalTo(47)); } }