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" })); }
public void ShouldReturnMatchingTextRangesByRegularExpression_WhenTextRangesArePassed() { // Given var document = new TextDocument("hello world!"); var firstWord = document.CreateOrGetTextRange(0, 5); var secondWord = document.CreateOrGetTextRange(7, 11); var parameters = new[] { firstWord, secondWord, document.CreateOrGetTextRange(12, 12) }; underTest.Pattern = "^[a-z]+$"; // When var result = underTest.Run(parameters); // Then Assert.That(result, Is.EquivalentTo(new[] { firstWord, secondWord })); }
public static TextRange CreateTextRange(this ParserRuleContext context, TextDocument textDocument, Int32 startOffset = 0, Int32 stopOffset = 0) { TextRange textRange = textDocument.CreateOrGetTextRange(context.Start.StartIndex + startOffset, context.Stop.StopIndex + 1 + stopOffset); return(textRange); }
public static TextRange CreateTextRange(this ITerminalNode comma, TextDocument textDocument) { return(textDocument.CreateOrGetTextRange(comma.Symbol.StartIndex, comma.Symbol.StopIndex + 1)); }