// see https://github.com/uniVocity/csv-parsers-comparison public void CsvParsing_should_parse_uniVocity_correctness_test() { var fut = FileIO.FromFile(new FileInfo("resources/correctness.csv")) .Via(CsvParsing.LineScanner(escapeChar: 0x01)) .Via(CsvToDictionary.ToDictionary()) .Select(dict => { var outDict = new Dictionary <string, string>(); foreach (var pair in dict) { outDict.Add(pair.Key, pair.Value.DecodeString(Encoding.UTF8)); } return(outDict); }) .RunWith(Sink.Seq <Dictionary <string, string> >(), Materializer); var res = fut.Result; res[0].ShouldAllBeEquivalentTo(new Dictionary <string, string>() { { "Year", "1997" }, { "Make", "Ford" }, { "Model", "E350" }, { "Description", "ac, abs, moon" }, { "Price", "3000.00" }, }); res[1].ShouldAllBeEquivalentTo(new Dictionary <string, string>() { { "Year", "1999" }, { "Make", "Chevy" }, { "Model", "Venture \"Extended Edition\"" }, { "Description", "" }, { "Price", "4900.00" }, }); res[2].ShouldAllBeEquivalentTo(new Dictionary <string, string>() { { "Year", "1996" }, { "Make", "Jeep" }, { "Model", "Grand Cherokee" }, { "Description", "MUST SELL!\nair, moon roof, loaded" }, { "Price", "4799.00" }, }); res[3].ShouldAllBeEquivalentTo(new Dictionary <string, string>() { { "Year", "1999" }, { "Make", "Chevy" }, { "Model", "Venture \"Extended Edition, Very Large\"" }, { "Description", "" }, { "Price", "5000.00" }, }); res[4].ShouldAllBeEquivalentTo(new Dictionary <string, string>() { { "Year", "" }, { "Make", "" }, { "Model", "Venture \"Extended Edition\"" }, { "Description", "" }, { "Price", "4900.00" }, }); }
public void CsvToDictionary_should_be_OK_with_fewer_header_columns_than_data() { var fut = Source.Single(ByteString.FromString("eins,zwei\n1,2,3")) .Via(CsvParsing.LineScanner()) .Via(CsvToDictionary.ToDictionary()) .RunWith(Sink.First <Dictionary <string, ByteString> >(), Materializer); fut.Wait(TimeSpan.FromSeconds(3)); fut.Result.Should().BeEquivalentTo(new Dictionary <string, ByteString> { { "eins", ByteString.FromString("1") }, { "zwei", ByteString.FromString("2") }, }, opt => opt.WithStrictOrdering()); }
public void CsvToDictionary_should_parse_header_line_and_data_line_into_dictionary() { var fut = Source.Single(ByteString.FromString("eins,zwei,drei\n1,2,3")) .Via(CsvParsing.LineScanner()) .Via(CsvToDictionary.ToDictionary()) .RunWith(Sink.First <Dictionary <string, ByteString> >(), Materializer); fut.Wait(TimeSpan.FromSeconds(3)); fut.Result.ShouldAllBeEquivalentTo(new Dictionary <string, ByteString> { { "eins", ByteString.FromString("1") }, { "zwei", ByteString.FromString("2") }, { "drei", ByteString.FromString("3") }, }); }