1 package com.opencsv;
2
3 import com.opencsv.exceptions.CsvException;
4 import com.opencsv.processor.BlankColumnsBecomeNull;
5 import com.opencsv.processor.RowProcessor;
6 import org.junit.jupiter.api.DisplayName;
7 import org.junit.jupiter.api.Test;
8
9 import java.io.IOException;
10 import java.io.StringReader;
11 import java.util.List;
12
13 import static org.junit.jupiter.api.Assertions.*;
14
15 public class CSVReaderWithRowProcessorTest {
16 private static final RowProcessor ROW_PROCESSOR = new BlankColumnsBecomeNull();
17 private static final String LINES = "a,, \n, ,\n";
18
19 @DisplayName("CSVReader with RowProcessor with good string")
20 @Test
21 public void readerWithRowProcessor() throws IOException, CsvException {
22
23 StringReader stringReader = new StringReader(LINES);
24 CSVReaderBuilder builder = new CSVReaderBuilder(stringReader);
25
26 CSVReader csvReader = builder
27 .withRowProcessor(ROW_PROCESSOR)
28 .build();
29
30 List<String[]> rows = csvReader.readAll();
31 assertEquals(2, rows.size());
32
33 String[] row1 = rows.get(0);
34 assertEquals(3, row1.length);
35 assertEquals("a", row1[0]);
36 assertNull(row1[1]);
37 assertEquals(" ", row1[2]);
38
39 String[] row2 = rows.get(1);
40 assertEquals(3, row2.length);
41 assertNull(row2[0]);
42 assertEquals(" ", row2[1]);
43 assertNull(row2[2]);
44 }
45
46 @DisplayName("CSVReader without RowProcessor with good string")
47 @Test
48 public void readerWithoutRowProcessor() throws IOException, CsvException {
49
50 StringReader stringReader = new StringReader(LINES);
51 CSVReaderBuilder builder = new CSVReaderBuilder(stringReader);
52
53 CSVReader csvReader = builder.build();
54
55 List<String[]> rows = csvReader.readAll();
56 assertEquals(2, rows.size());
57
58 String[] row1 = rows.get(0);
59 assertEquals(3, row1.length);
60 assertEquals("a", row1[0]);
61 assertTrue(row1[1].isEmpty());
62 assertEquals(" ", row1[2]);
63
64 String[] row2 = rows.get(1);
65 assertEquals(3, row2.length);
66 assertTrue(row2[0].isEmpty());
67 assertEquals(" ", row2[1]);
68 assertTrue(row2[2].isEmpty());
69 }
70 }