You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2013/05/07 17:12:49 UTC
svn commit: r1479936 - in /commons/proper/csv/trunk/src:
main/java/org/apache/commons/csv/ test/java/org/apache/commons/csv/
Author: sebb
Date: Tue May 7 15:12:48 2013
New Revision: 1479936
URL: http://svn.apache.org/r1479936
Log:
CSV-98 Line number counting is confusing
Modified:
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java Tue May 7 15:12:48 2013
@@ -202,7 +202,7 @@ final class CSVLexer extends Lexer {
*/
private Token parseEncapsulatedToken(final Token tkn) throws IOException {
// save current line number in case needed for IOE
- final long startLineNumber = getLineNumber();
+ final long startLineNumber = getCurrentLineNumber();
int c;
while (true) {
c = in.read();
@@ -235,7 +235,7 @@ final class CSVLexer extends Lexer {
return tkn;
} else if (!isWhitespace(c)) {
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() +
+ throw new IOException("(line " + getCurrentLineNumber() +
") invalid char between encapsulated token and delimiter");
}
}
Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java Tue May 7 15:12:48 2013
@@ -158,8 +158,8 @@ public class CSVParser implements Iterab
*
* @return current line number
*/
- public long getLineNumber() {
- return lexer.getLineNumber();
+ public long getCurrentLineNumber() {
+ return lexer.getCurrentLineNumber();
}
/**
@@ -200,7 +200,7 @@ public class CSVParser implements Iterab
}
break;
case INVALID:
- throw new IOException("(line " + getLineNumber() + ") invalid parse sequence");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid parse sequence");
case COMMENT: // Ignored currently
if (sb == null) { // first comment for this record
sb = new StringBuilder();
Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java Tue May 7 15:12:48 2013
@@ -39,8 +39,8 @@ final class ExtendedBufferedReader exten
/** The last char returned */
private int lastChar = UNDEFINED;
- /** The line counter */
- private long lineCounter;
+ /** The count of EOLs (CR/LF/CRLF) seen so far */
+ private long eolCounter = 0;
/**
* Created extended buffered reader using default buffer-size
@@ -53,7 +53,7 @@ final class ExtendedBufferedReader exten
public int read() throws IOException {
final int current = super.read();
if (current == CR || (current == LF && lastChar != CR)) {
- lineCounter++;
+ eolCounter++;
}
lastChar = current;
return lastChar;
@@ -85,10 +85,10 @@ final class ExtendedBufferedReader exten
final char ch = buf[i];
if (ch == LF) {
if (CR != (i > 0 ? buf[i - 1] : lastChar)) {
- lineCounter++;
+ eolCounter++;
}
} else if (ch == CR) {
- lineCounter++;
+ eolCounter++;
}
}
@@ -105,7 +105,7 @@ final class ExtendedBufferedReader exten
* Calls {@link BufferedReader#readLine()} which drops the line terminator(s). This method should only be called
* when processing a comment, otherwise information can be lost.
* <p>
- * Increments {@link #lineCounter}
+ * Increments {@link #eolCounter}
* <p>
* Sets {@link #lastChar} to {@link #END_OF_STREAM} at EOF, otherwise to LF
*
@@ -117,7 +117,7 @@ final class ExtendedBufferedReader exten
if (line != null) {
lastChar = LF; // needed for detecting start of line
- lineCounter++;
+ eolCounter++;
} else {
lastChar = END_OF_STREAM;
}
@@ -127,7 +127,7 @@ final class ExtendedBufferedReader exten
/**
* Returns the next character in the current reader without consuming it. So the next call to {@link #read()} will
- * still return this value.
+ * still return this value. Does not affect line number or last character.
*
* @return the next character
*
@@ -143,11 +143,15 @@ final class ExtendedBufferedReader exten
}
/**
- * Returns the number of lines read
+ * Returns the current line number
*
- * @return the number of EOLs seen so far
+ * @return the current line number
*/
- long getLineNumber() {
- return lineCounter;
+ long getCurrentLineNumber() {
+ // Check if we are at EOL or EOF or just starting
+ if (lastChar == CR || lastChar == LF || lastChar == UNDEFINED || lastChar == END_OF_STREAM) {
+ return eolCounter; // counter is accurate
+ }
+ return eolCounter + 1; // Allow for counter being incremented only at EOL
}
}
Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java Tue May 7 15:12:48 2013
@@ -70,12 +70,12 @@ abstract class Lexer {
}
/**
- * Returns the number of lines read
+ * Returns the current line number
*
- * @return the number of EOLs seen so far
+ * @return the current line number
*/
- long getLineNumber() {
- return in.getLineNumber();
+ long getCurrentLineNumber() {
+ return in.getCurrentLineNumber();
}
// TODO escape handling needs more work
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java Tue May 7 15:12:48 2013
@@ -198,7 +198,7 @@ class CSVLexer1 extends Lexer {
*/
private Token encapsulatedTokenLexer(final Token tkn, int c) throws IOException {
// save current line
- final long startLineNumber = getLineNumber();
+ final long startLineNumber = getCurrentLineNumber();
// ignore the given delimiter
// assert c == delimiter;
while (true) {
@@ -230,7 +230,7 @@ class CSVLexer1 extends Lexer {
return tkn;
} else if (!isWhitespace(c)) {
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() + ") invalid char between encapsulated token and delimiter");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid char between encapsulated token and delimiter");
}
}
}
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java Tue May 7 15:12:48 2013
@@ -187,7 +187,7 @@ class CSVLexer1306663 extends Lexer {
*/
private Token encapsulatedTokenLexer(final Token tkn) throws IOException {
// save current line
- final long startLineNumber = getLineNumber();
+ final long startLineNumber = getCurrentLineNumber();
// ignore the given delimiter
// assert c == delimiter;
int c;
@@ -218,7 +218,7 @@ class CSVLexer1306663 extends Lexer {
return tkn;
} else if (!isWhitespace(c)) {
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() + ") invalid char between encapsulated token and delimiter");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid char between encapsulated token and delimiter");
}
}
}
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java Tue May 7 15:12:48 2013
@@ -187,7 +187,7 @@ class CSVLexer1306667 extends Lexer {
*/
private Token encapsulatedTokenLexer(final Token tkn) throws IOException {
// save current line
- final long startLineNumber = getLineNumber();
+ final long startLineNumber = getCurrentLineNumber();
// ignore the given delimiter
// assert c == delimiter;
int c;
@@ -218,7 +218,7 @@ class CSVLexer1306667 extends Lexer {
return tkn;
} else if (!isWhitespace(c)) {
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() + ") invalid char between encapsulated token and delimiter");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid char between encapsulated token and delimiter");
}
}
}
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java Tue May 7 15:12:48 2013
@@ -170,7 +170,7 @@ class CSVLexer3 extends Lexer {
state = State.ESCAPE_QUOTE;
break;
case EOFCHAR:
- throw new IOException("(line " + getLineNumber() + ") unexpected EOF in quoted string");
+ throw new IOException("(line " + getCurrentLineNumber() + ") unexpected EOF in quoted string");
default:
tkn.content.append((char) intch);
break;
@@ -194,7 +194,7 @@ class CSVLexer3 extends Lexer {
case WHITESPACE: // trailing whitespace may be allowed
if (!ignoreSurroundingSpaces) {
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() + ") invalid char between encapsulated token and delimiter");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid char between encapsulated token and delimiter");
}
break;
// Everything else is invalid
@@ -202,7 +202,7 @@ class CSVLexer3 extends Lexer {
case OTHER:
case COMMENT_START:
// error invalid char between token and next delimiter
- throw new IOException("(line " + getLineNumber() + ") invalid char between encapsulated token and delimiter");
+ throw new IOException("(line " + getCurrentLineNumber() + ") invalid char between encapsulated token and delimiter");
}
break;
case ESCAPE_PLAIN:
@@ -221,7 +221,7 @@ class CSVLexer3 extends Lexer {
tkn.content.append((char) intch);
break;
case EOFCHAR:
- throw new IOException("(line " + getLineNumber() + ") unexpected EOF in escape sequence");
+ throw new IOException("(line " + getCurrentLineNumber() + ") unexpected EOF in escape sequence");
}
break;
case ESCAPE_QUOTE:
@@ -239,7 +239,7 @@ class CSVLexer3 extends Lexer {
tkn.content.append((char) intch);
break;
case EOFCHAR:
- throw new IOException("(line " + getLineNumber() + ") unexpected EOF in escape sequence");
+ throw new IOException("(line " + getCurrentLineNumber() + ") unexpected EOF in escape sequence");
}
break;
default:
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java Tue May 7 15:12:48 2013
@@ -629,21 +629,21 @@ public class CSVParserTest {
CSVFormat.newBuilder().withRecordSeparator(CRLF).build());
CSVRecord record;
assertEquals(0, parser.getRecordNumber());
- assertEquals(0, parser.getLineNumber());
+ assertEquals(0, parser.getCurrentLineNumber());
assertNotNull(record = parser.nextRecord());
- assertEquals(3, parser.getLineNumber());
+ assertEquals(3, parser.getCurrentLineNumber());
assertEquals(1, record.getRecordNumber());
assertEquals(1, parser.getRecordNumber());
assertNotNull(record = parser.nextRecord());
- assertEquals(6, parser.getLineNumber());
+ assertEquals(6, parser.getCurrentLineNumber());
assertEquals(2, record.getRecordNumber());
assertEquals(2, parser.getRecordNumber());
assertNotNull(record = parser.nextRecord());
- assertEquals(8, parser.getLineNumber());
+ assertEquals(8, parser.getCurrentLineNumber());
assertEquals(3, record.getRecordNumber());
assertEquals(3, parser.getRecordNumber());
assertNull(record = parser.nextRecord());
- assertEquals(8, parser.getLineNumber());
+ assertEquals(8, parser.getCurrentLineNumber());
assertEquals(3, parser.getRecordNumber());
}
@@ -676,17 +676,17 @@ public class CSVParserTest {
private void validateLineNumbers(final String lineSeparator) throws IOException {
final CSVParser parser = new CSVParser("a" + lineSeparator + "b" + lineSeparator + "c", CSVFormat.newBuilder().withRecordSeparator(lineSeparator).build());
- assertEquals(0, parser.getLineNumber());
+ assertEquals(0, parser.getCurrentLineNumber());
assertNotNull(parser.nextRecord());
- assertEquals(1, parser.getLineNumber());
+ assertEquals(1, parser.getCurrentLineNumber());
assertNotNull(parser.nextRecord());
- assertEquals(2, parser.getLineNumber());
+ assertEquals(2, parser.getCurrentLineNumber());
assertNotNull(parser.nextRecord());
// Still 2 because the last line is does not have EOL chars
- assertEquals(2, parser.getLineNumber());
+ assertEquals(2, parser.getCurrentLineNumber());
assertNull(parser.nextRecord());
// Still 2 because the last line is does not have EOL chars
- assertEquals(2, parser.getLineNumber());
+ assertEquals(2, parser.getCurrentLineNumber());
}
}
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java?rev=1479936&r1=1479935&r2=1479936&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java Tue May 7 15:12:48 2013
@@ -47,44 +47,50 @@ public class ExtendedBufferedReaderTest
@Test
public void testReadLookahead1() throws Exception {
final ExtendedBufferedReader br = getBufferedReader("1\n2\r3\n");
+ assertEquals(0, br.getCurrentLineNumber());
assertEquals('1', br.lookAhead());
assertEquals(UNDEFINED, br.getLastChar());
- assertEquals('1', br.read());
+ assertEquals(0, br.getCurrentLineNumber());
+ assertEquals('1', br.read()); // Start line 1
assertEquals('1', br.getLastChar());
- assertEquals(0, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('\n', br.lookAhead());
- assertEquals(0, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('1', br.getLastChar());
assertEquals('\n', br.read());
- assertEquals(1, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('\n', br.getLastChar());
- assertEquals(1, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('2', br.lookAhead());
- assertEquals(1, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('\n', br.getLastChar());
- assertEquals(1, br.getLineNumber());
- assertEquals('2', br.read());
+ assertEquals(1, br.getCurrentLineNumber());
+ assertEquals('2', br.read()); // Start line 2
+ assertEquals(2, br.getCurrentLineNumber());
assertEquals('2', br.getLastChar());
assertEquals('\r', br.lookAhead());
+ assertEquals(2, br.getCurrentLineNumber());
assertEquals('2', br.getLastChar());
assertEquals('\r', br.read());
assertEquals('\r', br.getLastChar());
+ assertEquals(2, br.getCurrentLineNumber());
assertEquals('3', br.lookAhead());
assertEquals('\r', br.getLastChar());
- assertEquals('3', br.read());
+ assertEquals('3', br.read()); // Start line 3
assertEquals('3', br.getLastChar());
+ assertEquals(3, br.getCurrentLineNumber());
assertEquals('\n', br.lookAhead());
- assertEquals(2, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
assertEquals('3', br.getLastChar());
assertEquals('\n', br.read());
- assertEquals(3, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
assertEquals('\n', br.getLastChar());
- assertEquals(3, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
assertEquals(END_OF_STREAM, br.lookAhead());
assertEquals('\n', br.getLastChar());
@@ -92,6 +98,7 @@ public class ExtendedBufferedReaderTest
assertEquals(END_OF_STREAM, br.getLastChar());
assertEquals(END_OF_STREAM, br.read());
assertEquals(END_OF_STREAM, br.lookAhead());
+ assertEquals(3, br.getCurrentLineNumber());
}
@@ -125,28 +132,28 @@ public class ExtendedBufferedReaderTest
assertNull(br.readLine());
br = getBufferedReader("foo\n\nhello");
- assertEquals(0, br.getLineNumber());
+ assertEquals(0, br.getCurrentLineNumber());
assertEquals("foo",br.readLine());
- assertEquals(1, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals("",br.readLine());
- assertEquals(2, br.getLineNumber());
+ assertEquals(2, br.getCurrentLineNumber());
assertEquals("hello",br.readLine());
- assertEquals(3, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
assertNull(br.readLine());
- assertEquals(3, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
br = getBufferedReader("foo\n\nhello");
assertEquals('f', br.read());
assertEquals('o', br.lookAhead());
assertEquals("oo",br.readLine());
- assertEquals(1, br.getLineNumber());
+ assertEquals(1, br.getCurrentLineNumber());
assertEquals('\n', br.lookAhead());
assertEquals("",br.readLine());
- assertEquals(2, br.getLineNumber());
+ assertEquals(2, br.getCurrentLineNumber());
assertEquals('h', br.lookAhead());
assertEquals("hello",br.readLine());
assertNull(br.readLine());
- assertEquals(3, br.getLineNumber());
+ assertEquals(3, br.getCurrentLineNumber());
br = getBufferedReader("foo\rbaar\r\nfoo");
@@ -171,20 +178,20 @@ public class ExtendedBufferedReaderTest
ExtendedBufferedReader br;
br = getBufferedReader(test);
- assertEquals(0, br.getLineNumber());
+ assertEquals(0, br.getCurrentLineNumber());
while(br.readLine()!=null) {}
- assertEquals(EOLeolct, br.getLineNumber());
+ assertEquals(EOLeolct, br.getCurrentLineNumber());
br = getBufferedReader(test);
- assertEquals(0, br.getLineNumber());
+ assertEquals(0, br.getCurrentLineNumber());
while(br.read()!=-1) {}
- assertEquals(EOLeolct, br.getLineNumber());
+ assertEquals(EOLeolct, br.getCurrentLineNumber());
br = getBufferedReader(test);
- assertEquals(0, br.getLineNumber());
+ assertEquals(0, br.getCurrentLineNumber());
final char[] buff = new char[10];
while(br.read(buff ,0, 3)!=-1) {}
- assertEquals(EOLeolct, br.getLineNumber());
+ assertEquals(EOLeolct, br.getCurrentLineNumber());
}
private ExtendedBufferedReader getBufferedReader(final String s) {
Re: svn commit: r1479936 - in /commons/proper/csv/trunk/src:
main/java/org/apache/commons/csv/ test/java/org/apache/commons/csv/
Posted by sebb <se...@gmail.com>.
On 7 May 2013 16:18, Benedikt Ritter <br...@apache.org> wrote:
> 2013/5/7 <se...@apache.org>
>
>> Author: sebb
>> Date: Tue May 7 15:12:48 2013
>> New Revision: 1479936
>>
>> URL: http://svn.apache.org/r1479936
>> Log:
>> CSV-98 Line number counting is confusing
>>
>> Modified:
>>
>> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
>>
>> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
>>
>> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>>
>> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
>>
>> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
>>
>> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
>>
>> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
>>
>> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
>>
>
> The above 4 lines look strange to me. We should add the corresponding
> Lexers of the above revisions.
>
Feel free.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: svn commit: r1479936 - in /commons/proper/csv/trunk/src:
main/java/org/apache/commons/csv/ test/java/org/apache/commons/csv/
Posted by Benedikt Ritter <br...@apache.org>.
2013/5/7 <se...@apache.org>
> Author: sebb
> Date: Tue May 7 15:12:48 2013
> New Revision: 1479936
>
> URL: http://svn.apache.org/r1479936
> Log:
> CSV-98 Line number counting is confusing
>
> Modified:
>
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
>
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
>
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
>
The above 4 lines look strange to me. We should add the corresponding
Lexers of the above revisions.
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
>
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
>
> Modified:
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
> (original)
> +++
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVLexer.java
> Tue May 7 15:12:48 2013
> @@ -202,7 +202,7 @@ final class CSVLexer extends Lexer {
> */
> private Token parseEncapsulatedToken(final Token tkn) throws
> IOException {
> // save current line number in case needed for IOE
> - final long startLineNumber = getLineNumber();
> + final long startLineNumber = getCurrentLineNumber();
> int c;
> while (true) {
> c = in.read();
> @@ -235,7 +235,7 @@ final class CSVLexer extends Lexer {
> return tkn;
> } else if (!isWhitespace(c)) {
> // error invalid char between token and next
> delimiter
> - throw new IOException("(line " +
> getLineNumber() +
> + throw new IOException("(line " +
> getCurrentLineNumber() +
> ") invalid char between encapsulated
> token and delimiter");
> }
> }
>
> Modified:
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> (original)
> +++
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> Tue May 7 15:12:48 2013
> @@ -158,8 +158,8 @@ public class CSVParser implements Iterab
> *
> * @return current line number
> */
> - public long getLineNumber() {
> - return lexer.getLineNumber();
> + public long getCurrentLineNumber() {
> + return lexer.getCurrentLineNumber();
> }
>
> /**
> @@ -200,7 +200,7 @@ public class CSVParser implements Iterab
> }
> break;
> case INVALID:
> - throw new IOException("(line " + getLineNumber() + ")
> invalid parse sequence");
> + throw new IOException("(line " + getCurrentLineNumber() +
> ") invalid parse sequence");
> case COMMENT: // Ignored currently
> if (sb == null) { // first comment for this record
> sb = new StringBuilder();
>
> Modified:
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
> (original)
> +++
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
> Tue May 7 15:12:48 2013
> @@ -39,8 +39,8 @@ final class ExtendedBufferedReader exten
> /** The last char returned */
> private int lastChar = UNDEFINED;
>
> - /** The line counter */
> - private long lineCounter;
> + /** The count of EOLs (CR/LF/CRLF) seen so far */
> + private long eolCounter = 0;
>
> /**
> * Created extended buffered reader using default buffer-size
> @@ -53,7 +53,7 @@ final class ExtendedBufferedReader exten
> public int read() throws IOException {
> final int current = super.read();
> if (current == CR || (current == LF && lastChar != CR)) {
> - lineCounter++;
> + eolCounter++;
> }
> lastChar = current;
> return lastChar;
> @@ -85,10 +85,10 @@ final class ExtendedBufferedReader exten
> final char ch = buf[i];
> if (ch == LF) {
> if (CR != (i > 0 ? buf[i - 1] : lastChar)) {
> - lineCounter++;
> + eolCounter++;
> }
> } else if (ch == CR) {
> - lineCounter++;
> + eolCounter++;
> }
> }
>
> @@ -105,7 +105,7 @@ final class ExtendedBufferedReader exten
> * Calls {@link BufferedReader#readLine()} which drops the line
> terminator(s). This method should only be called
> * when processing a comment, otherwise information can be lost.
> * <p>
> - * Increments {@link #lineCounter}
> + * Increments {@link #eolCounter}
> * <p>
> * Sets {@link #lastChar} to {@link #END_OF_STREAM} at EOF, otherwise
> to LF
> *
> @@ -117,7 +117,7 @@ final class ExtendedBufferedReader exten
>
> if (line != null) {
> lastChar = LF; // needed for detecting start of line
> - lineCounter++;
> + eolCounter++;
> } else {
> lastChar = END_OF_STREAM;
> }
> @@ -127,7 +127,7 @@ final class ExtendedBufferedReader exten
>
> /**
> * Returns the next character in the current reader without consuming
> it. So the next call to {@link #read()} will
> - * still return this value.
> + * still return this value. Does not affect line number or last
> character.
> *
> * @return the next character
> *
> @@ -143,11 +143,15 @@ final class ExtendedBufferedReader exten
> }
>
> /**
> - * Returns the number of lines read
> + * Returns the current line number
> *
> - * @return the number of EOLs seen so far
> + * @return the current line number
> */
> - long getLineNumber() {
> - return lineCounter;
> + long getCurrentLineNumber() {
> + // Check if we are at EOL or EOF or just starting
> + if (lastChar == CR || lastChar == LF || lastChar == UNDEFINED ||
> lastChar == END_OF_STREAM) {
> + return eolCounter; // counter is accurate
> + }
> + return eolCounter + 1; // Allow for counter being incremented
> only at EOL
> }
> }
>
> Modified:
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
> (original)
> +++
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/Lexer.java
> Tue May 7 15:12:48 2013
> @@ -70,12 +70,12 @@ abstract class Lexer {
> }
>
> /**
> - * Returns the number of lines read
> + * Returns the current line number
> *
> - * @return the number of EOLs seen so far
> + * @return the current line number
> */
> - long getLineNumber() {
> - return in.getLineNumber();
> + long getCurrentLineNumber() {
> + return in.getCurrentLineNumber();
> }
>
> // TODO escape handling needs more work
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1.java
> Tue May 7 15:12:48 2013
> @@ -198,7 +198,7 @@ class CSVLexer1 extends Lexer {
> */
> private Token encapsulatedTokenLexer(final Token tkn, int c) throws
> IOException {
> // save current line
> - final long startLineNumber = getLineNumber();
> + final long startLineNumber = getCurrentLineNumber();
> // ignore the given delimiter
> // assert c == delimiter;
> while (true) {
> @@ -230,7 +230,7 @@ class CSVLexer1 extends Lexer {
> return tkn;
> } else if (!isWhitespace(c)) {
> // error invalid char between token and next
> delimiter
> - throw new IOException("(line " +
> getLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> }
> }
> }
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306663.java
> Tue May 7 15:12:48 2013
> @@ -187,7 +187,7 @@ class CSVLexer1306663 extends Lexer {
> */
> private Token encapsulatedTokenLexer(final Token tkn) throws
> IOException {
> // save current line
> - final long startLineNumber = getLineNumber();
> + final long startLineNumber = getCurrentLineNumber();
> // ignore the given delimiter
> // assert c == delimiter;
> int c;
> @@ -218,7 +218,7 @@ class CSVLexer1306663 extends Lexer {
> return tkn;
> } else if (!isWhitespace(c)) {
> // error invalid char between token and next
> delimiter
> - throw new IOException("(line " +
> getLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> }
> }
> }
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer1306667.java
> Tue May 7 15:12:48 2013
> @@ -187,7 +187,7 @@ class CSVLexer1306667 extends Lexer {
> */
> private Token encapsulatedTokenLexer(final Token tkn) throws
> IOException {
> // save current line
> - final long startLineNumber = getLineNumber();
> + final long startLineNumber = getCurrentLineNumber();
> // ignore the given delimiter
> // assert c == delimiter;
> int c;
> @@ -218,7 +218,7 @@ class CSVLexer1306667 extends Lexer {
> return tkn;
> } else if (!isWhitespace(c)) {
> // error invalid char between token and next
> delimiter
> - throw new IOException("(line " +
> getLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> }
> }
> }
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexer3.java
> Tue May 7 15:12:48 2013
> @@ -170,7 +170,7 @@ class CSVLexer3 extends Lexer {
> state = State.ESCAPE_QUOTE;
> break;
> case EOFCHAR:
> - throw new IOException("(line " +
> getLineNumber() + ") unexpected EOF in quoted string");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") unexpected EOF in quoted string");
> default:
> tkn.content.append((char) intch);
> break;
> @@ -194,7 +194,7 @@ class CSVLexer3 extends Lexer {
> case WHITESPACE: // trailing whitespace may be
> allowed
> if (!ignoreSurroundingSpaces) {
> // error invalid char between token and
> next delimiter
> - throw new IOException("(line " +
> getLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> }
> break;
> // Everything else is invalid
> @@ -202,7 +202,7 @@ class CSVLexer3 extends Lexer {
> case OTHER:
> case COMMENT_START:
> // error invalid char between token and next
> delimiter
> - throw new IOException("(line " +
> getLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") invalid char between encapsulated token and
> delimiter");
> }
> break;
> case ESCAPE_PLAIN:
> @@ -221,7 +221,7 @@ class CSVLexer3 extends Lexer {
> tkn.content.append((char) intch);
> break;
> case EOFCHAR:
> - throw new IOException("(line " +
> getLineNumber() + ") unexpected EOF in escape sequence");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") unexpected EOF in escape sequence");
> }
> break;
> case ESCAPE_QUOTE:
> @@ -239,7 +239,7 @@ class CSVLexer3 extends Lexer {
> tkn.content.append((char) intch);
> break;
> case EOFCHAR:
> - throw new IOException("(line " +
> getLineNumber() + ") unexpected EOF in escape sequence");
> + throw new IOException("(line " +
> getCurrentLineNumber() + ") unexpected EOF in escape sequence");
> }
> break;
> default:
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> Tue May 7 15:12:48 2013
> @@ -629,21 +629,21 @@ public class CSVParserTest {
> CSVFormat.newBuilder().withRecordSeparator(CRLF).build());
> CSVRecord record;
> assertEquals(0, parser.getRecordNumber());
> - assertEquals(0, parser.getLineNumber());
> + assertEquals(0, parser.getCurrentLineNumber());
> assertNotNull(record = parser.nextRecord());
> - assertEquals(3, parser.getLineNumber());
> + assertEquals(3, parser.getCurrentLineNumber());
> assertEquals(1, record.getRecordNumber());
> assertEquals(1, parser.getRecordNumber());
> assertNotNull(record = parser.nextRecord());
> - assertEquals(6, parser.getLineNumber());
> + assertEquals(6, parser.getCurrentLineNumber());
> assertEquals(2, record.getRecordNumber());
> assertEquals(2, parser.getRecordNumber());
> assertNotNull(record = parser.nextRecord());
> - assertEquals(8, parser.getLineNumber());
> + assertEquals(8, parser.getCurrentLineNumber());
> assertEquals(3, record.getRecordNumber());
> assertEquals(3, parser.getRecordNumber());
> assertNull(record = parser.nextRecord());
> - assertEquals(8, parser.getLineNumber());
> + assertEquals(8, parser.getCurrentLineNumber());
> assertEquals(3, parser.getRecordNumber());
> }
>
> @@ -676,17 +676,17 @@ public class CSVParserTest {
>
> private void validateLineNumbers(final String lineSeparator) throws
> IOException {
> final CSVParser parser = new CSVParser("a" + lineSeparator + "b"
> + lineSeparator + "c",
> CSVFormat.newBuilder().withRecordSeparator(lineSeparator).build());
> - assertEquals(0, parser.getLineNumber());
> + assertEquals(0, parser.getCurrentLineNumber());
> assertNotNull(parser.nextRecord());
> - assertEquals(1, parser.getLineNumber());
> + assertEquals(1, parser.getCurrentLineNumber());
> assertNotNull(parser.nextRecord());
> - assertEquals(2, parser.getLineNumber());
> + assertEquals(2, parser.getCurrentLineNumber());
> assertNotNull(parser.nextRecord());
> // Still 2 because the last line is does not have EOL chars
> - assertEquals(2, parser.getLineNumber());
> + assertEquals(2, parser.getCurrentLineNumber());
> assertNull(parser.nextRecord());
> // Still 2 because the last line is does not have EOL chars
> - assertEquals(2, parser.getLineNumber());
> + assertEquals(2, parser.getCurrentLineNumber());
> }
>
> }
>
> Modified:
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java?rev=1479936&r1=1479935&r2=1479936&view=diff
>
> ==============================================================================
> ---
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
> (original)
> +++
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
> Tue May 7 15:12:48 2013
> @@ -47,44 +47,50 @@ public class ExtendedBufferedReaderTest
> @Test
> public void testReadLookahead1() throws Exception {
> final ExtendedBufferedReader br = getBufferedReader("1\n2\r3\n");
> + assertEquals(0, br.getCurrentLineNumber());
> assertEquals('1', br.lookAhead());
> assertEquals(UNDEFINED, br.getLastChar());
> - assertEquals('1', br.read());
> + assertEquals(0, br.getCurrentLineNumber());
> + assertEquals('1', br.read()); // Start line 1
> assertEquals('1', br.getLastChar());
>
> - assertEquals(0, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals('\n', br.lookAhead());
> - assertEquals(0, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals('1', br.getLastChar());
> assertEquals('\n', br.read());
> - assertEquals(1, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals('\n', br.getLastChar());
> - assertEquals(1, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
>
> assertEquals('2', br.lookAhead());
> - assertEquals(1, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals('\n', br.getLastChar());
> - assertEquals(1, br.getLineNumber());
> - assertEquals('2', br.read());
> + assertEquals(1, br.getCurrentLineNumber());
> + assertEquals('2', br.read()); // Start line 2
> + assertEquals(2, br.getCurrentLineNumber());
> assertEquals('2', br.getLastChar());
>
> assertEquals('\r', br.lookAhead());
> + assertEquals(2, br.getCurrentLineNumber());
> assertEquals('2', br.getLastChar());
> assertEquals('\r', br.read());
> assertEquals('\r', br.getLastChar());
> + assertEquals(2, br.getCurrentLineNumber());
>
> assertEquals('3', br.lookAhead());
> assertEquals('\r', br.getLastChar());
> - assertEquals('3', br.read());
> + assertEquals('3', br.read()); // Start line 3
> assertEquals('3', br.getLastChar());
> + assertEquals(3, br.getCurrentLineNumber());
>
> assertEquals('\n', br.lookAhead());
> - assertEquals(2, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
> assertEquals('3', br.getLastChar());
> assertEquals('\n', br.read());
> - assertEquals(3, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
> assertEquals('\n', br.getLastChar());
> - assertEquals(3, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
>
> assertEquals(END_OF_STREAM, br.lookAhead());
> assertEquals('\n', br.getLastChar());
> @@ -92,6 +98,7 @@ public class ExtendedBufferedReaderTest
> assertEquals(END_OF_STREAM, br.getLastChar());
> assertEquals(END_OF_STREAM, br.read());
> assertEquals(END_OF_STREAM, br.lookAhead());
> + assertEquals(3, br.getCurrentLineNumber());
>
> }
>
> @@ -125,28 +132,28 @@ public class ExtendedBufferedReaderTest
> assertNull(br.readLine());
>
> br = getBufferedReader("foo\n\nhello");
> - assertEquals(0, br.getLineNumber());
> + assertEquals(0, br.getCurrentLineNumber());
> assertEquals("foo",br.readLine());
> - assertEquals(1, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals("",br.readLine());
> - assertEquals(2, br.getLineNumber());
> + assertEquals(2, br.getCurrentLineNumber());
> assertEquals("hello",br.readLine());
> - assertEquals(3, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
> assertNull(br.readLine());
> - assertEquals(3, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
>
> br = getBufferedReader("foo\n\nhello");
> assertEquals('f', br.read());
> assertEquals('o', br.lookAhead());
> assertEquals("oo",br.readLine());
> - assertEquals(1, br.getLineNumber());
> + assertEquals(1, br.getCurrentLineNumber());
> assertEquals('\n', br.lookAhead());
> assertEquals("",br.readLine());
> - assertEquals(2, br.getLineNumber());
> + assertEquals(2, br.getCurrentLineNumber());
> assertEquals('h', br.lookAhead());
> assertEquals("hello",br.readLine());
> assertNull(br.readLine());
> - assertEquals(3, br.getLineNumber());
> + assertEquals(3, br.getCurrentLineNumber());
>
>
> br = getBufferedReader("foo\rbaar\r\nfoo");
> @@ -171,20 +178,20 @@ public class ExtendedBufferedReaderTest
> ExtendedBufferedReader br;
>
> br = getBufferedReader(test);
> - assertEquals(0, br.getLineNumber());
> + assertEquals(0, br.getCurrentLineNumber());
> while(br.readLine()!=null) {}
> - assertEquals(EOLeolct, br.getLineNumber());
> + assertEquals(EOLeolct, br.getCurrentLineNumber());
>
> br = getBufferedReader(test);
> - assertEquals(0, br.getLineNumber());
> + assertEquals(0, br.getCurrentLineNumber());
> while(br.read()!=-1) {}
> - assertEquals(EOLeolct, br.getLineNumber());
> + assertEquals(EOLeolct, br.getCurrentLineNumber());
>
> br = getBufferedReader(test);
> - assertEquals(0, br.getLineNumber());
> + assertEquals(0, br.getCurrentLineNumber());
> final char[] buff = new char[10];
> while(br.read(buff ,0, 3)!=-1) {}
> - assertEquals(EOLeolct, br.getLineNumber());
> + assertEquals(EOLeolct, br.getCurrentLineNumber());
> }
>
> private ExtendedBufferedReader getBufferedReader(final String s) {
>
>
>
--
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter