2626import static org .apache .commons .csv .Token .Type .EOF ;
2727import static org .apache .commons .csv .Token .Type .EORECORD ;
2828import static org .apache .commons .csv .Token .Type .TOKEN ;
29- import static org .junit .Assert .assertEquals ;
3029import static org .junit .Assert .assertFalse ;
3130import static org .junit .Assert .assertTrue ;
3231import static org .junit .Assert .assertThat ;
3332import static org .apache .commons .csv .TokenMatchers .hasContent ;
33+ import static org .apache .commons .csv .TokenMatchers .matches ;
3434
3535import java .io .IOException ;
3636import java .io .StringReader ;
@@ -57,26 +57,21 @@ private Lexer getLexer(final String input, final CSVFormat format) {
5757 return new CSVLexer (format , new ExtendedBufferedReader (new StringReader (input )));
5858 }
5959
60- private void assertTokenEquals (final Token .Type expectedType , final String expectedContent , final Token token ) {
61- assertEquals ("Token type" , expectedType , token .type );
62- assertEquals ("Token content" , expectedContent , token .content .toString ());
63- }
64-
6560 // Single line (without comment)
6661 @ Test
6762 public void testNextToken1 () throws IOException {
6863 final String code = "abc,def, hijk, lmnop, qrst,uv ,wxy ,z , ," ;
6964 final Lexer parser = getLexer (code , CSVFormat .newBuilder ().withIgnoreSurroundingSpaces (true ).build ());
70- assertTokenEquals ( TOKEN , "abc" , parser .nextToken (new Token ()));
71- assertTokenEquals ( TOKEN , "def" , parser .nextToken (new Token ()));
72- assertTokenEquals ( TOKEN , "hijk" , parser .nextToken (new Token ()));
73- assertTokenEquals ( TOKEN , "lmnop" , parser .nextToken (new Token ()));
74- assertTokenEquals ( TOKEN , "qrst" , parser .nextToken (new Token ()));
75- assertTokenEquals ( TOKEN , "uv" , parser .nextToken (new Token ()));
76- assertTokenEquals ( TOKEN , "wxy" , parser .nextToken (new Token ()));
77- assertTokenEquals ( TOKEN , "z" , parser .nextToken (new Token ()));
78- assertTokenEquals ( TOKEN , "" , parser .nextToken (new Token ()));
79- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
65+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "abc" ));
66+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "def" ));
67+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "hijk" ));
68+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "lmnop" ));
69+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "qrst" ));
70+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "uv" ));
71+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "wxy" ));
72+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "z" ));
73+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "" ));
74+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
8075 }
8176
8277 // multiline including comments (and empty lines)
@@ -104,22 +99,22 @@ public void testNextToken2() throws IOException {
10499 final Lexer parser = getLexer (code , format );
105100
106101
107- assertTokenEquals ( TOKEN , "1" , parser .nextToken (new Token ()));
108- assertTokenEquals ( TOKEN , "2" , parser .nextToken (new Token ()));
109- assertTokenEquals ( TOKEN , "3" , parser .nextToken (new Token ()));
110- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 1
111- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
112- assertTokenEquals ( TOKEN , "b x" , parser .nextToken (new Token ()));
113- assertTokenEquals ( EORECORD , "c#no-comment" , parser . nextToken ( new Token () )); // 2
114- assertTokenEquals ( COMMENT , "foo" , parser .nextToken (new Token ())); // 3
102+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "1" ));
103+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "2" ));
104+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "3" ));
105+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 1
106+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
107+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "b x" ));
108+ assertThat ( parser . nextToken ( new Token ()), matches ( EORECORD , "c#no-comment" )); // 2
109+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "foo" )); // 3
115110 // 4 empty line, ignored // 4
116- assertTokenEquals ( TOKEN , "d" , parser .nextToken (new Token ()));
117- assertTokenEquals ( TOKEN , "e" , parser .nextToken (new Token ()));
118- assertTokenEquals ( EORECORD , "#no-comment" , parser .nextToken (new Token ())); // 5
119- assertTokenEquals ( COMMENT , "penultimate comment" , parser .nextToken (new Token ())); // 6
120- assertTokenEquals ( COMMENT , "Final comment" , parser .nextToken (new Token ())); // 7
121- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
122- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
111+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "d" ));
112+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "e" ));
113+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "#no-comment" )); // 5
114+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "penultimate comment" )); // 6
115+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "Final comment" )); // 7
116+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
117+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
123118
124119 }
125120
@@ -147,29 +142,29 @@ public void testNextToken2EmptyLines() throws IOException {
147142 final Lexer parser = getLexer (code , format );
148143
149144
150- assertTokenEquals ( TOKEN , "1" , parser .nextToken (new Token ()));
151- assertTokenEquals ( TOKEN , "2" , parser .nextToken (new Token ()));
152- assertTokenEquals ( TOKEN , "3" , parser .nextToken (new Token ()));
153- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 1
154- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 1b
155- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 1c
156- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
157- assertTokenEquals ( TOKEN , "b x" , parser .nextToken (new Token ()));
158- assertTokenEquals ( EORECORD , "c#no-comment" , parser . nextToken ( new Token () )); // 2
159- assertTokenEquals ( COMMENT , "foo" , parser .nextToken (new Token ())); // 3
160- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 4
161- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 4b
162- assertTokenEquals ( TOKEN , "d" , parser .nextToken (new Token ()));
163- assertTokenEquals ( TOKEN , "e" , parser .nextToken (new Token ()));
164- assertTokenEquals ( EORECORD , "#no-comment" , parser .nextToken (new Token ())); // 5
165- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 5b
166- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 5c
167- assertTokenEquals ( COMMENT , "penultimate comment" , parser .nextToken (new Token ())); // 6
168- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 6b
169- assertTokenEquals ( EORECORD , "" , parser .nextToken (new Token ())); // 6c
170- assertTokenEquals ( COMMENT , "Final comment" , parser .nextToken (new Token ())); // 7
171- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
172- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
145+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "1" ));
146+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "2" ));
147+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "3" ));
148+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 1
149+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 1b
150+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 1c
151+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
152+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "b x" ));
153+ assertThat ( parser . nextToken ( new Token ()), matches ( EORECORD , "c#no-comment" )); // 2
154+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "foo" )); // 3
155+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 4
156+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 4b
157+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "d" ));
158+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "e" ));
159+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "#no-comment" )); // 5
160+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 5b
161+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 5c
162+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "penultimate comment" )); // 6
163+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 6b
164+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "" )); // 6c
165+ assertThat ( parser .nextToken (new Token ()), matches ( COMMENT , "Final comment" )); // 7
166+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
167+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
173168
174169 }
175170
@@ -184,15 +179,15 @@ public void testNextToken3() throws IOException {
184179 assertFalse (format .isEscaping ());
185180 final Lexer parser = getLexer (code , format );
186181
187- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
182+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
188183 // an unquoted single backslash is not an escape char
189- assertTokenEquals ( TOKEN , " \\ " , parser .nextToken (new Token ()));
190- assertTokenEquals ( TOKEN , "" , parser .nextToken (new Token ()));
191- assertTokenEquals ( EORECORD , "b \\ " , parser .nextToken (new Token ()));
184+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , " \\ " ));
185+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "" ));
186+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b \\ " ));
192187 // an unquoted single backslash is not an escape char
193- assertTokenEquals ( TOKEN , " \\ " , parser .nextToken (new Token ()));
194- assertTokenEquals ( TOKEN , "" , parser .nextToken (new Token ()));
195- assertTokenEquals ( EOF , "" , parser .nextToken (new Token ()));
188+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , " \\ " ));
189+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "" ));
190+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "" ));
196191 }
197192
198193 // simple token with escaping enabled
@@ -206,13 +201,13 @@ public void testNextToken3Escaping() throws IOException {
206201 assertTrue (format .isEscaping ());
207202 final Lexer parser = getLexer (code , format );
208203
209- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
210- assertTokenEquals ( TOKEN , "," , parser .nextToken (new Token ()));
211- assertTokenEquals ( EORECORD , "b \\ " , parser .nextToken (new Token ()));
212- assertTokenEquals ( TOKEN , "," , parser .nextToken (new Token ()));
213- assertTokenEquals ( TOKEN , " \n c" , parser .nextToken (new Token ()));
214- assertTokenEquals ( EORECORD , "d \r " , parser .nextToken (new Token ()));
215- assertTokenEquals ( EOF , "e" , parser .nextToken (new Token ()));
204+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
205+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "," ));
206+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b \\ " ));
207+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "," ));
208+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , " \n c" ));
209+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "d \r " ));
210+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "e" ));
216211 }
217212
218213 // encapsulator tokenizer (single line)
@@ -225,31 +220,31 @@ public void testNextToken4() throws IOException {
225220 */
226221 final String code = "a,\" foo\" ,b\n a, \" foo\" ,b\n a,\" foo \" ,b\n a, \" foo \" ,b" ;
227222 final Lexer parser = getLexer (code , CSVFormat .newBuilder ().withIgnoreSurroundingSpaces (true ).build ());
228- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
229- assertTokenEquals ( TOKEN , "foo" , parser .nextToken (new Token ()));
230- assertTokenEquals ( EORECORD , "b" , parser .nextToken (new Token ()));
231- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
232- assertTokenEquals ( TOKEN , " foo" , parser .nextToken (new Token ()));
233- assertTokenEquals ( EORECORD , "b" , parser .nextToken (new Token ()));
234- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
235- assertTokenEquals ( TOKEN , "foo " , parser .nextToken (new Token ()));
236- assertTokenEquals ( EORECORD , "b" , parser .nextToken (new Token ()));
237- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
238- assertTokenEquals ( TOKEN , " foo " , parser .nextToken (new Token ()));
223+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
224+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "foo" ));
225+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b" ));
226+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
227+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , " foo" ));
228+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b" ));
229+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
230+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "foo " ));
231+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b" ));
232+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
233+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , " foo " ));
239234// assertTokenEquals(EORECORD, "b", parser.nextToken(new Token()));
240- assertTokenEquals ( EOF , "b" , parser .nextToken (new Token ()));
235+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "b" ));
241236 }
242237
243238 // encapsulator tokenizer (multi line, delimiter in string)
244239 @ Test
245240 public void testNextToken5 () throws IOException {
246241 final String code = "a,\" foo\n \" ,b\n \" foo\n baar ,,,\" \n \" \n \t \n \" " ;
247242 final Lexer parser = getLexer (code , CSVFormat .DEFAULT );
248- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
249- assertTokenEquals ( TOKEN , "foo \n " , parser .nextToken (new Token ()));
250- assertTokenEquals ( EORECORD , "b" , parser .nextToken (new Token ()));
251- assertTokenEquals ( EORECORD , "foo\n baar ,,," , parser . nextToken ( new Token () ));
252- assertTokenEquals ( EOF , "\n \t \n " , parser . nextToken ( new Token () ));
243+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
244+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "foo \n " ));
245+ assertThat ( parser .nextToken (new Token ()), matches ( EORECORD , "b" ));
246+ assertThat ( parser . nextToken ( new Token ()), matches ( EORECORD , "foo\n baar ,,," ));
247+ assertThat ( parser . nextToken ( new Token ()), matches ( EOF , "\n \t \n " ));
253248
254249 }
255250
@@ -264,21 +259,21 @@ public void testNextToken6() throws IOException {
264259 final String code = "a;'b and '' more\n '\n !comment;;;;\n ;;" ;
265260 final CSVFormat format = CSVFormat .newBuilder ().withDelimiter (';' ).withQuoteChar ('\'' ).withCommentStart ('!' ).build ();
266261 final Lexer parser = getLexer (code , format );
267- assertTokenEquals ( TOKEN , "a" , parser .nextToken (new Token ()));
268- assertTokenEquals ( EORECORD , "b and ' more\n " , parser . nextToken ( new Token () ));
262+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "a" ));
263+ assertThat ( parser . nextToken ( new Token ()), matches ( EORECORD , "b and ' more\n " ));
269264 }
270265
271266 // From CSV-1
272267 @ Test
273268 public void testDelimiterIsWhitespace () throws IOException {
274269 final String code = "one\t two\t \t four \t five\t six" ;
275270 final Lexer parser = getLexer (code , CSVFormat .TDF );
276- assertTokenEquals ( TOKEN , "one" , parser .nextToken (new Token ()));
277- assertTokenEquals ( TOKEN , "two" , parser .nextToken (new Token ()));
278- assertTokenEquals ( TOKEN , "" , parser .nextToken (new Token ()));
279- assertTokenEquals ( TOKEN , "four" , parser .nextToken (new Token ()));
280- assertTokenEquals ( TOKEN , "five" , parser .nextToken (new Token ()));
281- assertTokenEquals ( EOF , "six" , parser .nextToken (new Token ()));
271+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "one" ));
272+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "two" ));
273+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "" ));
274+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "four" ));
275+ assertThat ( parser .nextToken (new Token ()), matches ( TOKEN , "five" ));
276+ assertThat ( parser .nextToken (new Token ()), matches ( EOF , "six" ));
282277 }
283278
284279 @ Test
0 commit comments