Skip to content

Commit 3a1806b

Browse files
committed
Split up escape testing into separate methods, add escaping tests that should work after CSV-58 is resolved (currently ignored)
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/csv/trunk@1460364 13f79535-47bb-0310-9956-ffa450edef68
1 parent 6b67a34 commit 3a1806b

1 file changed

Lines changed: 51 additions & 14 deletions

File tree

src/test/java/org/apache/commons/csv/CSVLexerTest.java

Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.io.IOException;
3535
import java.io.StringReader;
3636

37+
import org.junit.Ignore;
3738
import org.junit.Test;
3839

3940
/**
@@ -289,20 +290,56 @@ public void testDelimiterIsWhitespace() throws IOException {
289290
}
290291

291292
@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()));
306343
}
307344

308345
@Test(expected = IOException.class)

0 commit comments

Comments
 (0)