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); }); }