From c722db7ce68dc32e5db557661858808be3a25a0b Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Thu, 10 Mar 2011 17:48:30 +0000 Subject: [PATCH] Add unit case to test csv import with some line feed. git-svn-id: https://svn.argeo.org/commons/trunk@4280 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/util/CsvParserParseFileTest.java | 33 +++++++++++++++++ .../org/argeo/util/CsvParserTestCase.java | 36 +++++++++---------- .../org/argeo/util/ReferenceFile.csv | 31 ++++++++++++++++ 3 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserParseFileTest.java create mode 100644 basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv diff --git a/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserParseFileTest.java b/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserParseFileTest.java new file mode 100644 index 000000000..4a134a578 --- /dev/null +++ b/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserParseFileTest.java @@ -0,0 +1,33 @@ +package org.argeo.util; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.List; + +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 header, + List 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)); + } + }; + + csvParser.parse(in); + in.close(); + } +} diff --git a/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserTestCase.java b/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserTestCase.java index 5a8e4a8b8..f29b9edea 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserTestCase.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/test/java/org/argeo/util/CsvParserTestCase.java @@ -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 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"; - InputStream in = new ByteArrayInputStream(toParse.getBytes()); - - CsvParser csvParser = new CsvParser() { - protected void processLine(Integer lineNumber, List header, - List 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> lines = new HashMap>(); + InputStream in = getClass().getResourceAsStream( + "/org/argeo/util/ReferenceFile.csv"); + CsvParserWithLinesAsMap parser = new CsvParserWithLinesAsMap() { + protected void processLine(Integer lineNumber, + Map line) { + lines.put(lineNumber, line); } }; - csvParser.parse(in); + parser.parse(in); in.close(); + + for (Integer i : lines.keySet()) { + Map 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/ressources/org/argeo/util/ReferenceFile.csv b/basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv new file mode 100644 index 000000000..dc2f246bd --- /dev/null +++ b/basic/runtime/org.argeo.basic.nodeps/src/test/ressources/org/argeo/util/ReferenceFile.csv @@ -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",,,, -- 2.30.2