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 CSVReaderHeaderAwareWithRowProcessorTest {
16 private static final RowProcessor ROW_PROCESSOR = new BlankColumnsBecomeNull();
17 private static final String LINES = "one,two,three\na,, \n, ,\n";
18
19 @DisplayName("CSVReaderHeaderAware with RowProcessor with good string")
20 @Test
21 public void readerWithRowProcessor() throws IOException, CsvException {
22
23 StringReader stringReader = new StringReader(LINES);
24 CSVReaderHeaderAware csvReader = new CSVReaderHeaderAwareBuilder(stringReader)
25 .withRowProcessor(ROW_PROCESSOR)
26 .build();
27
28 List<String[]> rows = csvReader.readAll();
29 assertEquals(2, rows.size());
30
31 String[] row1 = rows.get(0);
32 assertEquals(3, row1.length);
33 assertEquals("a", row1[0]);
34 assertNull(row1[1]);
35 assertEquals(" ", row1[2]);
36
37 String[] row2 = rows.get(1);
38 assertEquals(3, row2.length);
39 assertNull(row2[0]);
40 assertEquals(" ", row2[1]);
41 assertNull(row2[2]);
42 }
43
44 @DisplayName("CSVReaderHeaderAware without RowProcessor with good string")
45 @Test
46 public void readerWithoutRowProcessor() throws IOException, CsvException {
47
48 StringReader stringReader = new StringReader(LINES);
49 CSVReaderHeaderAware csvReader = new CSVReaderHeaderAwareBuilder(stringReader).build();
50
51 List<String[]> rows = csvReader.readAll();
52 assertEquals(2, rows.size());
53
54 String[] row1 = rows.get(0);
55 assertEquals(3, row1.length);
56 assertEquals("a", row1[0]);
57 assertTrue(row1[1].isEmpty());
58 assertEquals(" ", row1[2]);
59
60 String[] row2 = rows.get(1);
61 assertEquals(3, row2.length);
62 assertTrue(row2[0].isEmpty());
63 assertEquals(" ", row2[1]);
64 assertTrue(row2[2].isEmpty());
65 }
66 }