private TextDocumentContentChangeEvent DeleteAll(IReadOnlyList <string> content) { var changeRange = new VisualStudio.LanguageServer.Protocol.Range { Start = new Position(0, 0), End = content.Any() ? new Position(content.Count - 1, content.Last().Length) : new Position(0, 0) }; var changeLength = TestUtils.GetRangeLength(changeRange, content); return(new TextDocumentContentChangeEvent { Range = changeRange, RangeLength = changeLength, Text = string.Empty }); }
// does not modify range internal static int GetRangeLength(VisualStudio.LanguageServer.Protocol.Range range, IReadOnlyList <string> content) { Assert.IsTrue(Builder.IsValidRange(range)); if (range.Start.Line == range.End.Line) { return(range.End.Character - range.Start.Character); } var changeLength = content[range.Start.Line].Length - range.Start.Character; for (var line = range.Start.Line + 1; line < range.End.Line; ++line) { changeLength += content[line].Length; } return(changeLength + range.End.Character); }
private VisualStudio.LanguageServer.Protocol.Range GetRandomRange(IReadOnlyList <string> content) { var(startLine, endLine) = (this.rnd.Next(0, content.Count), this.rnd.Next(0, content.Count)); var(startChar, endChar) = (this.rnd.Next(0, content[startLine].Length + 1), this.rnd.Next(0, content[endLine].Length + 1)); ((startLine, startChar), (endLine, endChar)) = startLine <= endLine ? ((startLine, startChar), (endLine, endChar)) : ((endLine, endChar), (startLine, startChar)); if (startLine == endLine && startChar > endChar) { (startChar, endChar) = (endChar, startChar); } var range = new VisualStudio.LanguageServer.Protocol.Range { Start = new Position(startLine, startChar), End = new Position(endLine, endChar) }; Assert.IsTrue(TestUtils.IsValidRange(range)); return(range); }