TsvCsvImporter now uses the CSV test methods to also test the TSV importer. Separate tests for the two importers are no longer required.

git-svn-id: http://google-refine.googlecode.com/svn/trunk@1856 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
Iain Sproat 2010-11-11 13:06:39 +00:00
parent 37a6f938c3
commit 4f9dc38066

View File

@ -88,9 +88,12 @@ public class TsvCsvImporterTests extends RefineTest {
properties = null; properties = null;
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readJustColumns(String sep){ public void readJustColumns(String sep){
String input = "col1,col2,col3"; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
@ -104,9 +107,12 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3"); Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readUnseperatedData(String sep){ public void readUnseperatedData(String sep){
String input = "value1,value2,value3"; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "value1" + inputSeparator + "value2" + inputSeparator + "value3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
@ -121,16 +127,21 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(0).value, input); Assert.assertEquals(project.rows.get(0).cells.get(0).value, input);
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSimpleData_CSV_1Header_1Row(String sep){ public void readSimpleData_CSV_1Header_1Row(String sep){
String input = "col1,col2,col3\n" + //create input to test with
"data1,data2,data3"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -142,37 +153,20 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSimpleData_TSV_1Header_1Row(){
String input = "col1\tcol2\tcol3\n" +
"data1\tdata2\tdata3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try {
SUT.read(lnReader, project, "\t", -1, 0, 0, 1, false, true, false);
} catch (IOException e) {
Assert.fail();
}
Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
Assert.assertEquals(project.rows.size(), 1);
Assert.assertEquals(project.rows.get(0).cells.size(), 3);
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1");
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
}
@Test(dataProvider = "CSV-or-null")
public void readSimpleData_CSV_1Header_1Row_GuessValues(String sep){ public void readSimpleData_CSV_1Header_1Row_GuessValues(String sep){
String input = "col1,col2,col3\n" + //create input to test with
"data1,234,data3"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"data1" + inputSeparator + "234" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, true, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, true, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -185,15 +179,19 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSimpleData_0Header_1Row(String sep){ public void readSimpleData_0Header_1Row(String sep){
String input = "data1,data2,data3"; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "Column"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "Column");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "Column2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "Column2");
@ -205,15 +203,19 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(groups = { }, dataProvider = "CSV-or-null") @Test(groups = { }, dataProvider = "CSV-TSV-AutoDetermine")
public void readDoesNotTrimLeadingTrailingWhitespace(String sep){ public void readDoesNotTrimLeadingTrailingWhitespace(String sep){
String input = " data1 , 3.4 , data3 "; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = " data1 " + inputSeparator + " 3.4 " + inputSeparator + " data3 ";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.rows.size(), 1); Assert.assertEquals(project.rows.size(), 1);
Assert.assertEquals(project.rows.get(0).cells.size(), 3); Assert.assertEquals(project.rows.get(0).cells.size(), 3);
@ -222,15 +224,19 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3 "); Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3 ");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readDoesNotTrimLeadingWhitespace(String sep){ public void readDoesNotTrimLeadingWhitespace(String sep){
String input = " data1, 12, data3"; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = " data1" + inputSeparator + " 12" + inputSeparator + " data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 0, true, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 0, true, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.rows.size(), 1); Assert.assertEquals(project.rows.size(), 1);
Assert.assertEquals(project.rows.get(0).cells.size(), 3); Assert.assertEquals(project.rows.get(0).cells.size(), 3);
@ -239,15 +245,19 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readCanAddNull(String sep){ public void readCanAddNull(String sep){
String input = " data1,, data3"; //create input to test with
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = " data1" + inputSeparator + inputSeparator + " data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 0, true, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 0, true, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.rows.size(), 1); Assert.assertEquals(project.rows.size(), 1);
Assert.assertEquals(project.rows.get(0).cells.size(), 3); Assert.assertEquals(project.rows.get(0).cells.size(), 3);
@ -256,17 +266,21 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, " data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSimpleData_2Header_1Row(String sep){ public void readSimpleData_2Header_1Row(String sep){
String input = "col1,col2,col3\n" + //create input to test with
"sub1,sub2,sub3\n" + String inputSeparator = sep == "\t" ? "\t" : ",";
"data1,data2,data3"; String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"sub1" + inputSeparator + "sub2" + inputSeparator + "sub3\n" +
"data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 2, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 2, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1 sub1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1 sub1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2 sub2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2 sub2");
@ -278,16 +292,20 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSimpleData_RowLongerThanHeader(String sep){ public void readSimpleData_RowLongerThanHeader(String sep){
String input = "col1,col2,col3\n" + //create input
"data1,data2,data3,data4,data5,data6"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"data1" + inputSeparator + "data2" + inputSeparator + "data3" + inputSeparator + "data4" + inputSeparator + "data5" + inputSeparator + "data6";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 6); Assert.assertEquals(project.columnModel.columns.size(), 6);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -305,16 +323,20 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(5).value, "data6"); Assert.assertEquals(project.rows.get(0).cells.get(5).value, "data6");
} }
@Test(groups = { }, dataProvider = "CSV-or-null") @Test(groups = { }, dataProvider = "CSV-TSV-AutoDetermine")
public void readQuotedData(String sep){ public void readQuotedData(String sep){
String input = "col1,col2,col3\n" + //create input
"\"\"\"To Be\"\" is often followed by \"\"or not To Be\"\"\",data2"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"\"\"\"To Be\"\" is often followed by \"\"or not To Be\"\"\"" + inputSeparator + "data2";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -325,17 +347,21 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2"); Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readIgnoreFirstLine(String sep){ public void readIgnoreFirstLine(String sep){
//create input
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "ignore1\n" + String input = "ignore1\n" +
"col1,col2,col3\n" + "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"data1,data2,data3"; "data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 1, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 1, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -347,17 +373,21 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readSkipFirstDataLine(String sep){ public void readSkipFirstDataLine(String sep){
String input = "col1,col2,col3\n" + //create input
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"skip1\n" + "skip1\n" +
"data1,data2,data3"; "data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 1, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 1, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -369,21 +399,25 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void readIgnore3_Header2_Skip1(String sep){ public void readIgnore3_Header2_Skip1(String sep){
//create input
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "ignore1\n" + String input = "ignore1\n" +
"ignore2\n" + "ignore2\n" +
"ignore3\n" + "ignore3\n" +
"col1,col2,col3\n" + "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"sub1,sub2,sub3\n" + "sub1" + inputSeparator + "sub2" + inputSeparator + "sub3\n" +
"skip1\n" + "skip1\n" +
"data1,data2,data3"; "data1" + inputSeparator + "data2" + inputSeparator + "data3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 1, 3, 2, false, true, false); SUT.read(lnReader, project, sep, -1, 1, 3, 2, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1 sub1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1 sub1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2 sub2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2 sub2");
@ -395,18 +429,21 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(groups = { }, dataProvider = "CSV-or-null") @Test(groups = { }, dataProvider = "CSV-TSV-AutoDetermine")
public void readIgnore3_Header2_Skip2_limit2(String sep){ public void readIgnore3_Header2_Skip2_limit2(String sep){
//create input
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "ignore1\n" + String input = "ignore1\n" +
"ignore2\n" + "ignore2\n" +
"ignore3\n" + "ignore3\n" +
"col1,col2,col3\n" + "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"sub1,sub2,sub3\n" + "sub1" + inputSeparator + "sub2" + inputSeparator + "sub3\n" +
"skip1\n" + "skip1\n" +
"skip2\n" + "skip2\n" +
"data-row1-cell1,data-row1-cell2,data-row1-cell3\n" + "data-row1-cell1" + inputSeparator + "data-row1-cell2" + inputSeparator + "data-row1-cell3\n" +
"data-row2-cell1,data-row2-cell2,\n" + //missing last data point of this row on purpose "data-row2-cell1" + inputSeparator + "data-row2-cell2" + inputSeparator + "\n" + //missing last data point of this row on purpose
"data-row3-cell1,data-row3-cell2,data-row1-cell3"; "data-row3-cell1" + inputSeparator + "data-row3-cell2" + inputSeparator + "data-row1-cell3";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, 2, 2, 3, 2, false, true, false); SUT.read(lnReader, project, sep, 2, 2, 3, 2, false, true, false);
@ -428,33 +465,41 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertNull(project.rows.get(1).cells.get(2)); Assert.assertNull(project.rows.get(1).cells.get(2));
} }
@Test(dataProvider = "CSV-or-null") @Test(dataProvider = "CSV-TSV-AutoDetermine")
public void ignoreQuotes(String sep){ public void ignoreQuotes(String sep){
String input = "data1,data2\",data3,data4"; //create input
String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "data1" + inputSeparator + "data2\"" + inputSeparator + "data3" + inputSeparator + "data4";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, true); SUT.read(lnReader, project, sep, -1, 0, 0, 0, false, true, true);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
//Assert.assertEquals(project.columnModel.columns.size(), 4);
Assert.assertEquals(project.columnModel.columns.size(), 4);
Assert.assertEquals(project.rows.size(), 1); Assert.assertEquals(project.rows.size(), 1);
//Assert.assertEquals(project.rows.get(0).cells.size(), 4); Assert.assertEquals(project.rows.get(0).cells.size(), 4);
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1"); Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1");
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2"); Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3"); Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
} }
@Test(groups = { }, dataProvider = "CSV-or-null") @Test(groups = { }, dataProvider = "CSV-TSV-AutoDetermine")
public void readWithMultiLinedQuotedData(String sep){ public void readWithMultiLinedQuotedData(String sep){
String input = "col1,col2,col3\n" + //create input
"\"\"\"To\n Be\"\" is often followed by \"\"or not To\n Be\"\"\",data2"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"\"\"\"To\n Be\"\" is often followed by \"\"or not To\n Be\"\"\"" + inputSeparator + "data2";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -465,16 +510,20 @@ public class TsvCsvImporterTests extends RefineTest {
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2"); Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
} }
@Test(groups = { }, dataProvider = "CSV-or-null") @Test(groups = { }, dataProvider = "CSV-TSV-AutoDetermine")
public void readWithMultiLinedQuotedDataAndBlankLines(String sep){ public void readWithMultiLinedQuotedDataAndBlankLines(String sep){
String input = "col1,col2,col3\n" + //create input
"\"A line with many \n\n\n\n\n empty lines\",data2"; String inputSeparator = sep == "\t" ? "\t" : ",";
String input = "col1" + inputSeparator + "col2" + inputSeparator + "col3\n" +
"\"A line with many \n\n\n\n\n empty lines\"" + inputSeparator + "data2";
LineNumberReader lnReader = new LineNumberReader(new StringReader(input)); LineNumberReader lnReader = new LineNumberReader(new StringReader(input));
try { try {
SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false); SUT.read(lnReader, project, sep, -1, 0, 0, 1, false, true, false);
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
Assert.assertEquals(project.columnModel.columns.size(), 3); Assert.assertEquals(project.columnModel.columns.size(), 3);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1"); Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2"); Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
@ -556,10 +605,10 @@ public class TsvCsvImporterTests extends RefineTest {
/** /**
* Used for parameterized testing for both SeparatorParser and TsvCsvParser. * Used for parameterized testing for both SeparatorParser and TsvCsvParser.
*/ */
@DataProvider(name = "CSV-or-null") @DataProvider(name = "CSV-TSV-AutoDetermine")
public Object[][] CSV_or_null(){ public Object[][] CSV_TSV_or_AutoDetermine(){
return new Object[][]{ return new Object[][]{
{","},{null} {","},{"\t"},{null}
}; };
} }