1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.csv.issues;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20
21 import java.io.IOException;
22 import java.io.StringReader;
23 import java.util.Iterator;
24
25 import org.apache.commons.csv.CSVFormat;
26 import org.apache.commons.csv.CSVParser;
27 import org.apache.commons.csv.CSVRecord;
28 import org.apache.commons.csv.QuoteMode;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34 public class JiraCsv253Test {
35
36 private void assertArrayEqual(final String[] expected, final CSVRecord actual) {
37 for (int i = 0; i < expected.length; i++) {
38 assertEquals(expected[i], actual.get(i));
39 }
40 }
41
42 @Test
43 public void testHandleAbsentValues() throws IOException {
44 final String source = "\"John\",,\"Doe\"\n" + ",\"AA\",123\n" + "\"John\",90,\n" + "\"\",,90";
45 final CSVFormat csvFormat = CSVFormat.DEFAULT.builder().setQuoteMode(QuoteMode.NON_NUMERIC).build();
46 try (final CSVParser parser = csvFormat.parse(new StringReader(source))) {
47 final Iterator<CSVRecord> csvRecords = parser.iterator();
48 assertArrayEqual(new String[] {"John", null, "Doe"}, csvRecords.next());
49 assertArrayEqual(new String[] {null, "AA", "123"}, csvRecords.next());
50 assertArrayEqual(new String[] {"John", "90", null}, csvRecords.next());
51 assertArrayEqual(new String[] {"", null, "90"}, csvRecords.next());
52 }
53 }
54 }