Fix readLine() so can still detect start of line next time round
Also fix broken test: format was set to ignore empty lines, yet it checked for one git-svn-id: https://svn.apache.org/repos/asf/commons/proper/csv/trunk@1306649 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7addc8f688
commit
70f00f973a
|
@ -123,9 +123,7 @@ class ExtendedBufferedReader extends BufferedReader {
|
||||||
String line = super.readLine();
|
String line = super.readLine();
|
||||||
|
|
||||||
if (line != null) {
|
if (line != null) {
|
||||||
if (line.length() > 0) {
|
lastChar = '\n'; // needed for detecting start of line
|
||||||
lastChar = line.charAt(line.length() - 1);
|
|
||||||
}
|
|
||||||
lineCounter++;
|
lineCounter++;
|
||||||
} else {
|
} else {
|
||||||
lastChar = END_OF_STREAM;
|
lastChar = END_OF_STREAM;
|
||||||
|
|
|
@ -57,13 +57,15 @@ public class CSVLexerTest {
|
||||||
@Test
|
@Test
|
||||||
public void testNextToken2() throws IOException {
|
public void testNextToken2() throws IOException {
|
||||||
final String code =
|
final String code =
|
||||||
"1,2,3,\n"+
|
"1,2,3,\n"+ // 1
|
||||||
"a,b x,c#no-comment\n"+
|
"a,b x,c#no-comment\n"+ // 2
|
||||||
"#foo\n"+
|
"#foo\n"+ // 3
|
||||||
"\n"+
|
"\n"+ // 4
|
||||||
"d,e,#no-comment\n"+
|
"d,e,#no-comment\n"+ // 5
|
||||||
"# Final comment\n";
|
"# penultimate comment\n"+ // 6
|
||||||
|
"# Final comment\n"; // 7
|
||||||
CSVFormat format = CSVFormat.DEFAULT.withCommentStart('#');
|
CSVFormat format = CSVFormat.DEFAULT.withCommentStart('#');
|
||||||
|
assertTrue("Should ignore empty lines", format.isEmptyLinesIgnored());
|
||||||
|
|
||||||
Lexer parser = getLexer(code, format);
|
Lexer parser = getLexer(code, format);
|
||||||
|
|
||||||
|
@ -71,16 +73,17 @@ public class CSVLexerTest {
|
||||||
assertTokenEquals(TOKEN, "1", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "1", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(TOKEN, "2", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "2", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(TOKEN, "3", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "3", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(EORECORD, "", parser.nextToken(new Token()));
|
assertTokenEquals(EORECORD, "", parser.nextToken(new Token())); // 1
|
||||||
assertTokenEquals(TOKEN, "a", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "a", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(TOKEN, "b x", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "b x", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(EORECORD, "c#no-comment", parser.nextToken(new Token()));
|
assertTokenEquals(EORECORD, "c#no-comment", parser.nextToken(new Token())); // 2
|
||||||
assertTokenEquals(COMMENT, "", parser.nextToken(new Token()));
|
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 3
|
||||||
assertTokenEquals(EORECORD, "", parser.nextToken(new Token()));
|
// 4 empty line, ignored // 4
|
||||||
assertTokenEquals(TOKEN, "d", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "d", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(TOKEN, "e", parser.nextToken(new Token()));
|
assertTokenEquals(TOKEN, "e", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(EORECORD, "#no-comment", parser.nextToken(new Token()));
|
assertTokenEquals(EORECORD, "#no-comment", parser.nextToken(new Token())); // 5
|
||||||
assertTokenEquals(COMMENT, "", parser.nextToken(new Token()));
|
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 6
|
||||||
|
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 7
|
||||||
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
|
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
|
||||||
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
|
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue