コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        // 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());
        }
コード例 #5
0
        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());
        }
コード例 #6
0
 public ScriptContentFactory(DocumentView docView, ScriptDocumentInfo info)
 {
     DocumentView = docView;
     Info         = info;
 }
コード例 #7
0
 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));
 }