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 }