public void RemoveTextQualifierWithEscaped_String_CorrectString(string item, string result) { var reader = new CsvReaderProxy(); var value = reader.RemoveTextQualifier(item, '\'', '`'); Assert.That(value, Is.EqualTo(result)); }
public void NextRecords_CsvWithCsvProfileEmptyCell_CorrectResults(string text, char fieldSeparator, string recordSeparator, string emptyCell) { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); writer.Write(text); writer.Flush(); stream.Position = 0; var reader = new CsvReaderProxy(); var dataTable = reader.Read(stream, Encoding.UTF8, 0, false, recordSeparator, fieldSeparator, '\"', '\"', emptyCell, "_"); Assert.That(dataTable.Rows[0].ItemArray[0], Is.EqualTo("a")); Assert.That(dataTable.Rows[0].ItemArray[1], Is.EqualTo("b")); Assert.That(dataTable.Rows[0].ItemArray[2], Is.EqualTo("c")); Assert.That(dataTable.Rows[1].ItemArray[0], Is.EqualTo("a")); Assert.That(dataTable.Rows[1].ItemArray[1], Is.EqualTo("?")); Assert.That(dataTable.Rows[1].ItemArray[2], Is.EqualTo("c")); Assert.That(dataTable.Rows[2].ItemArray[0], Is.EqualTo("?")); Assert.That(dataTable.Rows[2].ItemArray[1], Is.EqualTo("b")); Assert.That(dataTable.Rows[2].ItemArray[2], Is.EqualTo("c")); Assert.That(dataTable.Rows[3].ItemArray[0], Is.EqualTo("?")); Assert.That(dataTable.Rows[3].ItemArray[1], Is.EqualTo("b")); Assert.That(dataTable.Rows[3].ItemArray[2], Is.EqualTo("?")); writer.Dispose(); } }
public void IdentifyPartialRecordSeparator_Csv_CorrectResult(string text, string recordSeparator, int result) { var reader = new CsvReaderProxy(20); var value = reader.IdentifyPartialRecordSeparator(text, recordSeparator); Assert.That(value, Is.EqualTo(result)); }
public void CleanRecord_Record_CorrectResult(string text, string recordSeparator, string result) { var reader = new CsvReaderProxy(); var value = reader.CleanRecord(text, recordSeparator); Assert.That(value, Is.EqualTo(result)); }
public void IsLastRecord_Record_CorrectResult(string record, bool result) { var reader = new CsvReaderProxy(); var value = reader.IsLastRecord(record); Assert.That(value, Is.EqualTo(result)); }
public void SplitLine_NullField_NullValue() { var reader = new CsvReaderProxy(); var values = reader.SplitLine("a;(null)", ';', char.MinValue, char.MinValue, string.Empty); Assert.That(values.ElementAt(1), Is.Null); }
public void SplitLine_RecordWithThreeFields_CorrectParsing(string record, string thirdToken) { var reader = new CsvReaderProxy(); var values = reader.SplitLine(record, ';', '\'', '\'', string.Empty).ToList(); Assert.That(values[2], Is.EqualTo(thirdToken)); }
public void SplitLine_RecordWithTwoFields_CorrectParsing(string record, string firstToken) { var reader = new CsvReaderProxy(); var values = reader.SplitLine(record, ';', '\'', '\'', string.Empty).ToList(); Assert.That(values[0], Is.EqualTo(firstToken)); Assert.That(values[1], Is.EqualTo("xyz")); }
public void Read_MissingValue_MatchWithNullValue() { using (var stream = new MemoryStream()) { using (var writer = new StreamWriter(stream)) { writer.Write("a;b;c\r\na;b\r\na;b;c"); writer.Flush(); stream.Position = 0; var profile = new CsvProfile(';', '"', "\r\n", false, true, 512, string.Empty, "(null)"); var reader = new CsvReaderProxy(profile); var dataTable = reader.Read(stream); Assert.That(dataTable.Rows[1][2], Is.EqualTo("(null)")); } } }
public void Read_EmptyValue_MatchWithEmpty() { using (var stream = new MemoryStream()) { using (var writer = new StreamWriter(stream)) { writer.Write("a;;c"); writer.Flush(); stream.Position = 0; var profile = CsvProfile.SemiColumnDoubleQuote; var reader = new CsvReaderProxy(profile); var dataTable = reader.Read(stream); Assert.That(dataTable.Rows[0][1], Is.EqualTo(string.Empty)); } } }
public void Read_MissingValue_MatchWithNullValue() { using (var stream = new MemoryStream()) { using (var writer = new StreamWriter(stream)) { writer.Write("a;b;c\r\na;b\r\na;b;c"); writer.Flush(); stream.Position = 0; var profile = CsvProfile.SemiColumnDoubleQuote; var reader = new CsvReaderProxy(profile); var dataTable = reader.Read(stream); Assert.That(dataTable.Rows[1][2], Is.EqualTo("(null)")); } } }
public void GetFirstRecord_CsvWithSemiSeparator_CorrectResult(string text, string recordSeparator, int bufferSize) { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); writer.Write(text); writer.Flush(); stream.Position = 0; var reader = new CsvReaderProxy(); using (StreamReader streamReader = new StreamReader(stream, Encoding.UTF8, true)) { var value = reader.GetFirstRecord(streamReader, recordSeparator, bufferSize); Assert.That(value, Is.EqualTo("abc+abc" + recordSeparator).Or.EqualTo("abc+abc")); } writer.Dispose(); } }
public void CountRecordSeparator_Csv_CorrectCount(string text, string recordSeparator, int bufferSize, int result) { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); writer.Write(text); writer.Flush(); stream.Position = 0; var reader = new CsvReaderProxy(); using (StreamReader streamReader = new StreamReader(stream, Encoding.UTF8, true)) { var value = reader.CountRecordSeparators(streamReader, recordSeparator, '#', bufferSize); Assert.That(value, Is.EqualTo(result)); } writer.Dispose(); } }
public void Read_MoreFieldThanExpected_ExceptionMessage(string text, int rowNumber, int moreField) { using (var stream = new MemoryStream()) { using (var writer = new StreamWriter(stream)) { writer.Write(text); writer.Flush(); stream.Position = 0; var profile = CsvProfile.SemiColumnDoubleQuote; var reader = new CsvReaderProxy(profile); var ex = Assert.Throws <InvalidDataException>(delegate { reader.Read(stream); }); Assert.That(ex.Message, Is.StringContaining(string.Format("record {0} ", rowNumber + 1))); Assert.That(ex.Message, Is.StringContaining(string.Format("{0} more", moreField))); } } }
public void Read_Comment_CommentedLinesSkipped(string content) { using (var stream = new MemoryStream()) { using (var writer = new StreamWriter(stream)) { writer.Write(content); writer.Flush(); stream.Position = 0; var profile = new CsvProfile(new CsvDialectDescriptor { Header = false, Delimiter = ';', CommentChar = '#', DoubleQuote = false }); var reader = new CsvReaderProxy(profile); var dataTable = reader.Read(stream); Assert.That(dataTable.Rows.Count, Is.EqualTo(2)); Assert.That(dataTable.Columns.Count, Is.EqualTo(3)); } } }
public void NextRecords_Csv_CorrectResults(string text, string recordSeparator, int bufferSize) { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); writer.Write(text); writer.Flush(); stream.Position = 0; var reader = new CsvReaderProxy(); using (var streamReader = new StreamReader(stream, Encoding.UTF8, true)) { var(values, extraRead, eof) = reader.GetNextRecords(streamReader, recordSeparator, '#', bufferSize, string.Empty); foreach (var value in values) { Assert.That(value, Does.StartWith("abc")); Assert.That(value, Does.EndWith("abc").Or.EndWith("\0").Or.EndWith(recordSeparator)); } } writer.Dispose(); } }
public void Read_Csv_CorrectResult(string text, int bufferSize, int columnCount) { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); writer.Write(text); writer.Flush(); stream.Position = 0; var reader = new CsvReaderProxy(new CsvProfile(';', '\"', "\r\n", false, false, "(empty)", "(null)"), bufferSize); var dataTable = reader.Read(stream); Assert.That(dataTable.Rows, Has.Count.EqualTo(4)); Assert.That(dataTable.Columns, Has.Count.EqualTo(columnCount)); foreach (DataRow row in dataTable.Rows) { foreach (var cell in row.ItemArray) { Assert.That(cell.ToString(), Has.Length.EqualTo(3).Or.EqualTo("(empty)").Or.EqualTo("(null)")); } } writer.Dispose(); } }
public void SplitLine_RecordWithUnescapedTextQualifier_ThrowException(string record) { var reader = new CsvReaderProxy(); Assert.Throws <ArgumentException>(() => reader.SplitLine(record, ';', '\'', '\'', string.Empty).ToList()); }