|
34 | 34 | import java.io.IOException; |
35 | 35 | import java.io.StringReader; |
36 | 36 |
|
| 37 | +import org.junit.Ignore; |
37 | 38 | import org.junit.Test; |
38 | 39 |
|
39 | 40 | /** |
@@ -289,20 +290,56 @@ public void testDelimiterIsWhitespace() throws IOException { |
289 | 290 | } |
290 | 291 |
|
291 | 292 | @Test |
292 | | - public void testEscaping() throws Exception { |
293 | | - final String code = "plain," + |
294 | | - "CR!" + CR + "Escaped," + |
295 | | - "LF!" + LF +"Escaped," + |
296 | | - "TAB!" + TAB +"Escaped," + |
297 | | - "BACKSPACE!" + BACKSPACE +"Escaped," + |
298 | | - "FF!" + FF +"Escaped"; |
299 | | - final Lexer lexer = getLexer(code, CSVFormat.newBuilder().withEscape('!').build()); |
300 | | - assertTokenEquals(TOKEN, "plain", lexer.nextToken(new Token())); |
301 | | - assertTokenEquals(TOKEN, "CR" + CR + "Escaped", lexer.nextToken(new Token())); |
302 | | - assertTokenEquals(TOKEN, "LF" + LF + "Escaped", lexer.nextToken(new Token())); |
303 | | - assertTokenEquals(TOKEN, "TAB" + TAB + "Escaped", lexer.nextToken(new Token())); |
304 | | - assertTokenEquals(TOKEN, "BACKSPACE" + BACKSPACE + "Escaped", lexer.nextToken(new Token())); |
305 | | - assertTokenEquals(EOF, "FF" + FF + "Escaped", lexer.nextToken(new Token())); |
| 293 | + public void testEscapedCR() throws Exception { |
| 294 | + final Lexer lexer = getLexer("character\\" + CR + "Escaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 295 | + assertTokenEquals(EOF, "character" + CR + "Escaped", lexer.nextToken(new Token())); |
| 296 | + } |
| 297 | + |
| 298 | + @Test |
| 299 | + public void testEscapedLF() throws Exception { |
| 300 | + final Lexer lexer = getLexer("character\\" + LF + "Escaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 301 | + assertTokenEquals(EOF, "character" + LF + "Escaped", lexer.nextToken(new Token())); |
| 302 | + } |
| 303 | + |
| 304 | + @Test |
| 305 | + public void testEscapedTab() throws Exception { |
| 306 | + final Lexer lexer = getLexer("character\\" + TAB + "Escaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 307 | + assertTokenEquals(EOF, "character" + TAB + "Escaped", lexer.nextToken(new Token())); |
| 308 | + } |
| 309 | + |
| 310 | + @Test |
| 311 | + public void testEscapeBackspace() throws Exception { |
| 312 | + final Lexer lexer = getLexer("character\\" + BACKSPACE + "Escaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 313 | + assertTokenEquals(EOF, "character" + BACKSPACE + "Escaped", lexer.nextToken(new Token())); |
| 314 | + } |
| 315 | + |
| 316 | + @Test |
| 317 | + public void testEscapeFF() throws Exception { |
| 318 | + final Lexer lexer = getLexer("character\\" + FF + "Escaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 319 | + assertTokenEquals(EOF, "character" + FF + "Escaped", lexer.nextToken(new Token())); |
| 320 | + } |
| 321 | + |
| 322 | + @Test |
| 323 | + public void testEscapedMySqlNullValue() throws Exception { |
| 324 | + // MySQL uses \N to symbolize null values. We have to restore this |
| 325 | + final Lexer lexer = getLexer("character\\\\NEscaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 326 | + assertTokenEquals(EOF, "character\\NEscaped", lexer.nextToken(new Token())); |
| 327 | + } |
| 328 | + |
| 329 | + // FIXME this should work after CSV-58 is resolved. Currently the result will be "characteraEscaped" |
| 330 | + @Test |
| 331 | + @Ignore |
| 332 | + public void testEscapedCharacter() throws Exception { |
| 333 | + final Lexer lexer = getLexer("character\\aEscaped", CSVFormat.newBuilder().withEscape('\\').build()); |
| 334 | + assertTokenEquals(EOF, "character\\aEscaped", lexer.nextToken(new Token())); |
| 335 | + } |
| 336 | + |
| 337 | + // FIXME this should work after CSV-58 is resolved. Currentyl the result will be "characterCREscaped" |
| 338 | + @Test |
| 339 | + @Ignore |
| 340 | + public void testEscapedControlCharacter() throws Exception { |
| 341 | + final Lexer lexer = getLexer("character!rEscaped", CSVFormat.newBuilder().withEscape('!').build()); |
| 342 | + assertTokenEquals(EOF, "character!rEscaped", lexer.nextToken(new Token())); |
306 | 343 | } |
307 | 344 |
|
308 | 345 | @Test(expected = IOException.class) |
|
0 commit comments