]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.enterprise/ext/test/org/argeo/util/CsvParserWithQuotedSeparatorTest.java
Merge remote-tracking branch 'origin/v2.x'
[lgpl/argeo-commons.git] / org.argeo.enterprise / ext / test / org / argeo / util / CsvParserWithQuotedSeparatorTest.java
1 package org.argeo.util;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.InputStream;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 /** Test that {@link CsvParser} deals properly with "" quotes. */
10 public class CsvParserWithQuotedSeparatorTest {
11 public void testSimpleParse() throws Exception {
12 String toParse = "Header1,\"Header2\",Header3,\"Header4\"\n"
13 + "\"Col1, Col2\",\"Col\n2\",Col3,\"\"\"Col4\"\"\"\n";
14
15 InputStream in = new ByteArrayInputStream(toParse.getBytes());
16
17 CsvParser csvParser = new CsvParser() {
18 protected void processLine(Integer lineNumber, List<String> header, List<String> tokens) {
19 assert header.size() == tokens.size();
20 assert 4 == tokens.size();
21 assert "Col1, Col2".equals(tokens.get(0));
22 }
23 };
24 // System.out.println(toParse);
25 csvParser.parse(in);
26 in.close();
27
28 }
29
30 public void testParseFile() throws Exception {
31
32 final Map<Integer, Map<String, String>> lines = new HashMap<Integer, Map<String, String>>();
33 InputStream in = getClass().getResourceAsStream("/org/argeo/util/ReferenceFile.csv");
34
35 CsvParserWithLinesAsMap parser = new CsvParserWithLinesAsMap() {
36 protected void processLine(Integer lineNumber, Map<String, String> line) {
37 // System.out.println("processing line #" + lineNumber);
38 lines.put(lineNumber, line);
39 }
40 };
41
42 parser.parse(in);
43 in.close();
44
45 Map<String, String> line = lines.get(2);
46 assert ",,,,".equals(line.get("Coma testing"));
47 line = lines.get(3);
48 assert ",, ,,".equals(line.get("Coma testing"));
49 line = lines.get(4);
50 assert "module1, module2".equals(line.get("Coma testing"));
51 line = lines.get(5);
52 assert "module1,module2".equals(line.get("Coma testing"));
53 line = lines.get(6);
54 assert ",module1,module2, \nmodule3, module4".equals(line.get("Coma testing"));
55 assert 5 == lines.size();
56
57 }
58 }