Skip to content

Commit

Permalink
Fixed issue where parsing was incorrect when the last row didn't have…
Browse files Browse the repository at this point in the history
… a CRLF at the end.
  • Loading branch information
JoshClose committed Oct 11, 2012
1 parent 060361b commit ffbbada
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 6 deletions.
38 changes: 32 additions & 6 deletions src/CsvHelper.Tests/CsvParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace CsvHelper.Tests
public class CsvParserTests
{
[Fact]
public void ReadNewRecordTest()
public void ParseNewRecordTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand All @@ -35,7 +35,7 @@ public void ReadNewRecordTest()
}

[Fact]
public void ReadEmptyRowsTest()
public void ParseEmptyRowsTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand All @@ -61,7 +61,7 @@ public void ReadEmptyRowsTest()
}

[Fact]
public void ReadTest()
public void ParseTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand All @@ -88,7 +88,7 @@ record = parser.Read();
}

[Fact]
public void ReadFieldQuotesTest()
public void ParseFieldQuotesTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand All @@ -115,7 +115,7 @@ record = parser.Read();
}

[Fact]
public void ReadSpacesTest()
public void ParseSpacesTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand Down Expand Up @@ -521,7 +521,7 @@ public void ParseUsingDifferentQuote()
}

[Fact]
public void ReadFinalRecordWithNoEndOfLineTest()
public void ParseFinalRecordWithNoEndOfLineTest()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
Expand All @@ -542,6 +542,32 @@ record = parser.Read();

Assert.NotNull( record );
Assert.Equal( "", record[3] );

record = parser.Read();

Assert.Null( record );
}

[Fact]
public void ParseLastLineHasNoCrLf()
{
var stream = new MemoryStream();
var writer = new StreamWriter( stream );
writer.Write( "a" );
writer.Flush();
stream.Position = 0;
var reader = new StreamReader( stream );

var parser = new CsvParser( reader );

var record = parser.Read();

Assert.NotNull( record );
Assert.Equal( "a", record[0] );

record = parser.Read();

Assert.Null( record );
}

[Fact]
Expand Down
4 changes: 4 additions & 0 deletions src/CsvHelper/CsvParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,13 @@ record = new string[FieldCount];
{
if( c == configuration.Delimiter )
{
// Handle an empty field at the end of the row.
field = "";
}

// Make sure the next time through that we don't end up here again.
c = '\0';

AddFieldToRecord( ref recordPosition, field, hasQuotes );

return record;
Expand Down

0 comments on commit ffbbada

Please sign in to comment.