public void ThrowErrorIfUsingQuoteAsColumnsDelimiterInRfc4810ButWorksIfDisableIt() { const string input = "Header1\"Header2\r\nValue1\"Value2\r\nValue3\"Value4"; Action action = () => Read.Csv.FromString(input) .With.ColumnsDelimiter("\"") .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("Header1").Into(a => a.Firstname) .Put.Column("Header2").Into(a => a.Lastname) .GetAll(); action.Should().Throw <BadDelimiterException>(); var result = Read.Csv.FromString(input) .With.ColumnsDelimiter("\"").And.SimpleParsingMode() .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("Header1").Into(a => a.Firstname) .Put.Column("Header2").Into(a => a.Lastname) .GetAll().ResultSet; result.Should().HaveCount(2); result.ShouldContainEquivalentTo( TestResultWithMultiline.Create("Value1", "Value2"), TestResultWithMultiline.Create("Value3", "Value4")); }
public void ReadCsvWithColumnThatContainsNewLine() { const string input = "\"FirstName\r\nLastName\";\"Home\r\nAddress\"\r\nMARTIN;\"12\r\nRue test\""; var resultSet = Read.Csv.FromString(input) .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("FirstName\r\nLastName").Into(a => a.Firstname) .Put.Column("Home\r\nAddress").Into(a => a.Address) .GetAll().ResultSet; resultSet.ShouldContainEquivalentTo(TestResultWithMultiline.Create("MARTIN", address: "12\r\nRue test")); }
public void ReadColumnWithMultilineAndColumnSeparator() { const string input = "Firstname;Lastname;Address\r\nAurelien;BOUDOUX;\"9\r\nrue du test; impasse\r\n75001\r\nParis\""; var resultSet = Read.Csv.FromString(input) .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("Firstname").Into(a => a.Firstname) .Put.Column("Lastname").Into(a => a.Lastname) .Put.Column("Address").Into(a => a.Address) .GetAll().ResultSet; resultSet.ShouldContainEquivalentTo(TestResultWithMultiline.Create("Aurelien", "BOUDOUX", "9\r\nrue du test; impasse\r\n75001\r\nParis")); }
public void DontUseRfc4180ForParsing() { const string input = "Firstname;Lastname\r\n\"M. B\"OK;Benoit"; var resultSet = Read.Csv.FromString(input) .With.SimpleParsingMode() .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("Firstname").Into(a => a.Firstname) .Put.Column("Lastname").Into(a => a.Lastname) .GetAll().ResultSet; resultSet.ShouldContainEquivalentTo(TestResultWithMultiline.Create("\"M. B\"OK", "Benoit")); }
public void AllowWhiteSpaceInColumnsLineDelimiter() { const string input = "Header1 Header2\r\nValue1 Value2\r\nValue3 Value4"; var result = Read.Csv.FromString(input) .With.ColumnsDelimiter(" ") .ThatReturns.ArrayOf <TestResultWithMultiline>() .Put.Column("Header1").Into(a => a.Firstname) .Put.Column("Header2").Into(a => a.Lastname) .GetAll().ResultSet; result.Should().HaveCount(2); result.ShouldContainEquivalentTo( TestResultWithMultiline.Create("Value1", "Value2"), TestResultWithMultiline.Create("Value3", "Value4")); }