private async static Task FillDataTableFromCSVFileThenWriteSomeToStringAsynchronously() { #region FillDataTableFromCSVFileThenWriteSomeToStringAsynchronously var table = new DataTable(); using (var streamReader = new StreamReader("PlanetaryData.csv")) using (var reader = new CsvReader(streamReader)) { await reader.ReadHeaderRecordAsync(); await table.FillAsync(reader); } using (var stringWriter = new StringWriter()) { using (var writer = new CsvWriter(stringWriter)) { await table.WriteCsvAsync(writer, false, 5); } Console.WriteLine("CSV: {0}", stringWriter); } #endregion }
public async Task write_csv_async_returns_number_of_records_written() { using (var writer = new CsvWriter(new StringWriter())) { writer.WriteRecord("some", "record"); var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); dataTable.Rows.Add("1", "2"); dataTable.Rows.Add("3", "4"); dataTable.Rows.Add("5", "6"); Assert.Equal(3, await dataTable.WriteCsvAsync(writer, false)); Assert.Equal(3, await dataTable.WriteCsvAsync(writer, true)); } }
public async Task write_csv_async_works_with_large_data_table_input() { var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); for (var i = 0; i < 1000; ++i) { dataTable.Rows.Add("value0_" + i, "value1_" + i); } // write less than all available records using (var writer = new CsvWriter(new StringWriter())) { Assert.Equal(913, await dataTable.WriteCsvAsync(writer, true, 913)); } // write exactly available records using (var writer = new CsvWriter(new StringWriter())) { Assert.Equal(1000, await dataTable.WriteCsvAsync(writer, true, 1000)); } // attempt to write more than available records using (var writer = new CsvWriter(new StringWriter())) { Assert.Equal(1000, await dataTable.WriteCsvAsync(writer, true, 1500)); } }
public async Task write_csv_async_object_to_string_converter_converts_nulls_to_empty_string() { using (var stringWriter = new StringWriter()) using (var writer = new CsvWriter(stringWriter)) { writer.NewLine = "<EOL>"; var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); dataTable.Rows.Add("1", 2); dataTable.Rows.Add(null, 4d); dataTable.Rows.Add(5m, null); Assert.Equal(3, await dataTable.WriteCsvAsync(writer)); Assert.Equal("First,Second<EOL>1,2<EOL>,4<EOL>5,<EOL>", stringWriter.ToString()); } }
public async Task write_csv_async_uses_object_to_string_converter_to_convert_objects_in_data_row_to_string() { using (var stringWriter = new StringWriter()) using (var writer = new CsvWriter(stringWriter)) { writer.NewLine = "<EOL>"; var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); dataTable.Rows.Add("1", 2); dataTable.Rows.Add(3, 4d); dataTable.Rows.Add(5m, 6f); Assert.Equal(3, await dataTable.WriteCsvAsync(writer, true, null, o => o.ToString() + "_SUFFIX")); Assert.Equal("First,Second<EOL>1_SUFFIX,2_SUFFIX<EOL>3_SUFFIX,4_SUFFIX<EOL>5_SUFFIX,6_SUFFIX<EOL>", stringWriter.ToString()); } }
public async Task write_csv_async_stops_if_it_reaches_maximum_rows() { using (var stringWriter = new StringWriter()) using (var writer = new CsvWriter(stringWriter)) { writer.NewLine = "<EOL>"; var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); dataTable.Rows.Add("1", "2"); dataTable.Rows.Add("3", "4"); dataTable.Rows.Add("5", "6"); Assert.Equal(2, await dataTable.WriteCsvAsync(writer, true, 2)); Assert.Equal("First,Second<EOL>1,2<EOL>3,4<EOL>", stringWriter.ToString()); } }
public async Task write_csv_async_writes_all_rows_as_data_records() { using (var stringWriter = new StringWriter()) using (var writer = new CsvWriter(stringWriter)) { writer.NewLine = "<EOL>"; var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); dataTable.Rows.Add("1", "2"); dataTable.Rows.Add("3", "4"); dataTable.Rows.Add("5", "6"); Assert.Equal(3, await dataTable.WriteCsvAsync(writer, true)); Assert.Equal("First,Second<EOL>1,2<EOL>3,4<EOL>5,6<EOL>", stringWriter.ToString()); } }
public async Task write_csv_async_writes_a_header_record_based_on_data_table_column_names_if_requested() { using (var stringWriter = new StringWriter()) using (var writer = new CsvWriter(stringWriter)) { writer.NewLine = "<EOL>"; var dataTable = new DataTable(); dataTable.Columns.Add("First"); dataTable.Columns.Add("Second"); Assert.Equal(0, await dataTable.WriteCsvAsync(writer, true)); Assert.Equal("First,Second<EOL>", stringWriter.ToString()); } }