1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.csv.issues;
19
20 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22
23 import java.io.InputStreamReader;
24 import java.io.StringReader;
25 import java.io.StringWriter;
26 import java.util.ArrayList;
27 import java.util.Iterator;
28 import java.util.List;
29 import java.util.stream.Collectors;
30
31 import org.apache.commons.csv.CSVFormat;
32 import org.apache.commons.csv.CSVParser;
33 import org.apache.commons.csv.CSVPrinter;
34 import org.apache.commons.csv.CSVRecord;
35 import org.junit.jupiter.api.Test;
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public class JiraCsv290Test {
59
60 private void testHelper(final String filename, final CSVFormat format) throws Exception {
61 List<List<String>> content = new ArrayList<>();
62 try (CSVParser csvParser = CSVParser.parse(new InputStreamReader(this.getClass().getResourceAsStream("/org/apache/commons/csv/CSV-290/" + filename)),
63 format)) {
64 content = csvParser.stream().collect(Collectors.mapping(CSVRecord::toList, Collectors.toList()));
65 }
66
67 assertEquals(3, content.size());
68
69 assertEquals("1", content.get(0).get(0));
70 assertEquals("abc", content.get(0).get(1));
71 assertEquals("test line 1\ntest line 2", content.get(0).get(2));
72 assertEquals(null, content.get(0).get(3));
73 assertEquals("", content.get(0).get(4));
74
75 assertEquals("2", content.get(1).get(0));
76 assertEquals("\\b:\b \\t:\t \\n:\n \\r:\r", content.get(1).get(2));
77
78 assertEquals("3", content.get(2).get(0));
79 assertEquals("b,c,d", content.get(2).get(2));
80 assertEquals("\"quoted\"", content.get(2).get(3));
81 }
82
83 @Test
84 public void testPostgresqlCsv() throws Exception {
85 testHelper("psql.csv", CSVFormat.POSTGRESQL_CSV);
86 }
87
88 @Test
89 public void testPostgresqlText() throws Exception {
90 testHelper("psql.tsv", CSVFormat.POSTGRESQL_TEXT);
91 }
92
93 @Test
94 public void testWriteThenRead() throws Exception {
95 final StringWriter sw = new StringWriter();
96
97 try (CSVPrinter printer = new CSVPrinter(sw, CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build())) {
98
99 printer.printRecord("column1", "column2");
100 printer.printRecord("v11", "v12");
101 printer.printRecord("v21", "v22");
102 printer.close();
103
104 final CSVParser parser = new CSVParser(new StringReader(sw.toString()),
105 CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build());
106
107 assertArrayEquals(new Object[] { "column1", "column2" }, parser.getHeaderNames().toArray());
108
109 final Iterator<CSVRecord> i = parser.iterator();
110 assertArrayEquals(new String[] { "v11", "v12" }, i.next().toList().toArray());
111 assertArrayEquals(new String[] { "v21", "v22" }, i.next().toList().toArray());
112 }
113 }
114 }