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 import static org.junit.jupiter.api.Assertions.assertNotNull;
21
22 import java.io.IOException;
23 import java.io.StringReader;
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.junit.jupiter.api.Test;
29
30 public class JiraCsv149Test {
31
32 private static final String CR_LF = "\r\n";
33
34 @Test
35 public void testJiraCsv149EndWithEOL() throws IOException {
36 testJiraCsv149EndWithEolAtEof(true);
37 }
38
39 private void testJiraCsv149EndWithEolAtEof(final boolean eolAtEof) throws IOException {
40 String source = "A,B,C,D" + CR_LF + "a1,b1,c1,d1" + CR_LF + "a2,b2,c2,d2";
41 if (eolAtEof) {
42 source += CR_LF;
43 }
44 final StringReader records = new StringReader(source);
45
46 final CSVFormat format = CSVFormat.RFC4180.builder()
47 .setHeader()
48 .setSkipHeaderRecord(true)
49 .setQuote('"')
50 .build();
51
52 int lineCounter = 2;
53 try (final CSVParser parser = new CSVParser(records, format)) {
54 for (final CSVRecord record : parser) {
55 assertNotNull(record);
56 assertEquals(lineCounter++, parser.getCurrentLineNumber());
57 }
58 }
59 }
60
61 @Test
62 public void testJiraCsv149EndWithoutEOL() throws IOException {
63 testJiraCsv149EndWithEolAtEof(false);
64 }
65 }