package test.csv;
import java.util.List;
import junit.framework.TestCase;
import com.akjava.lib.common.csv.CSVWriter;
import com.akjava.lib.common.csv.NewCSVReader;
public class CSVWriterTest extends TestCase{
public void testLine(){
String line="hello";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0);
String correct="row-size=1\n" +
"column[0]-size=1\n" +
"column[0][0]=hello";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
public void testLine2(){
String line="hello,world";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
String correct="row-size=1\n" +
"column[0]-size=2\n" +
"column[0][0]=hello\n" +
"column[0][1]=world\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
//can contain single \"
public void testLine4(){
String line="h\"ello,world";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
String correct="row-size=1\n" +
"column[0]-size=2\n" +
"column[0][0]=h\"ello\n" +
"column[0][1]=world\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
//parse quote
public void testLine5(){
String line="\"hello\",\"world\"";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
String correct="row-size=1\n" +
"column[0]-size=2\n" +
"column[0][0]=hello\n" +
"column[0][1]=world\n";
CSVWriter writer=new CSVWriter(',');
line=line.replace("\"", "");//not support force quote text;
assertEquals(line,writer.toCsv(csvs,"\n"));
}
//quoted can contain separator
public void testLine6(){
String line="\"hello,\",\"wor,ld\"";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
String correct="row-size=1\n" +
"column[0]-size=2\n" +
"column[0][0]=hello,\n" +
"column[0][1]=wor,ld\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
//quoted can contain line-separator
public void testLine7(){
String line="\"hello\n\",\"wor\nld\"";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
String correct="row-size=1\n" +
"column[0]-size=2\n" +
"column[0][0]=hello\n\n" +
"column[0][1]=wor\nld\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
//this is invalid but read as 1 line
public void testLine8(){
String line="\"hello,world\n.";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
String correct="row-size=1\n" +
"column[0]-size=1\n" +
"column[0][0]=hello,world\n.\n";
line+="\"";//this line invalid write make correct;
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
public void testLine9(){
String line="\"" +
"\"\"" +
"\"";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
String correct="row-size=1\n" +
"column[0]-size=1\n" +
"column[0][0]=\"\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
/**
* first one is ignored but second is recognized
*/
public void testLine3(){
String line="hello,world\n";
NewCSVReader reader=new NewCSVReader(line,',');
List<List<String>> csvs=reader.readAllAsList();
String result="row-size="+csvs.size()+"\n";
result+="column[0]-size="+csvs.get(0).size()+"\n";
result+="column[0][0]="+csvs.get(0).get(0)+"\n";
result+="column[0][1]="+csvs.get(0).get(1)+"\n";
result+="column[1][0]="+csvs.get(1).get(0)+"\n";
String correct="row-size=2\n" +
"column[0]-size=2\n" +
"column[0][0]=hello\n" +
"column[0][1]=world\n"+
"column[1][0]=\n";
CSVWriter writer=new CSVWriter(',');
assertEquals(line,writer.toCsv(csvs,"\n"));
}
}