Exemplo n.º 1
0
        public void TestReadArrayRecord([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,2,3,4,5,6,一,二{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current.Convert <ArrayRecord>();
                    Assert.That(record, Is.Not.Null);
                    var property = record.Property;
                    var field    = record.Field;
                    Assert.That(property, Is.Not.Null);
                    Assert.That(field, Is.Not.Null);
                    Assert.That(property[0, 0], Is.EqualTo(1));
                    Assert.That(property[0, 1], Is.EqualTo(2));
                    Assert.That(property[1, 0], Is.EqualTo(3));
                    Assert.That(property[1, 1], Is.EqualTo(4));
                    Assert.That(property[2, 0], Is.EqualTo(5));
                    Assert.That(property[2, 1], Is.EqualTo(6));
                    Assert.That(field[0], Is.EqualTo(1));
                    Assert.That(field[1], Is.EqualTo(2));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 2
0
        public void TestReadRecordRaw([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            const string ascii       = "ASCII";
            const string nonAscii    = "日本語";
            const string empty       = "";
            var          withNewline = string.Format("hello{0}world", eol.AsNewline());

            var csv      = string.Format("{0},{1},{2},\"{3}\",{0}{4}", ascii, nonAscii, empty, withNewline, eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current;
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.FieldCount, Is.EqualTo(5));
                    Assert.That(record[0], Is.EqualTo(ascii));
                    Assert.That(record[1], Is.EqualTo(nonAscii));
                    Assert.That(record[2], Is.EqualTo(empty));
                    Assert.That(record[3], Is.EqualTo(withNewline));
                    Assert.That(record[0], Is.EqualTo(ascii));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 3
0
        public void TestReadOmittableRecord([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,2,3{0}4,5{0}6{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current.Convert <OmittableRecord>();
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Column1, Is.EqualTo(1));
                    Assert.That(record.Column2, Is.EqualTo(2));
                    Assert.That(record.Column3, Is.EqualTo(3));
                    Assert.That(reader.MoveNext(), Is.True);
                    record = reader.Current.Convert <OmittableRecord>();
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Column1, Is.EqualTo(4));
                    Assert.That(record.Column2, Is.EqualTo(5));
                    Assert.That(record.Column3, Is.EqualTo(default(int)));
                    Assert.That(reader.MoveNext(), Is.True);
                    record = reader.Current.Convert <OmittableRecord>();
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Column1, Is.EqualTo(6));
                    Assert.That(record.Column2, Is.EqualTo(default(int)));
                    Assert.That(record.Column3, Is.EqualTo(default(int)));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 4
0
        public void TestReadToEndWithParameteredConstructor([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,2,3,4,5{0}6,7,8{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    var records = reader.ReadToEnd <RecordWithParameteredConstructor>().ToList();
                    Assert.That(records.Count, Is.EqualTo(2));
                    var record = records[0];
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Column1, Is.EqualTo(1));
                    Assert.That(record.Column2, Is.EqualTo(2));
                    Assert.That(record.Column3, Is.EqualTo(3));
                    //Assert.That(record.Column4, Is.EqualTo(4));
                    Assert.That(record.Column5, Is.EqualTo(5));
                    record = records[1];
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Column1, Is.EqualTo(6));
                    Assert.That(record.Column2, Is.EqualTo(7));
                    Assert.That(record.Column3, Is.EqualTo(8));
                    //Assert.That(record.Column4, Is.EqualTo(default(int)));
                    Assert.That(record.Column5, Is.EqualTo(-1));
                }
        }
        public void TestReadToEnd([Values(EndOfLine.CR, EndOfLine.CRLF, EndOfLine.LF)] EndOfLine eol)
        {
            var s = string.Format("hello{0}world{0}", eol.AsNewline());

            using (var reader = new StackBufferedTextReader(new StringReader(s)))
            {
                Assert.That(reader.ReadToEnd(), Is.EqualTo(s));
                Assert.That(reader.ReadToEnd(), Is.EqualTo(""));
            }
        }
Exemplo n.º 6
0
        public void TestReadToEndGeneric([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var headerLine = "string1,int1,double1,parsed1,ignored1,string2,int2,double2,parsed2,ignored2";
            var csv        = string.Format(
                "{0}{1}" +
                "hello,1,-4.0,一,_,world,-1,3.0,二,_{1}" +
                "good,2,NA,NA,_,bye,0,NA,NA,_{1}",
                headerLine, eol.AsNewline()
                );
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var header = reader.Current.ToArray();
                    reader.SetHeader(header);
                    Assert.That(header, Is.Not.Null);
                    Assert.That(header, Is.EquivalentTo(headerLine.Split(',')));
                    var records = reader.ReadToEnd <PartialRecord>().ToList();
                    Assert.That(records.Count, Is.EqualTo(2));
                    Assert.That(reader.MoveNext(), Is.False);
                    var record = records[0];
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.StringField, Is.EqualTo("hello"));
                    Assert.That(record.IntField, Is.EqualTo(1));
                    Assert.That(record.NullableDoubleField, Is.EqualTo(-4.0));
                    Assert.That(record.ParsedField, Is.EqualTo(1));
                    Assert.That(record.IgnoredField, Is.EqualTo(default(object)));
                    Assert.That(record.StringProperty, Is.EqualTo("world"));
                    Assert.That(record.IntProperty, Is.EqualTo(-1));
                    Assert.That(record.NullableDoubleProperty, Is.EqualTo(3.0));
                    Assert.That(record.ParsedProperty, Is.EqualTo(2));
                    Assert.That(record.IgnoredProperty, Is.EqualTo(default(int)));
                    record = records[1];
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.StringField, Is.EqualTo("good"));
                    Assert.That(record.IntField, Is.EqualTo(2));
                    Assert.That(record.NullableDoubleField, Is.Null);
                    Assert.That(record.ParsedField, Is.Null);
                    Assert.That(record.IgnoredField, Is.EqualTo(default(object)));
                    Assert.That(record.StringProperty, Is.EqualTo("bye"));
                    Assert.That(record.IntProperty, Is.EqualTo(0));
                    Assert.That(record.NullableDoubleProperty, Is.Null);
                    Assert.That(record.ParsedProperty, Is.Null);
                    Assert.That(record.IgnoredProperty, Is.EqualTo(default(int)));
                }
        }
Exemplo n.º 7
0
        public void TestReadRecordRaw([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            const string ascii       = "ASCII";
            const string nonAscii    = "日本語";
            const string empty       = "";
            var          withNewline = string.Format("hello{0}world", eol.AsNewline());

            var csv = string.Format("{0},{1},{2},\"{3}\",{0}{4}", ascii, nonAscii, empty, withNewline, eol.AsNewline());

            using (var stringReader = new StringReader(csv))
                using (var reader = new FastCsvReader(stringReader))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current;
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.FieldCount, Is.EqualTo(5));
                    Assert.That(record[0], Is.EqualTo(ascii));
                    Assert.That(record[1], Is.EqualTo(nonAscii));
                    Assert.That(record[2], Is.EqualTo(empty));
                    Assert.That(record[3], Is.EqualTo(withNewline.Replace(eol.AsNewline(), "\n"))); // All newlines are converted into '\n'.
                    Assert.That(record[0], Is.EqualTo(ascii));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 8
0
        [ExpectedException(typeof(InvalidOperationException))] // Single() throws InvalidOperationException with multiple elements.
        public void TestRecordWithMultipleRecordConstructor([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,2,3{0}4,5,6{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    Assert.That(reader.Current.Convert <RecordWithMultipleRecordConstructor>(), Throws.Exception);
                }
        }
Exemplo n.º 9
0
        public void TestMultipleColumn([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,二{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current.Convert <MultipleColumnRecord>();
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record.Value, Is.EqualTo(1).Or.EqualTo(2));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 10
0
        public void TestReadIndexerRecord([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            var csv      = string.Format("1,二,3{0}", eol.AsNewline());
            var settings = new CsvReaderSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stringReader = new StringReader(csv))
                using (var reader = new CsvReader(stringReader, settings))
                {
                    Assert.That(reader.MoveNext(), Is.True);
                    var record = reader.Current.Convert <IndexerRecord>();
                    Assert.That(record, Is.Not.Null);
                    Assert.That(record["A"], Is.EqualTo(1));
                    Assert.That(record["B"], Is.EqualTo(2));
                    Assert.That(record["C"], Is.EqualTo(3));
                    Assert.That(reader.MoveNext(), Is.False);
                }
        }
Exemplo n.º 11
0
        public void TestWriteRecord1([Values(EndOfLine.CRLF, EndOfLine.LF, EndOfLine.CR)] EndOfLine eol)
        {
            const string ascii       = "ASCII";
            const string nonAscii    = "日本語";
            const string empty       = "";
            const string withNewline = "hello\r\nworld";
            var          record      = new[] { ascii, nonAscii, empty, withNewline };

            var settings = new CsvWriterSettings()
            {
                RecordDelimiter = eol,
            };

            using (var stream = new MemoryStream())
                using (var streamWriter = new StreamWriter(stream))
                    using (var writer = new CsvWriter(streamWriter, settings)
                    {
                        AutoFlush = true
                    })
                    {
                        writer.WriteRecordRaw(record);
                        stream.Seek(0, SeekOrigin.Begin);
                        using (var reader = new StreamReader(stream))
                        {
                            var expected = string.Join(",", record.Select(value => "\"" + value + "\"")) + eol.AsNewline();
                            var actual   = reader.ReadToEnd();
                            Assert.That(actual, Is.EqualTo(expected));
                        }
                    }
        }