View Javadoc
1   package com.opencsv;
2   
3   import com.opencsv.enums.CSVReaderNullFieldIndicator;
4   import org.junit.jupiter.api.*;
5   
6   import java.io.Reader;
7   import java.util.Locale;
8   
9   import static org.junit.jupiter.api.Assertions.*;
10  import static org.mockito.Mockito.mock;
11  
12  public class CSVReaderBuilderTest {
13  
14     private CSVReaderBuilder builder;
15     private Reader reader;
16  
17      private static Locale systemLocale;
18  
19      @BeforeAll
20      public static void storeSystemLocale() {
21          systemLocale = Locale.getDefault();
22      }
23  
24      @AfterEach
25      public void setSystemLocaleBackToDefault() {
26          Locale.setDefault(systemLocale);
27      }
28  
29      @BeforeEach
30     public void setUp() {
31        Locale.setDefault(Locale.US);
32        reader = mock(Reader.class);
33        builder = new CSVReaderBuilder(reader);
34     }
35  
36     @Test
37     public void testDefaultBuilder() {
38        assertSame(reader, builder.getReader());
39        assertNull(builder.getCsvParser());
40        assertEquals(
41              CSVReader.DEFAULT_SKIP_LINES,
42                builder.getSkipLines());
43        assertEquals(0, builder.getMultilineLimit());
44  
45        final CSVReader csvReader = builder.build();
46         assertEquals(
47                 CSVReader.DEFAULT_SKIP_LINES,
48                csvReader.getSkipLines());
49         assertEquals(CSVReader.DEFAULT_KEEP_CR, csvReader.keepCarriageReturns());
50         assertEquals(CSVReader.DEFAULT_VERIFY_READER, csvReader.verifyReader());
51         assertEquals(CSVReader.DEFAULT_MULTILINE_LIMIT, csvReader.getMultilineLimit());
52         assertEquals(Locale.getDefault(), csvReader.errorLocale);
53     }
54  
55      @Test
56     public void testNullReader() {
57          Assertions.assertThrows(IllegalArgumentException.class, () -> new CSVReaderBuilder(null));
58     }
59  
60     @Test
61     public void testWithCSVParserNull() {
62        builder.withCSVParser(mock(CSVParser.class));
63        builder.withCSVParser(null);
64        assertNull(builder.getCsvParser());
65     }
66  
67     @Test
68     public void testWithCSVParser() {
69         final ICSVParser csvParser = mock(CSVParser.class);
70  
71        builder.withCSVParser(csvParser);
72  
73        assertSame(csvParser, builder.getCsvParser());
74  
75        final CSVReader actual = builder.build();
76        assertSame(csvParser, actual.getParser());
77     }
78  
79     @Test
80     public void testWithSkipLines() {
81        builder.withSkipLines(99);
82  
83        assertEquals(99, builder.getSkipLines());
84  
85        final CSVReader actual = builder.build();
86        assertSame(99, actual.getSkipLines());
87     }
88  
89      @Test
90      public void testWithKeepCR() {
91          builder.withKeepCarriageReturn(true);
92          assertTrue(builder.keepCarriageReturn());
93  
94          final CSVReader actual = builder.build();
95          assertTrue(actual.keepCarriageReturns());
96      }
97  
98     @Test
99     public void testWithSkipLinesZero() {
100       builder.withSkipLines(0);
101 
102       assertEquals(0, builder.getSkipLines());
103 
104       final CSVReader actual = builder.build();
105       assertSame(0, actual.getSkipLines());
106    }
107 
108    @Test
109    public void testWithSkipLinesNegative() {
110       builder.withSkipLines(-1);
111 
112       assertEquals(0, builder.getSkipLines());
113 
114       final CSVReader actual = builder.build();
115       assertSame(0, actual.getSkipLines());
116    }
117 
118     @Test
119     public void testWithVerifyReader() {
120         final CSVReader r = builder.withVerifyReader(false).build();
121         assertFalse(r.verifyReader());
122     }
123 
124     @Test
125     public void builderWithNullFieldIndicator() {
126         final CSVReader r = builder.withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS).build();
127 
128         assertEquals(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS, r.getParser().nullFieldIndicator());
129     }
130 
131     @Test
132     public void builderWithMultilineLimit() {
133         final CSVReader r = builder.withMultilineLimit(Integer.MAX_VALUE).build();
134 
135         assertEquals(Integer.MAX_VALUE, r.getMultilineLimit());
136     }
137     
138     @Test
139     public void builderWithErrorLocale() {
140         final CSVReader r = builder.withErrorLocale(Locale.KOREAN).build();
141         assertEquals(Locale.KOREAN, r.errorLocale);
142     }
143 }