| 1 | using CascadeIDE.Features.Editor.Application.Monaco; |
| 2 | using CascadeIDE.Services; |
| 3 | using Xunit; |
| 4 | |
| 5 | namespace CascadeIDE.Tests.MonacoForward; |
| 6 | |
| 7 | [Trait("Category", "MonacoForward")] |
| 8 | public sealed class CideEditorCompletionMergerTests |
| 9 | { |
| 10 | [Fact] |
| 11 | public void Merge_adds_roslyn_StringBuilder_when_lsp_only_has_SByte() |
| 12 | { |
| 13 | var lsp = new[] |
| 14 | { |
| 15 | new CideEditorCompletionItem("SByte", "SByte", "struct System.SByte", "struct"), |
| 16 | }; |
| 17 | var roslyn = new[] |
| 18 | { |
| 19 | new CideEditorCompletionItem("SByte", "SByte", null, "struct"), |
| 20 | new CideEditorCompletionItem("StringBuilder", "StringBuilder", null, "class"), |
| 21 | }; |
| 22 | |
| 23 | var merged = CideEditorCompletionMerger.Merge(lsp, roslyn, "SB"); |
| 24 | |
| 25 | Assert.Contains(merged, i => i.Label == "SByte"); |
| 26 | Assert.Contains(merged, i => i.Label == "StringBuilder"); |
| 27 | } |
| 28 | |
| 29 | [Fact] |
| 30 | public void Extract_reads_identifier_prefix_on_new() |
| 31 | { |
| 32 | const string src = "class C { void M() { var x = new SB } }"; |
| 33 | var idx = src.IndexOf("SB", StringComparison.Ordinal); |
| 34 | Assert.Equal("SB", CSharpCompletionPrefix.Extract(src, line1: 1, column1: idx + 3)); |
| 35 | } |
| 36 | } |
| 37 | |