diff options
| author | Murilo Ijanc <[email protected]> | 2026-07-26 12:42:38 -0300 |
|---|---|---|
| committer | Murilo Ijanc <[email protected]> | 2026-07-26 13:10:34 -0300 |
| commit | a2b10fd494fb389e556e40134031eb86e56e11e7 (patch) | |
| tree | 08b6df8a06f2c7c15488b90d57a6d8286cd57a22 /tests/Cepis.Tests/CsvTests.cs | |
| download | csharp-a2b10fd494fb389e556e40134031eb86e56e11e7.tar.gz | |
Initial importv0.1.0
Diffstat (limited to 'tests/Cepis.Tests/CsvTests.cs')
| -rw-r--r-- | tests/Cepis.Tests/CsvTests.cs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/Cepis.Tests/CsvTests.cs b/tests/Cepis.Tests/CsvTests.cs new file mode 100644 index 0000000..97a353f --- /dev/null +++ b/tests/Cepis.Tests/CsvTests.cs @@ -0,0 +1,79 @@ +namespace Cepis.Tests; + +/// <summary>The CSV reader behind the batch endpoint.</summary> +public sealed class CsvTests +{ + [Fact] + public void ReadsTheHeaderAndOneRecord() + { + var rows = Csv.Parse("a,b,c\n1,2,3\n"); + + var row = Assert.Single(rows); + Assert.Equal("1", row["a"]); + Assert.Equal("2", row["b"]); + Assert.Equal("3", row["c"]); + } + + [Fact] + public void AQuotedValueMayContainACommaAndANewline() + { + var rows = Csv.Parse("a,b\n\"Praça da Sé, lado ímpar\",\"two\nlines\"\n"); + + var row = Assert.Single(rows); + Assert.Equal("Praça da Sé, lado ímpar", row["a"]); + Assert.Equal("two\nlines", row["b"]); + } + + [Fact] + public void DoubledQuotesAreOneQuote() + { + var rows = Csv.Parse("a\n\"say \"\"hi\"\"\"\n"); + + Assert.Equal("say \"hi\"", Assert.Single(rows)["a"]); + } + + [Theory] + [InlineData("a,b\n1,2\n")] + [InlineData("a,b\r\n1,2\r\n")] + [InlineData("a,b\r1,2\r")] + [InlineData("a,b\n1,2")] + public void EveryLineEndingWorks(string text) + { + var rows = Csv.Parse(text); + + Assert.Equal("1", Assert.Single(rows)["a"]); + } + + [Fact] + public void ALeadingByteOrderMarkIsDropped() + { + var rows = Csv.Parse("\uFEFFa,b\n1,2\n"); + + Assert.Equal("1", Assert.Single(rows)["a"]); + } + + [Fact] + public void AnEmptyValueStaysEmpty() + { + var rows = Csv.Parse("a,b,c\n1,,3\n"); + + Assert.Equal("", Assert.Single(rows)["b"]); + } + + [Fact] + public void AShortRecordIsFilledOut() + { + var rows = Csv.Parse("a,b,c\n1\n"); + + var row = Assert.Single(rows); + Assert.Equal("1", row["a"]); + Assert.Equal("", row["b"]); + Assert.Equal("", row["c"]); + } + + [Fact] + public void AHeaderAloneYieldsNoRecords() => Assert.Empty(Csv.Parse("a,b,c\n")); + + [Fact] + public void AnEmptyDocumentYieldsNoRecords() => Assert.Empty(Csv.Parse("")); +} |