コード例 #1
0
        public void IncompleteQuoteThrowsError()
        {
            string fakeCsvRow = "\"hi how are y";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();
        }
コード例 #2
0
        public void SplitsApartLineWithQuotesWithCommas()
        {
            string fakeCsvRow = "\"1,2,3\"";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("1,2,3", tokens[0]);
        }
コード例 #3
0
        public void SplitsApartSimpleLine()
        {
            string fakeCsvRow = "1,2,3";

            Stream           csvStream = CreateMemoryStream(fakeCsvRow);
            ICsvRowTokenizer sut       = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #4
0
        public void AllowsQuotesWithinQuotes3()
        {
            string fakeCsvRow = "\"\"\"\"\"\"";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("\"\"", tokens[0]);
        }
コード例 #5
0
        public void SplitsApartValuelessLine()
        {
            string fakeCsvRow = ",,";

            Stream           csvStream = CreateMemoryStream(fakeCsvRow);
            ICsvRowTokenizer sut       = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("", tokens[1]);
            Assert.AreEqual("", tokens[2]);
        }
コード例 #6
0
        public void CanReadWithManyChunks()
        {
            string fakeCsvRow = "\"\"\"\"\"\"";

            Stream csvStream        = CreateMemoryStreamNoLastNewline(fakeCsvRow);
            Stream manyChunksStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(manyChunksStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("\"\"", tokens[0]);
        }
コード例 #7
0
        public void AllowsBigRowsAndQuotesWithinQuotes()
        {
            string fakeCsvRow = "1,\"My \"\"\"\"name\"\"\"\" is \"\"X\"\"\",4";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("My \"\"name\"\" is \"X\"", tokens[1]);
            Assert.AreEqual("4", tokens[2]);
        }
コード例 #8
0
        public void AllowsLastCharQuote()
        {
            string fakeCsvRow = "1,2,\"3\"";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #9
0
        public void SplitsApartLineWithDoubleQuotedValue()
        {
            string fakeCsvRow = "1,\"2\",3";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #10
0
        public void AllowsMissingLastNewlineWithLastCharComma()
        {
            string fakeCsvRow = "1,2,";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("", tokens[2]);
        }
コード例 #11
0
        public void AllowsLastCharEscapedQuote()
        {
            string fakeCsvRow = "1,2,3\"\"\"\"";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3\"", tokens[2]);
        }
コード例 #12
0
        public void CanReadMultipleLinesWithNoLastNewline()
        {
            string fakeCsvRow = "1\r\n2\r\n3";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[][] rows = sut.ReadAllRows().ToArray();

            Assert.AreEqual(3, rows.Length);
            Assert.AreEqual("1", rows[0].Single());
            Assert.AreEqual("2", rows[1].Single());
            Assert.AreEqual("3", rows[2].Single());
        }
コード例 #13
0
        public void SplitsApartQuoteAcrossWindowsLines()
        {
            string fakeCsvRow = "1,\"2\r\n3\",4";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2\r\n3", tokens[1]);
            Assert.AreEqual("4", tokens[2]);
        }
コード例 #14
0
        public void AllowsBigRowsAndQuotesWithinQuotes()
        {
            string fakeCsvRow = "1,\"My \"\"\"\"name\"\"\"\" is \"\"X\"\"\",4";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("My \"\"name\"\" is \"X\"", tokens[1]);
            Assert.AreEqual("4", tokens[2]);
        }
コード例 #15
0
        public void AllowsMissingLastNewlineWithLastCharQuoteWithManyChunks()
        {
            string fakeCsvRow = "1,2,\"3\"";

            Stream csvStream        = CreateMemoryStreamNoLastNewline(fakeCsvRow);
            Stream manyChunksStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(manyChunksStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #16
0
        public void AllowsQuotesWithinQuotesWithManyChunks2()
        {
            string fakeCsvRow = ",\"\"\"\"\"\",";

            Stream csvStream    = CreateMemoryStream(fakeCsvRow);
            Stream serialStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(serialStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("\"\"", tokens[1]);
            Assert.AreEqual("", tokens[2]);
        }
コード例 #17
0
        public void SplitsApartLineWithBlankField()
        {
            string fakeCsvRow = "\"\",1,2,3";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);

            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(4, tokens.Length);
            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("1", tokens[1]);
            Assert.AreEqual("2", tokens[2]);
            Assert.AreEqual("3", tokens[3]);
        }
コード例 #18
0
        public void SplitsApartValuelessLine()
        {
            string fakeCsvRow = ",,";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);
            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("", tokens[1]);
            Assert.AreEqual("", tokens[2]);
        }
コード例 #19
0
        public void SplitsApartSimpleLine()
        {
            string fakeCsvRow = "1,2,3";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);
            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #20
0
        public void SplitsApartQuoteAcrossWindowsLines()
        {
            string fakeCsvRow = "1,\"2\r\n3\",4";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2\r\n3", tokens[1]);
            Assert.AreEqual("4", tokens[2]);
        }
コード例 #21
0
        public void SplitsApartLineWithQuotesWithCommas()
        {
            string fakeCsvRow = "\"1,2,3\"";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("1,2,3", tokens[0]);
        }
コード例 #22
0
        public void SplitsApartLineWithDoubleQuotedValue()
        {
            string fakeCsvRow = "1,\"2\",3";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }
コード例 #23
0
        public void SplitsApartLineWithBlankField()
        {
            string fakeCsvRow = "\"\",1,2,3";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(4, tokens.Length);
            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("1", tokens[1]);
            Assert.AreEqual("2", tokens[2]);
            Assert.AreEqual("3", tokens[3]);
        }
コード例 #24
0
        public void IncompleteQuoteThrowsError()
        {
            string fakeCsvRow = "\"hi how are y";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();
        }
コード例 #25
0
        public void CanReadWithManyChunks()
        {
            string fakeCsvRow = "\"\"\"\"\"\"";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);
            Stream manyChunksStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(manyChunksStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("\"\"", tokens[0]);
        }
コード例 #26
0
        public void CanReadMultipleLinesWithNoLastNewline()
        {
            string fakeCsvRow = "1\r\n2\r\n3";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[][] rows = sut.ReadAllRows().ToArray();

            Assert.AreEqual(3, rows.Length);
            Assert.AreEqual("1", rows[0].Single());
            Assert.AreEqual("2", rows[1].Single());
            Assert.AreEqual("3", rows[2].Single());
        }
コード例 #27
0
        public void AllowsQuotesWithinQuotesWithManyChunks2()
        {
            string fakeCsvRow = ",\"\"\"\"\"\",";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);
            Stream serialStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(serialStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("", tokens[0]);
            Assert.AreEqual("\"\"", tokens[1]);
            Assert.AreEqual("", tokens[2]);
        }
コード例 #28
0
        public void AllowsQuotesWithinQuotes3()
        {
            string fakeCsvRow = "\"\"\"\"\"\"";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(1, tokens.Length);
            Assert.AreEqual("\"\"", tokens[0]);
        }
コード例 #29
0
        public void AllowsMissingLastNewlineWithLastCharCarriageReturn()
        {
            string fakeCsvRow = "1,2,3\r";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3\r", tokens[2]);
        }
コード例 #30
0
        public void AllowsMissingLastNewlineWithLastCharQuoteWithManyChunks()
        {
            string fakeCsvRow = "1,2,\"3\"";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);
            Stream manyChunksStream = new SerialStreamAdapter(csvStream, 1);

            ICsvRowTokenizer sut = new CsvRowTokenizer(manyChunksStream);
            string[] tokens = sut.ReadAllRows().First();

            Assert.AreEqual(3, tokens.Length);
            Assert.AreEqual("1", tokens[0]);
            Assert.AreEqual("2", tokens[1]);
            Assert.AreEqual("3", tokens[2]);
        }