Add unit case to test csv import with some line feed.
authorBruno Sinou <bsinou@argeo.org>
Thu, 10 Mar 2011 17:55:14 +0000 (17:55 +0000)
committerBruno Sinou <bsinou@argeo.org>
Thu, 10 Mar 2011 17:55:14 +0000 (17:55 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4281 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserParseFileTest.java
basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserTestCase.java
basic/runtime/org.argeo.basic.nodeps/src/test/resources/org/argeo/util/ReferenceFile.csv [new file with mode: 0644]
basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv [deleted file]

index 4a134a5781a77d2e2e53c83d20bee1349887e3b4..811758a1375d7465b9618af9ddf03647c0cf250b 100644 (file)
@@ -1,33 +1,33 @@
 package org.argeo.util;
 
-import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 
 import junit.framework.TestCase;
 
 public class CsvParserParseFileTest extends TestCase {
        public void testParse() throws Exception {
-               String toParse = "Header1,\"Header2\",Header3,\"Header4\"\n"
-                               + "Col1,\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n"
-                               + "Col1,\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n"
-                               + "Col1,\"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) {
-                               assertEquals(header.size(), tokens.size());
-                               assertEquals(4, tokens.size());
-                               assertEquals("Col1", tokens.get(0));
-                               assertEquals("Col\n2", tokens.get(1));
-                               assertEquals("Col3", tokens.get(2));
-                               assertEquals("\"Col4\"", tokens.get(3));
+               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) {
+                               lines.put(lineNumber, line);
                        }
                };
 
-               csvParser.parse(in);
+               parser.parse(in);
                in.close();
+
+               for (Integer i : lines.keySet()) {
+                       Map<String, String> curLine = lines.get(i);
+                       System.out.println("i : " + i.toString() + " - ID :"
+                                       + curLine.get("ID"));
+               }
+               assertEquals(5, lines.size());
        }
+
 }
index f29b9edea64072adcb9fa849002d0d7f44c12585..363de8bc51683ab167db7e58c73d6b15178a268e 100644 (file)
@@ -1,33 +1,34 @@
 package org.argeo.util;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 
 import junit.framework.TestCase;
 
 public class CsvParserTestCase extends TestCase {
        public void testParse() throws Exception {
+               String toParse = "Header1,\"Header2\",Header3,\"Header4\"\n"
+                               + "Col1,\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n"
+                               + "Col1,\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n"
+                               + "Col1,\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n";
 
-               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) {
-                               lines.put(lineNumber, line);
+               InputStream in = new ByteArrayInputStream(toParse.getBytes());
+
+               CsvParser csvParser = new CsvParser() {
+                       protected void processLine(Integer lineNumber, List<String> header,
+                                       List<String> tokens) {
+                               assertEquals(header.size(), tokens.size());
+                               assertEquals(4, tokens.size());
+                               assertEquals("Col1", tokens.get(0));
+                               assertEquals("Col\n2", tokens.get(1));
+                               assertEquals("Col3", tokens.get(2));
+                               assertEquals("\"Col4\"", tokens.get(3));
                        }
                };
 
-               parser.parse(in);
+               csvParser.parse(in);
                in.close();
-
-               for (Integer i : lines.keySet()) {
-                       Map<String, String> curLine = lines.get(i);
-                       System.out.println("i : " + i.toString() + " - EBITAG :"
-                                       + curLine.get("EBI Tag"));
-               }
-               assertEquals(11, lines.size());
-
        }
+
 }
diff --git a/basic/runtime/org.argeo.basic.nodeps/src/test/resources/org/argeo/util/ReferenceFile.csv b/basic/runtime/org.argeo.basic.nodeps/src/test/resources/org/argeo/util/ReferenceFile.csv
new file mode 100644 (file)
index 0000000..dc2f246
--- /dev/null
@@ -0,0 +1,31 @@
+"ID","A long Text","Name","Other","Number","Reference","Target","Date","Update","Language","ID Ref","weird chars","line feeds","after line feed","Empty column","Status comment","Comments","Empty"
+"AK251","Everything & with some line feed \n more “some” quote","B TY",,78.6,"A1155222221111268515131",,12/12/12,03/12/08,,9821308500721,"%%%ùù","ao","alf",,,"Bruno/Antoine what is the real identity?",
+"AG254","same","Roger “wallace” Big","15 – JI",78.5,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500953,"***µ”","a
+
+
+
+
+o","alf",,"Do the job",,
+"FG211","Very long text with some bullets.
+1 first
+2 second
+3. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long","None","15 – JI",15.4,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500952,"///","a
+
+
+
+
+
+
+o","alf",,"Be fast",,
+"RRT152","Very long text with some bullets.
+1 first
+2 second
+3. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long","Another $$","15 – JI",12.3,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500950,"---","a
+
+o
+
+
+","alf",,,,
+"YU121","Another use case : “blank line”
+
+After the blank.","nothing with brackets( )","15 – JI",15.2,"A1155222221111268515131",,12/12/12,03/12/08,"_fr (French - France)",9812309500925,",;:?./","ao","alf",,,,
diff --git a/basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv b/basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv
deleted file mode 100644 (file)
index dc2f246..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-"ID","A long Text","Name","Other","Number","Reference","Target","Date","Update","Language","ID Ref","weird chars","line feeds","after line feed","Empty column","Status comment","Comments","Empty"
-"AK251","Everything & with some line feed \n more “some” quote","B TY",,78.6,"A1155222221111268515131",,12/12/12,03/12/08,,9821308500721,"%%%ùù","ao","alf",,,"Bruno/Antoine what is the real identity?",
-"AG254","same","Roger “wallace” Big","15 – JI",78.5,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500953,"***µ”","a
-
-
-
-
-o","alf",,"Do the job",,
-"FG211","Very long text with some bullets.
-1 first
-2 second
-3. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long","None","15 – JI",15.4,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500952,"///","a
-
-
-
-
-
-
-o","alf",,"Be fast",,
-"RRT152","Very long text with some bullets.
-1 first
-2 second
-3. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long. some more very very very long","Another $$","15 – JI",12.3,"A1155222221111268515131","next milestone",12/12/12,03/12/08,"_fr (French - France)",9812309500950,"---","a
-
-o
-
-
-","alf",,,,
-"YU121","Another use case : “blank line”
-
-After the blank.","nothing with brackets( )","15 – JI",15.2,"A1155222221111268515131",,12/12/12,03/12/08,"_fr (French - France)",9812309500925,",;:?./","ao","alf",,,,