Forge
csharpdeeb25a2
1using System.Text.Json;
2using CascadeIDE.Features.Editor.Application.Monaco;
3using Xunit;
4
5namespace CascadeIDE.Tests.MonacoForward;
6
7[Trait("Category", "MonacoForward")]
8public sealed class CideEditorBridgeProtocolTests
9{
10 [Fact]
11 public void TryParseInbound_capability_request_round_trips_fields()
12 {
13 const string json = """
14 {"type":"capability/completion","requestId":42,"line":3,"column":5}
15 """;
16 var msg = CideEditorBridgeJson.TryParseInbound(json);
17 Assert.NotNull(msg);
18 Assert.Equal(CideEditorBusManifest.Capabilities.Completion, msg!.Type);
19 Assert.Equal(42, msg.RequestId);
20 Assert.Equal(3, msg.Line);
21 Assert.Equal(5, msg.Column);
22 }
23
24 [Fact]
25 public void TryParseInbound_didChange_carries_version_and_text()
26 {
27 const string json = """
28 {"type":"editor/didChange","version":7,"text":"abc","caretOffset":2}
29 """;
30 var msg = CideEditorBridgeJson.TryParseInbound(json);
31 Assert.NotNull(msg);
32 Assert.Equal(7, msg!.Version);
33 Assert.Equal("abc", msg.Text);
34 Assert.Equal(2, msg.CaretOffset);
35 }
36
37 [Fact]
38 public void WrapOutbound_applyEdits_includes_expectedVersion()
39 {
40 var payload = new CideEditorApplyEditsMessage(
41 [new CideEditorApplyEdit(1, 2, "x")],
42 ExpectedVersion: 9);
43 var wrapped = CideEditorBridgeJson.WrapOutbound(CideEditorBridgeTypes.ApplyEdits, payload);
44 using var doc = JsonDocument.Parse(wrapped);
45 Assert.Equal(CideEditorBridgeTypes.ApplyEdits, doc.RootElement.GetProperty("type").GetString());
46 var inner = doc.RootElement.GetProperty("payload");
47 Assert.Equal(9, inner.GetProperty("expectedVersion").GetInt32());
48 Assert.Equal(1, inner.GetProperty("edits")[0].GetProperty("startOffset").GetInt32());
49 }
50
51 [Fact]
52 public void FromFilePath_maps_common_extensions()
53 {
54 Assert.Equal("csharp", CideEditorLanguageIds.FromFilePath(@"D:\a\b.cs"));
55 Assert.Equal("toml", CideEditorLanguageIds.FromFilePath(@"settings.toml"));
56 Assert.Equal("plaintext", CideEditorLanguageIds.FromFilePath(@"readme.xyz"));
57 }
58}
59
View only · write via MCP/CIDE