Forge
csharpdeeb25a2
1using CascadeIDE.Features.Editor.Application.Monaco;
2using CascadeIDE.Services;
3using Xunit;
4
5namespace CascadeIDE.Tests.MonacoForward;
6
7[Trait("Category", "MonacoForward")]
8public 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
View only · write via MCP/CIDE