public void ShouldHandleHugeAmountTextSpans_WhenBatchModeIsActive(Int32 lines) { // Given var textBuilder = new StringBuilder(); var line = "one,two,three,four"; for (var i = 0; i < lines; i++) { textBuilder.AppendLine(line); } var underTest = new TextDocument(textBuilder.ToString()); var ranges = new List<TextRange>(); for (var i = 0; i < lines; i++) { var offset = (line.Length + Environment.NewLine.Length)*i; ranges.Add(underTest.CreateOrGetTextRange(offset + 0, offset + 3)); underTest.CreateOrGetTextRange(offset + 4, offset + 7); } // When var watch = Stopwatch.StartNew(); underTest.BeginTransaction(); foreach (var range in ranges) { underTest.ChangeText(range, "onetwo"); } underTest.EndTransaction(); watch.Stop(); // Then Console.WriteLine(watch.Elapsed); }
public void ShouldUpdateOverlappingTextRanges_AfterItChangedText() { // Given var underTest = new TextDocument("0123456789"); var words = new[] { underTest.CreateOrGetTextRange(0, 4), underTest.CreateOrGetTextRange(2, 10), }; // When underTest.ChangeText(words[0], "9"); var result = underTest.TextRanges .Where(range => range != underTest.TextRange) .Select(textRange => underTest.GetText(textRange)).ToArray(); // Then Assert.That(result, Is.EquivalentTo(new[] {"9", "9456789"})); }