Exemple #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();
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
        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]);
        }
        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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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());
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
Exemple #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]);
        }
        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]);
        }
        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]);
        }
        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]);
        }
        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]);
        }
        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]);
        }
        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]);
        }
        public void IncompleteQuoteThrowsError()
        {
            string fakeCsvRow = "\"hi how are y";

            Stream csvStream = CreateMemoryStreamNoLastNewline(fakeCsvRow);

            ICsvRowTokenizer sut = new CsvRowTokenizer(csvStream);
            string[] tokens = sut.ReadAllRows().First();
        }
        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]);
        }
        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());
        }
        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]);
        }
        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]);
        }
        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]);
        }
        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]);
        }