Move package org.argeo.util to bundle org.argeo.enterprise.
[lgpl/argeo-commons.git] / org.argeo.enterprise / ext / test / org / argeo / util / CsvParserWithQuotedSeparatorTest.java
diff --git a/org.argeo.enterprise/ext/test/org/argeo/util/CsvParserWithQuotedSeparatorTest.java b/org.argeo.enterprise/ext/test/org/argeo/util/CsvParserWithQuotedSeparatorTest.java
new file mode 100644 (file)
index 0000000..67ba346
--- /dev/null
@@ -0,0 +1,58 @@
+package org.argeo.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** Test that {@link CsvParser} deals properly with "" quotes. */
+public class CsvParserWithQuotedSeparatorTest {
+       public void testSimpleParse() throws Exception {
+               String toParse = "Header1,\"Header2\",Header3,\"Header4\"\n"
+                               + "\"Col1, Col2\",\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n";
+
+               InputStream in = new ByteArrayInputStream(toParse.getBytes());
+
+               CsvParser csvParser = new CsvParser() {
+                       protected void processLine(Integer lineNumber, List<String> header, List<String> tokens) {
+                               assert header.size() == tokens.size();
+                               assert 4 == tokens.size();
+                               assert "Col1, Col2".equals(tokens.get(0));
+                       }
+               };
+               // System.out.println(toParse);
+               csvParser.parse(in);
+               in.close();
+
+       }
+
+       public void testParseFile() throws Exception {
+
+               final Map<Integer, Map<String, String>> lines = new HashMap<Integer, Map<String, String>>();
+               InputStream in = getClass().getResourceAsStream("/org/argeo/util/ReferenceFile.csv");
+
+               CsvParserWithLinesAsMap parser = new CsvParserWithLinesAsMap() {
+                       protected void processLine(Integer lineNumber, Map<String, String> line) {
+                               // System.out.println("processing line #" + lineNumber);
+                               lines.put(lineNumber, line);
+                       }
+               };
+
+               parser.parse(in);
+               in.close();
+
+               Map<String, String> line = lines.get(2);
+               assert ",,,,".equals(line.get("Coma testing"));
+               line = lines.get(3);
+               assert ",, ,,".equals(line.get("Coma testing"));
+               line = lines.get(4);
+               assert "module1, module2".equals(line.get("Coma testing"));
+               line = lines.get(5);
+               assert "module1,module2".equals(line.get("Coma testing"));
+               line = lines.get(6);
+               assert ",module1,module2, \nmodule3, module4".equals(line.get("Coma testing"));
+               assert 5 == lines.size();
+
+       }
+}