public static async Task WriteRecordsAsync_RecordsAreWritten_InformationIsCorrect() { var csvWriter = new CsvStreamStreamWriter <CsvHeaderContent, CsvHeaderContentMap>(); await using var stream = new MemoryStream(); var expectedDate = DateTime.UtcNow; var records = new[] { new CsvHeaderContent { Created = expectedDate, Name = "Bob Builder" } }; await csvWriter.WriteRecordsAsync(stream, records); var attachmentData = new MemoryStream(stream.ToArray()); using var csvText = new TextFieldParser(attachmentData); csvText.SetDelimiters(","); string[] csvHeader = { "Name", "Created Date" }; string[] expectedData = { "Bob Builder", expectedDate.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) }; csvText.ReadFields().Should().BeEquivalentTo(csvHeader); csvText.EndOfData.Should().BeFalse(); csvText.ReadFields().Should().BeEquivalentTo(expectedData); csvText.EndOfData.Should().BeTrue(); }
public static void WriteRecordsAsync_StreamIsNull_ThrowsArgumentNullException(bool hasStream, bool hasRecords) { var csvWriter = new CsvStreamStreamWriter <CsvHeaderContent, CsvHeaderContentMap>(); Assert.ThrowsAsync <ArgumentNullException>(async() => await csvWriter.WriteRecordsAsync( hasStream ? new MemoryStream() : null, hasRecords ? new List <CsvHeaderContent>() : null)); }
public static async Task WriteRecordsAsync_UsesUtf8Encoding() { var csvWriter = new CsvStreamStreamWriter <CsvHeaderContent, CsvHeaderContentMap>(); await using var stream = new MemoryStream(); var records = new[] { new CsvHeaderContent { Created = DateTime.UtcNow, Name = "Bob Builder" } }; await csvWriter.WriteRecordsAsync(stream, records); var utf8Preamble = Encoding.UTF8.GetPreamble(); stream.Seek(0, SeekOrigin.Begin); using var reader = new BinaryReader(stream, Encoding.UTF8); var csvPreamble = reader.ReadBytes(utf8Preamble.Length); csvPreamble.Should().BeEquivalentTo(utf8Preamble); }