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