Пример #1
0
        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();
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }