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); }
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 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 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]); }
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()); }
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]); }