예제 #1
0
        private static long GetLineStart(string text, Encoding encoding, int byteOffset)
        {
            var encoded = EncodeStream(text, encoding);

            encoded.Position = byteOffset;
            return(TextFilePartitioner.FindNextLineStart(encoded, encoding));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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]);
            }
        }
예제 #4
0
        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));
        }