package au.com.bytecode.opencsv;
import java.io.StringReader;
import java.io.StringWriter;
import org.junit.Test;
import static org.junit.Assert.*;
public class CSVTest {
@Test
public void testDefault() {
CSV DEFAULT = CSV.create();
// writing
StringWriter w = new StringWriter();
DEFAULT.writeAndClose(w, new CSVWriteProc() {
@Override
public void process(CSVWriter out) {
out.writeNext("Col1", "Col2", "Col3");
out.writeNext("V1", "V2", "V3");
out.writeNext(",V,2,", "\"V2\"", " V3 ");
}
});
String text = w.getBuffer().toString();
assertEquals(
"\"Col1\",\"Col2\",\"Col3\"\n" +
"\"V1\",\"V2\",\"V3\"\n" +
"\",V,2,\",\"\"\"V2\"\"\",\" V3 \"\n",
text);
// reading
DEFAULT.readAndClose(new StringReader(text), new CSVReadProc() {
@Override
public void procRow(int rowIndex, String... values) {
switch (rowIndex) {
case 0:
assertArrayEquals(new String [] {"Col1", "Col2", "Col3"} , values);
break;
case 1:
assertArrayEquals(new String [] {"V1", "V2", "V3"} , values);
break;
case 2:
assertArrayEquals(new String [] {",V,2,", "\"V2\"", " V3 "} , values);
break;
default: fail();
}
}
});
}
@Test
public void testConfigured() {
CSV CFG = CSV
.separator('|')
.charset("UTF-8")
.escape('^')
.quote('*')
.ignoreLeadingWhiteSpace()
.lineEnd("#")
.strictQuotes()
.skipLines(1)
.create();
// writing
StringWriter w = new StringWriter();
CFG.writeAndClose(w, new CSVWriteProc() {
@Override
public void process(CSVWriter out) {
out.writeNext("Col1", "Col2", "Col3");
out.writeNext("V1", "V2", "V3");
out.writeNext("|V|2|", "*V2*", " V3 ");
}
});
String text = w.getBuffer().toString();
assertEquals(
"*Col1*|*Col2*|*Col3*#" +
"*V1*|*V2*|*V3*#" +
"*|V|2|*|***V2***|* V3 *#",
text);
// reading
CFG.readAndClose(new StringReader("*Col1*|*Col2*|*Col3*#" +
"*V1*|*V2*|*V3*#" +
"*|V|2|*|*^*V2^**| * V3 *#"), new CSVReadProc() {
@Override
public void procRow(int rowIndex, String... values) {
switch (rowIndex) {
case 0:
assertArrayEquals(new String [] {"V1", "V2", "V3"} , values);
break;
case 1:
assertArrayEquals(new String [] {"|V|2|", "*V2*", " V3 "} , values);
break;
default: fail();
}
}
});
}
}