public void ReturnsAppropriatelySizedChunks()
        {
            // Arrange
            MemoryStream memoryStream = new MemoryStream();
            StreamWriter streamWriter = new StreamWriter(memoryStream);
            streamWriter.Write("abcdefghijklmnopqrstuvwxyz");
            streamWriter.Flush();
            memoryStream.Position = 0;
            int chunkSize = 2;

            SerialStreamAdapter sut = new SerialStreamAdapter(memoryStream, chunkSize);

            // Act/Assert
            byte[] buffer = new byte[4096];
            int count1 = sut.Read(buffer, 0, 4096);
            Assert.AreEqual('a', (char)buffer[0]);
            Assert.AreEqual('b', (char)buffer[1]);
            Assert.AreEqual(chunkSize, count1);
            int count2 = sut.Read(buffer, 0, 4096);
            Assert.AreEqual('c', (char)buffer[0]);
            Assert.AreEqual('d', (char)buffer[1]);
            Assert.AreEqual(chunkSize, count2);
            int count3 = sut.Read(buffer, 0, 4096);
            Assert.AreEqual('e', (char)buffer[0]);
            Assert.AreEqual('f', (char)buffer[1]);
            Assert.AreEqual(chunkSize, count3);
        }
Esempio n. 2
0
        public void AllowsBigRowsAndQuotesWithinQuotesWithManyChunks()
        {
            string fakeCsvRow = "1,\"My \"\"\"\"name\"\"\"\" is \"\"X\"\"\",4";

            Stream csvStream = CreateMemoryStream(fakeCsvRow);
            Stream chunkedStream = new SerialStreamAdapter(csvStream, 2);

            ICsvRowTokenizer sut = new CsvRowTokenizer(chunkedStream);
            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]);
        }
Esempio n. 3
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]);
        }
Esempio n. 4
0
        public void CanReadMultipleLinesWithChunkedStream()
        {
            string fakeCsvRow = "1\r\n2\r\n3";

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

            ICsvRowTokenizer sut = new CsvRowTokenizer(chunkedStream);
            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());
        }
Esempio n. 5
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]);
        }
Esempio n. 6
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]);
        }