@Test(dataProvider = "blanksProvider") public void testWriteBlanks(boolean quoteAllFields, String nullValue, String expectedResult) { CsvWriterSettings s = new CsvWriterSettings(); s.setQuoteAllFields(quoteAllFields); s.getFormat().setLineSeparator("\n"); s.setNullValue(nullValue); s.setEmptyValue("//"); CsvWriter w = new CsvWriter(s); CsvParserSettings ps = new CsvParserSettings(); ps.setNullValue(nullValue); ps.setEmptyValue("//"); CsvParser p = new CsvParser(ps); String result = w.writeRowToString(" ", " ", "", "\"\"", null); assertEquals(result, expectedResult); String[] row = p.parseLine(result); if (quoteAllFields) { assertEquals(row[0], "//"); assertEquals(row[1], "//"); } else { assertEquals(row[0], nullValue); assertEquals(row[1], nullValue); } assertEquals(row[2], "//"); assertEquals(row[3], "\"\""); assertEquals(row[4], nullValue); }
@Test public void testWritingWithIndexExclusion() { CsvWriterSettings settings = new CsvWriterSettings(); settings.setMaxColumns(8); settings.excludeIndexes(4, 1); CsvWriter writer = new CsvWriter(settings); String result1 = writer.writeRowToString(1, 2, 3, 4, 5, 6); writer.updateFieldExclusion(1, 3, 5, 7); String result2 = writer.writeRowToString(7, 8, 9, 10); // System.out.println(result1); // System.out.println(result2); assertEquals(result1, "1,,2,3,,4,5,6"); assertEquals(result2, "7,,8,,9,,10,"); }
@Test public void testWritingWithIndexSelection() { CsvWriterSettings settings = new CsvWriterSettings(); settings.selectIndexes(4, 1); CsvWriter writer = new CsvWriter(settings); String result1 = writer.writeRowToString(1, 2); writer.updateFieldSelection(0, 3, 5); String result2 = writer.writeRowToString('A', 'B', 'C'); // System.out.println(result1); // System.out.println(result2); assertEquals(result1, ",2,,,1"); assertEquals(result2, "A,,,B,,C"); }
@Test public void testEscapeQuoteInValues() { CsvWriterSettings settings = new CsvWriterSettings(); settings.trimValues(false); settings.getFormat().setLineSeparator("\n"); settings.getFormat().setQuote('\''); settings.getFormat().setQuoteEscape('\''); settings.getFormat().setCharToEscapeQuoteEscaping('\''); settings.setQuoteEscapingEnabled(true); CsvWriter writer = new CsvWriter(settings); assertEquals( writer.writeRowToString(new String[] {"my 'precious' value"}), "'my ''precious'' value'"); assertEquals(writer.writeRowToString(new String[] {"'"}), "''''"); assertEquals(writer.writeRowToString(new String[] {" '"}), "' '''"); assertEquals(writer.writeRowToString(new String[] {" ' "}), "' '' '"); }
@Test public void testWriteToString() throws Exception { CsvWriterSettings settings = new CsvWriterSettings(); settings.getFormat().setLineSeparator("\r\n"); settings.setIgnoreTrailingWhitespaces(true); CsvWriter writer = new CsvWriter(settings); String result = writer.writeRowToString(new Object[] {1, "Line1\nLine2 "}); String expected = "1,\"Line1\r\nLine2\""; assertEquals(result, expected); }
@Test public void testQuotationTriggers() { CsvWriterSettings settings = new CsvWriterSettings(); settings.trimValues(false); settings.getFormat().setLineSeparator("\n"); settings.getFormat().setQuote('\''); settings.getFormat().setQuoteEscape('\''); settings.getFormat().setCharToEscapeQuoteEscaping('\''); settings.setQuotationTriggers(' ', '\t', 'Z'); settings.setQuoteEscapingEnabled(false); CsvWriter writer = new CsvWriter(settings); assertEquals( writer.writeRowToString(new String[] {"my 'precious' value"}), "'my ''precious'' value'"); // quotes because of the spaces assertEquals( writer.writeRowToString(new String[] {"my'precious'value"}), "my'precious'value"); // no triggers here, no quotation applied assertEquals(writer.writeRowToString(new String[] {"lulz"}), "lulz"); assertEquals( writer.writeRowToString(new String[] {"lulZ"}), "'lulZ'"); // uppercase Z is a trigger assertEquals(writer.writeRowToString(new String[] {"I'm\ta\tTSV!"}), "'I''m\ta\tTSV!'"); }
@Test(dataProvider = "escapeHandlingParameterProvider") public void testHandlingOfEscapeSequences( boolean inputEscaped, boolean escapeUnquoted, String expected1, String expected2) throws Exception { CsvWriterSettings settings = new CsvWriterSettings(); settings.setInputEscaped(inputEscaped); settings.setEscapeUnquotedValues(escapeUnquoted); settings.getFormat().setCharToEscapeQuoteEscaping('|'); settings.getFormat().setQuoteEscape('|'); String[] line1 = new String[] {"A|\""}; String[] line2 = new String[] {",B|\""}; // will quote because of the column separator CsvWriter writer = new CsvWriter(settings); String result1 = writer.writeRowToString(line1); String result2 = writer.writeRowToString(line2); // System.out.println(result1); // System.out.println(result2); assertEquals(result1, expected1); assertEquals(result2, expected2); }