private ScriptDocumentInfo CreateScriptDocumentInfo() { TextDocumentPosition doc = new TextDocumentPosition() { TextDocument = new TextDocumentIdentifier { Uri = "script file" }, Position = new Position() { Line = 1, Character = 14 } }; ScriptFile scriptFile = new ScriptFile() { Contents = "Select * from sys.all_objects" }; ScriptParseInfo scriptParseInfo = new ScriptParseInfo() { IsConnected = true }; ScriptDocumentInfo docInfo = new ScriptDocumentInfo(doc, scriptFile, scriptParseInfo); return(docInfo); }
public void MetricsShouldGetSortedGivenUnSortedArray() { TextDocumentPosition doc = new TextDocumentPosition() { TextDocument = new TextDocumentIdentifier { Uri = "script file" }, Position = new Position() { Line = 1, Character = 14 } }; ScriptFile scriptFile = new ScriptFile() { Contents = "Select * from sys.all_objects" }; ScriptParseInfo scriptParseInfo = new ScriptParseInfo(); ScriptDocumentInfo docInfo = new ScriptDocumentInfo(doc, scriptFile, scriptParseInfo); Assert.Equal(docInfo.StartLine, 1); Assert.Equal(docInfo.ParserLine, 2); Assert.Equal(docInfo.StartColumn, 44); Assert.Equal(docInfo.EndColumn, 14); Assert.Equal(docInfo.ParserColumn, 15); }
/// <summary> /// Get the default completion list from hard-coded list /// </summary> /// <param name="row"></param> /// <param name="startColumn"></param> /// <param name="endColumn"></param> /// <param name="useLowerCase"></param> internal static CompletionItem[] GetDefaultCompletionItems( ScriptDocumentInfo scriptDocumentInfo, bool useLowerCase) { int row = scriptDocumentInfo.StartLine; int startColumn = scriptDocumentInfo.StartColumn; int endColumn = scriptDocumentInfo.EndColumn; string tokenText = scriptDocumentInfo.TokenText; // determine how many default completion items there will be int listSize = DefaultCompletionText.Length; if (!string.IsNullOrWhiteSpace(tokenText)) { listSize = 0; foreach (var completionText in DefaultCompletionText) { if (completionText.StartsWith(tokenText, StringComparison.OrdinalIgnoreCase)) { ++listSize; } } } // special case empty list to avoid unneed array allocations if (listSize == 0) { return(emptyCompletionList); } // build the default completion list var completionItems = new CompletionItem[listSize]; int completionItemIndex = 0; foreach (var completionText in DefaultCompletionText) { // add item to list if the tokenText is null (meaning return whole list) // or if the completion item begins with the tokenText if (string.IsNullOrWhiteSpace(tokenText) || completionText.StartsWith(tokenText, StringComparison.OrdinalIgnoreCase)) { completionItems[completionItemIndex] = CreateDefaultCompletionItem( useLowerCase ? completionText.ToLowerInvariant() : completionText.ToUpperInvariant(), row, startColumn, endColumn); ++completionItemIndex; } } return(completionItems); }
// Disable flaky test (mairvine - 3/15/2018) // [Fact] public void CompletionItemsShouldCreatedUsingSqlParserIfTheProcessDoesNotTimeout() { ConnectedBindingQueue bindingQueue = new ConnectedBindingQueue(); ScriptDocumentInfo docInfo = CreateScriptDocumentInfo(); CompletionService completionService = new CompletionService(bindingQueue); ConnectionInfo connectionInfo = new ConnectionInfo(null, null, null); bool useLowerCaseSuggestions = true; CompletionItem[] defaultCompletionList = AutoCompleteHelper.GetDefaultCompletionItems(docInfo, useLowerCaseSuggestions); List <Declaration> declarations = new List <Declaration>(); var sqlParserWrapper = new Mock <ISqlParserWrapper>(); sqlParserWrapper.Setup(x => x.FindCompletions(docInfo.ScriptParseInfo.ParseResult, docInfo.ParserLine, docInfo.ParserColumn, It.IsAny <IMetadataDisplayInfoProvider>())).Returns(declarations); completionService.SqlParserWrapper = sqlParserWrapper.Object; AutoCompletionResult result = completionService.CreateCompletions(connectionInfo, docInfo, useLowerCaseSuggestions); Assert.NotNull(result); Assert.NotEqual(result.CompletionItems == null ? 0 : result.CompletionItems.Count(), defaultCompletionList.Count()); }
public void CompletionItemsShouldCreatedUsingDefaultListIfTheSqlParserProcessTimesout() { ConnectedBindingQueue bindingQueue = new ConnectedBindingQueue(); ScriptDocumentInfo docInfo = CreateScriptDocumentInfo(); CompletionService completionService = new CompletionService(bindingQueue); ConnectionInfo connectionInfo = new ConnectionInfo(null, null, null); bool useLowerCaseSuggestions = true; List <Declaration> declarations = new List <Declaration>(); CompletionItem[] defaultCompletionList = AutoCompleteHelper.GetDefaultCompletionItems(docInfo, useLowerCaseSuggestions); var sqlParserWrapper = new Mock <ISqlParserWrapper>(); sqlParserWrapper.Setup(x => x.FindCompletions(docInfo.ScriptParseInfo.ParseResult, docInfo.ParserLine, docInfo.ParserColumn, It.IsAny <IMetadataDisplayInfoProvider>())).Callback(() => Thread.Sleep(LanguageService.BindingTimeout + 100)).Returns(declarations); completionService.SqlParserWrapper = sqlParserWrapper.Object; AutoCompletionResult result = completionService.CreateCompletions(connectionInfo, docInfo, useLowerCaseSuggestions); Assert.NotNull(result); Assert.Equal(result.CompletionItems.Count(), defaultCompletionList.Count()); Thread.Sleep(3000); Assert.True(connectionInfo.IntellisenseMetrics.Quantile.Any()); }
public ScriptContentFactory(DocumentView docView, ScriptDocumentInfo info) { DocumentView = docView; Info = info; }
async Task <CompletionItem[]> ICompletionExtension.HandleCompletionAsync(ConnectionInfo connInfo, ScriptDocumentInfo scriptDocumentInfo, CompletionItem[] completions, CancellationToken token) { if (completions == null || completions == null || completions.Length == 0) { return(completions); } return(await Run(completions, token)); }