Esempio n. 1
0
        public void LabelShouldIncludeBracketGivenNameWithOneBracket()
        {
            string            declarationTitle = "[name";
            string            expected         = "[" + declarationTitle + "]";
            DeclarationType   declarationType  = DeclarationType.Table;
            string            tokenText        = "[]";
            SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
            CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

            Assert.Equal(completionItem.Label, expected);
            Assert.Equal(completionItem.InsertText, expected);
            Assert.Equal(completionItem.Detail, expected);
        }
Esempio n. 2
0
        public void LabelShouldIncludeQuotedIdentifiersGivenTokenWithQuotedIdentifier()
        {
            string            declarationTitle = "name";
            string            expected         = "\"" + declarationTitle + "\"";
            DeclarationType   declarationType  = DeclarationType.Table;
            string            tokenText        = "\"";
            SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
            CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

            Assert.Equal(completionItem.Label, expected);
            Assert.Equal(completionItem.InsertText, expected);
            Assert.Equal(completionItem.Detail, expected);
        }
        public void TempTablesShouldNotBeEscaped()
        {
            string            declarationTitle = "#TestTable";
            string            expected         = declarationTitle;
            DeclarationType   declarationType  = DeclarationType.Table;
            string            tokenText        = "";
            SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
            CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

            Assert.Equal(completionItem.Label, expected);
            Assert.Equal(completionItem.InsertText, expected);
            Assert.Equal(completionItem.Detail, expected);
        }
        public void LabelShouldNotIncludeDoubleBracketIfTokenIncludesBracketsGivenReservedName()
        {
            string            declarationTitle = "User";
            string            expected         = "[" + declarationTitle + "]";
            DeclarationType   declarationType  = DeclarationType.Table;
            string            tokenText        = "[";
            SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
            CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

            Assert.Equal(completionItem.Label, expected);
            Assert.Equal(completionItem.InsertText, expected);
            Assert.Equal(completionItem.Detail, expected);
        }
Esempio n. 5
0
        public void FunctionsShouldHaveParenthesesAdded(DeclarationType declarationType)
        {
            foreach (string word in AutoCompleteHelper.DefaultCompletionText)
            {
                string            declarationTitle = word;
                string            tokenText        = "";
                SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
                CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

                Assert.Equal(declarationTitle, completionItem.Label);
                Assert.Equal($"{declarationTitle}()", completionItem.InsertText);
                Assert.Equal(declarationTitle, completionItem.Detail);
            }
        }
Esempio n. 6
0
        public void InsertTextShouldNotIncludeBracketGivenReservedName()
        {
            foreach (string word in AutoCompleteHelper.DefaultCompletionText)
            {
                string            declarationTitle = word;
                DeclarationType   declarationType  = DeclarationType.ApplicationRole;
                string            tokenText        = "";
                SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
                CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

                Assert.Equal(completionItem.Label, word);
                Assert.Equal(completionItem.InsertText, word);
                Assert.Equal(completionItem.Detail, word);
            }
        }
Esempio n. 7
0
        public void NamedIdentifiersShouldBeBracketQuoted(DeclarationType declarationType)
        {
            string declarationTitle = declarationType.ToString();

            // All words - both reserved and not - should be bracket quoted for these types
            foreach (string word in AutoCompleteHelper.DefaultCompletionText.ToList().Append("NonReservedWord"))
            {
                string            tokenText      = "";
                SqlCompletionItem item           = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
                CompletionItem    completionItem = item.CreateCompletionItem(0, 1, 2);

                Assert.Equal(declarationTitle, completionItem.Label);
                Assert.Equal($"[{declarationTitle}]", completionItem.InsertText);
                Assert.Equal(declarationTitle, completionItem.Detail);
            }
        }
 internal static CompletionItem[] AddTokenToItems(CompletionItem[] currentList, Token token, int row,
                                                  int startColumn,
                                                  int endColumn)
 {
     if (currentList != null &&
         token != null && !string.IsNullOrWhiteSpace(token.Text) &&
         token.Text.All(ch => char.IsLetter(ch)) &&
         currentList.All(x => string.Compare(x.Label, token.Text, true) != 0
                         ))
     {
         var list = currentList.ToList();
         list.Insert(0, SqlCompletionItem.CreateCompletionItem(token.Text, token.Text, token.Text, CompletionItemKind.Text, row, startColumn, endColumn));
         return(list.ToArray());
     }
     return(currentList);
 }
Esempio n. 9
0
        public void InsertTextShouldIncludeBracketGivenReservedName()
        {
            foreach (string word in ReservedWords)
            {
                string            declarationTitle = word;
                string            expected         = "[" + declarationTitle + "]";
                DeclarationType   declarationType  = DeclarationType.Table;
                string            tokenText        = "";
                SqlCompletionItem item             = new SqlCompletionItem(declarationTitle, declarationType, tokenText);
                CompletionItem    completionItem   = item.CreateCompletionItem(0, 1, 2);

                Assert.Equal(completionItem.Label, word);
                Assert.Equal(completionItem.InsertText, expected);
                Assert.Equal(completionItem.Detail, word);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Converts a list of Declaration objects to CompletionItem objects
        /// since VS Code expects CompletionItems but SQL Parser works with Declarations
        /// </summary>
        /// <param name="suggestions"></param>
        /// <param name="cursorRow"></param>
        /// <param name="cursorColumn"></param>
        /// <returns></returns>
        internal static CompletionItem[] ConvertDeclarationsToCompletionItems(
            IEnumerable <Declaration> suggestions,
            int row,
            int startColumn,
            int endColumn,
            string tokenText = null)
        {
            List <CompletionItem> completions = new List <CompletionItem>();

            foreach (var autoCompleteItem in suggestions)
            {
                SqlCompletionItem sqlCompletionItem = new SqlCompletionItem(autoCompleteItem, tokenText);

                // convert the completion item candidates into CompletionItems
                completions.Add(sqlCompletionItem.CreateCompletionItem(row, startColumn, endColumn));
            }

            return(completions.ToArray());
        }