コード例 #1
0
 private static SourceText FromLargeTextWriter(string source, Encoding encoding, SourceHashAlgorithm checksumAlgorithm)
 {
     using (var writer = new LargeTextWriter(encoding, checksumAlgorithm, source.Length))
     {
         writer.Write(source);
         return(writer.ToSourceText());
     }
 }
コード例 #2
0
        public void TestLargeTextWriterReusesLargeChunks()
        {
            var chunk1    = "this is the large text".ToArray();
            var largeText = CreateLargeText(chunk1);

            // chunks are considered large because they are bigger than the expected size
            var writer = new LargeTextWriter(largeText.Encoding, largeText.ChecksumAlgorithm, 10);

            largeText.Write(writer);

            var newText = (LargeText)writer.ToSourceText();

            Assert.NotSame(largeText, newText);

            Assert.Equal(1, GetChunks(newText).Length);
            Assert.Same(chunk1, GetChunks(newText)[0]);
        }
コード例 #3
0
        public void TestLargeTextWriterDoesNotResuseSmallChunks()
        {
            var text      = SourceText.From("small preamble");
            var chunk1    = "this is the large text".ToArray();
            var largeText = CreateLargeText(chunk1);

            // chunks are considered small because they fit within the buffer (which is the expected length for this test)
            var writer = new LargeTextWriter(largeText.Encoding, largeText.ChecksumAlgorithm, chunk1.Length * 4);

            // write preamble so buffer is allocated and has contents.
            text.Write(writer);

            // large text fits within the remaining buffer
            largeText.Write(writer);

            var newText = (LargeText)writer.ToSourceText();

            Assert.NotSame(largeText, newText);
            Assert.Equal(text.Length + largeText.Length, newText.Length);

            Assert.Equal(1, GetChunks(newText).Length);
            Assert.NotSame(chunk1, GetChunks(newText)[0]);
        }