1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.io;
17
18 import static org.junit.Assert.assertArrayEquals;
19 import static org.junit.Assert.assertEquals;
20 import static org.supercsv.SuperCsvTestUtils.CSV_FILE;
21 import static org.supercsv.SuperCsvTestUtils.CUSTOMERS;
22 import static org.supercsv.SuperCsvTestUtils.HEADER;
23 import static org.supercsv.SuperCsvTestUtils.READ_PROCESSORS;
24 import static org.supercsv.SuperCsvTestUtils.STRING_CUSTOMERS;
25
26 import java.io.IOException;
27 import java.io.Reader;
28 import java.io.StringReader;
29 import java.util.ArrayList;
30 import java.util.List;
31
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.supercsv.cellprocessor.ift.CellProcessor;
36 import org.supercsv.prefs.CsvPreference;
37
38
39
40
41
42
43 public class CsvListReaderTest {
44
45 private static final CsvPreference PREFS = CsvPreference.STANDARD_PREFERENCE;
46
47 private Reader reader;
48
49 private CsvListReader listReader;
50
51 private CsvListReader tokenizerListReader;
52
53
54
55
56 @Before
57 public void setUp() {
58 reader = new StringReader(CSV_FILE);
59 listReader = new CsvListReader(reader, PREFS);
60
61 final Tokenizer tokenizer = new Tokenizer(reader, PREFS);
62 tokenizerListReader = new CsvListReader(tokenizer, PREFS);
63 }
64
65
66
67
68 @After
69 public void tearDown() throws IOException {
70 listReader.close();
71 tokenizerListReader.close();
72 }
73
74
75
76
77 @Test
78 public void testRead() throws IOException {
79
80 final String[] header = listReader.getHeader(true);
81 assertArrayEquals(HEADER, header);
82
83
84 final List<List<String>> customers = new ArrayList<List<String>>();
85 List<String> customer;
86 while( (customer = listReader.read()) != null ) {
87 customers.add(customer);
88 }
89
90
91 for( int i = 0; i < customers.size(); i++ ) {
92 customer = customers.get(i);
93 assertEquals(STRING_CUSTOMERS.get(i).getCustomerNo(), customer.get(0));
94 assertEquals(STRING_CUSTOMERS.get(i).getFirstName(), customer.get(1));
95 assertEquals(STRING_CUSTOMERS.get(i).getLastName(), customer.get(2));
96 assertEquals(STRING_CUSTOMERS.get(i).getBirthDate(), customer.get(3));
97 assertEquals(STRING_CUSTOMERS.get(i).getMailingAddress(), customer.get(4));
98 assertEquals(STRING_CUSTOMERS.get(i).getMarried(), customer.get(5));
99 assertEquals(STRING_CUSTOMERS.get(i).getNumberOfKids(), customer.get(6));
100 assertEquals(STRING_CUSTOMERS.get(i).getFavouriteQuote(), customer.get(7));
101 assertEquals(STRING_CUSTOMERS.get(i).getEmail(), customer.get(8));
102 assertEquals(STRING_CUSTOMERS.get(i).getLoyaltyPoints(), customer.get(9));
103 }
104
105 assertEquals(STRING_CUSTOMERS.size() + 1, listReader.getRowNumber());
106 }
107
108
109
110
111 @Test
112 public void testReadWithProcessors() throws IOException {
113
114 final String[] header = listReader.getHeader(true);
115 assertArrayEquals(HEADER, header);
116
117
118 final List<List<Object>> customers = new ArrayList<List<Object>>();
119 List<Object> customer;
120 while( (customer = listReader.read(READ_PROCESSORS)) != null ) {
121 customers.add(customer);
122 }
123
124
125 for( int i = 0; i < customers.size(); i++ ) {
126 customer = customers.get(i);
127 assertEquals(CUSTOMERS.get(i).getCustomerNo(), customer.get(0));
128 assertEquals(CUSTOMERS.get(i).getFirstName(), customer.get(1));
129 assertEquals(CUSTOMERS.get(i).getLastName(), customer.get(2));
130 assertEquals(CUSTOMERS.get(i).getBirthDate(), customer.get(3));
131 assertEquals(CUSTOMERS.get(i).getMailingAddress(), customer.get(4));
132 assertEquals(CUSTOMERS.get(i).getMarried(), customer.get(5));
133 assertEquals(CUSTOMERS.get(i).getNumberOfKids(), customer.get(6));
134 assertEquals(CUSTOMERS.get(i).getFavouriteQuote(), customer.get(7));
135 assertEquals(CUSTOMERS.get(i).getEmail(), customer.get(8));
136 assertEquals(CUSTOMERS.get(i).getLoyaltyPoints(), customer.get(9));
137 }
138
139 assertEquals(CUSTOMERS.size() + 1, listReader.getRowNumber());
140 }
141
142
143
144
145 @Test
146 public void testReadCombinedWithExecuteProcessors() throws IOException {
147
148 final String[] header = listReader.getHeader(true);
149 assertArrayEquals(HEADER, header);
150
151
152 final List<List<Object>> customers = new ArrayList<List<Object>>();
153 while( listReader.read() != null ) {
154 final List<Object> customer = listReader.executeProcessors(READ_PROCESSORS);
155 customers.add(customer);
156 }
157
158
159 for( int i = 0; i < customers.size(); i++ ) {
160 final List<Object> customer = customers.get(i);
161 assertEquals(CUSTOMERS.get(i).getCustomerNo(), customer.get(0));
162 assertEquals(CUSTOMERS.get(i).getFirstName(), customer.get(1));
163 assertEquals(CUSTOMERS.get(i).getLastName(), customer.get(2));
164 assertEquals(CUSTOMERS.get(i).getBirthDate(), customer.get(3));
165 assertEquals(CUSTOMERS.get(i).getMailingAddress(), customer.get(4));
166 assertEquals(CUSTOMERS.get(i).getMarried(), customer.get(5));
167 assertEquals(CUSTOMERS.get(i).getNumberOfKids(), customer.get(6));
168 assertEquals(CUSTOMERS.get(i).getFavouriteQuote(), customer.get(7));
169 assertEquals(CUSTOMERS.get(i).getEmail(), customer.get(8));
170 assertEquals(CUSTOMERS.get(i).getLoyaltyPoints(), customer.get(9));
171 }
172
173 assertEquals(CUSTOMERS.size() + 1, listReader.getRowNumber());
174 }
175
176
177
178
179
180 @Test
181 public void testReadUsingTokenizerReader() throws IOException {
182
183 final String[] header = tokenizerListReader.getHeader(true);
184 assertArrayEquals(HEADER, header);
185
186
187 final List<List<String>> customers = new ArrayList<List<String>>();
188 List<String> customer;
189 while( (customer = tokenizerListReader.read()) != null ) {
190 customers.add(customer);
191 }
192
193
194 for( int i = 0; i < customers.size(); i++ ) {
195 customer = customers.get(i);
196 assertEquals(STRING_CUSTOMERS.get(i).getCustomerNo(), customer.get(0));
197 assertEquals(STRING_CUSTOMERS.get(i).getFirstName(), customer.get(1));
198 assertEquals(STRING_CUSTOMERS.get(i).getLastName(), customer.get(2));
199 assertEquals(STRING_CUSTOMERS.get(i).getBirthDate(), customer.get(3));
200 assertEquals(STRING_CUSTOMERS.get(i).getMailingAddress(), customer.get(4));
201 assertEquals(STRING_CUSTOMERS.get(i).getMarried(), customer.get(5));
202 assertEquals(STRING_CUSTOMERS.get(i).getNumberOfKids(), customer.get(6));
203 assertEquals(STRING_CUSTOMERS.get(i).getFavouriteQuote(), customer.get(7));
204 assertEquals(STRING_CUSTOMERS.get(i).getEmail(), customer.get(8));
205 assertEquals(STRING_CUSTOMERS.get(i).getLoyaltyPoints(), customer.get(9));
206 }
207
208 assertEquals(STRING_CUSTOMERS.size() + 1, tokenizerListReader.getRowNumber());
209 }
210
211
212
213
214 @Test(expected = NullPointerException.class)
215 public void testReadProcessorsWithNullProcessors() throws IOException {
216 listReader.read((CellProcessor[]) null);
217 }
218
219
220
221
222 @Test(expected = NullPointerException.class)
223 public void testExecuteProcessorsWithNullProcessors() throws IOException {
224 listReader.executeProcessors((CellProcessor[]) null);
225 }
226
227
228
229
230 @SuppressWarnings("resource")
231 @Test(expected = NullPointerException.class)
232 public void testReaderConstructorWithNullReader() {
233 new CsvListReader((Reader) null, PREFS);
234 }
235
236
237
238
239 @SuppressWarnings("resource")
240 @Test(expected = NullPointerException.class)
241 public void testReaderConstructorWithNullPreferences() {
242 new CsvListReader(reader, null);
243 }
244
245
246
247
248 @SuppressWarnings("resource")
249 @Test(expected = NullPointerException.class)
250 public void testTokenizerConstructorWithNullReader() {
251 new CsvListReader((Tokenizer) null, PREFS);
252 }
253
254
255
256
257 @SuppressWarnings("resource")
258 @Test(expected = NullPointerException.class)
259 public void testTokenizerConstructorWithNullPreferences() {
260 new CsvListReader(new Tokenizer(reader, PREFS), null);
261 }
262
263 }