Пример #1
0
        // 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" },
            });
        }
Пример #2
0
        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());
        }
Пример #3
0
        public void CsvToDictionary_should_use_column_names_and_data_line_into_map()
        {
            var fut = Source.Single(ByteString.FromString("1,2,3"))
                      .Via(CsvParsing.LineScanner())
                      .Via(CsvToDictionary.WithHeaders(new [] { "eins", "zwei", "drei" }.ToImmutableList()))
                      .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") },
                { "drei", ByteString.FromString("3") },
            }, opt => opt.WithStrictOrdering());
        }
Пример #4
0
        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") },
            });
        }