Exemple #1
0
        private static RoslynCompletionItem GetOrAddRoslynCompletionItem(VSCompletionItem vsItem)
        {
            if (!vsItem.Properties.TryGetProperty(CompletionSource.RoslynItem, out RoslynCompletionItem roslynItem))
            {
                roslynItem = RoslynCompletionItem.Create(
                    displayText: vsItem.DisplayText,
                    filterText: vsItem.FilterText,
                    sortText: vsItem.SortText,
                    displayTextSuffix: vsItem.Suffix);

                vsItem.Properties.AddProperty(CompletionSource.RoslynItem, roslynItem);
            }

            return(roslynItem);
        }
        public async Task OperatorIndexerCompletionItemsShouldBePlacedLastInCompletionList()
        {
            var castCompletionItem = (await GetCompletionItemsAsync(@"
public class C
{
    public static explicit operator float(C c) => 0;
}

public class Program
{
    public static void Main()
    {
        var c = new C();
        c.$$
    }
}
", SourceCodeKind.Regular)).Single();

            var completionList = new[] {
                CompletionItem.Create("SomeText0"),
                castCompletionItem,
                CompletionItem.Create("SomeText1"),
                CompletionItem.Create("\uffdcStartWith_FFDC_Identifier"),        // http://www.fileformat.info/info/unicode/char/ffdc/index.htm
                CompletionItem.Create("SomeText2"),
                CompletionItem.Create("\uD884\uDF4AStartWith_3134A_Identifier"), // http://www.fileformat.info/info/unicode/char/3134a/index.htm
                CompletionItem.Create("SomeText3"),
            };

            Array.Sort(completionList);
            Assert.Collection(completionList,
                              c => Assert.Equal("SomeText0", c.DisplayText),
                              c => Assert.Equal("SomeText1", c.DisplayText),
                              c => Assert.Equal("SomeText2", c.DisplayText),
                              c => Assert.Equal("SomeText3", c.DisplayText),
                              c => Assert.Equal("\uD884\uDF4AStartWith_3134A_Identifier", c.DisplayText),
                              c => Assert.Equal("\uffdcStartWith_FFDC_Identifier", c.DisplayText),
                              c =>
            {
                Assert.Same(c, castCompletionItem);
                Assert.Equal("float", c.DisplayText);
                Assert.Equal("\uFFFD001_float", c.SortText);
                Assert.Equal("float", c.FilterText);
            });
        }