private static long GetLineStart(string text, Encoding encoding, int byteOffset) { var encoded = EncodeStream(text, encoding); encoded.Position = byteOffset; return(TextFilePartitioner.FindNextLineStart(encoded, encoding)); }
private void TestFilePartitions(string fileName, string[][] expected, Encoding encoding = null) { var streams = new Stream[expected.Length]; for (int i = 0; i < streams.Length; i++) { streams[i] = System.IO.File.OpenRead(fileName); } var readers = TextFilePartitioner.PartitionReaders(streams, encoding); TestPartitionedReaders(readers, expected); }
private void TestPartitionStarts(string textWithStartPoints, Encoding encoding) { GetStartPoints(textWithStartPoints, out var textWithoutStartPoints, out var startPoints); var expectedStarts = GetByteOffsets(textWithoutStartPoints, encoding, startPoints); var stream = EncodeStream(textWithoutStartPoints, encoding); var actualStarts = TextFilePartitioner.GetPartitionStarts(stream, expectedStarts.Length, encoding); Assert.AreEqual(expectedStarts.Length, actualStarts.Length); for (int i = 0; i < expectedStarts.Length; i++) { Assert.AreEqual((long)expectedStarts[i], actualStarts[i]); } }
private TextReader[] GetPartitionedReaders(string text, int partitions, Encoding encoding) { var ms = new MemoryStream(); var writer = new StreamWriter(ms, encoding, bufferSize: 1024, leaveOpen: true); writer.Write(text); writer.Close(); ms.Position = 0; var bytes = ms.ToArray(); var streams = new Stream[partitions]; for (int i = 0; i < partitions; i++) { streams[i] = new MemoryStream(bytes); } return(TextFilePartitioner.PartitionReaders(streams, encoding)); }