Forge
csharp4405de34
1using System.Text.Json;
2using CascadeIDE.Services;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class McpDebugPayloadParsingTests
8{
9 [Fact]
10 public void TryParseBreakpoints_NullArgs_FailsWithCanonicalMessage()
11 {
12 Assert.False(McpDebugPayloadParsing.TryParseBreakpoints(null, out var list, out var err));
13 Assert.Empty(list);
14 Assert.Equal(McpDebugPayloadParsing.MissingBreakpointsMessage, err);
15 }
16
17 [Fact]
18 public void TryParseBreakpoints_ValidArray_ParsesPathsAndLines()
19 {
20 var args = new Dictionary<string, JsonElement>
21 {
22 ["breakpoints"] = JsonSerializer.SerializeToElement(new[]
23 {
24 new { file_path = "C:\\a\\x.cs", line = 10 },
25 new { file_path = "", line = 1 },
26 new { file_path = "y.cs", line = 2 }
27 })
28 };
29
30 Assert.True(McpDebugPayloadParsing.TryParseBreakpoints(args, out var list, out var err));
31 Assert.Empty(err);
32 Assert.Equal(2, list.Count);
33 Assert.Equal(("C:\\a\\x.cs", 10), list[0]);
34 Assert.Equal(("y.cs", 2), list[1]);
35 }
36
37 [Fact]
38 public void ParseDebugState_NullArgs_EmptyLists()
39 {
40 McpDebugPayloadParsing.ParseDebugState(null, out var sf, out var v);
41 Assert.Empty(sf);
42 Assert.Empty(v);
43 }
44
45 [Fact]
46 public void ParseDebugState_FullPayload_ParsesStacksAndVariables()
47 {
48 var args = new Dictionary<string, JsonElement>
49 {
50 ["stack_frames"] = JsonSerializer.SerializeToElement(new[]
51 {
52 new { name = "Main", file = "Program.cs", line = 5 }
53 }),
54 ["variables"] = JsonSerializer.SerializeToElement(new[]
55 {
56 new { name = "x", value = "1", type = "int" }
57 })
58 };
59
60 McpDebugPayloadParsing.ParseDebugState(args, out var sf, out var v);
61 Assert.Single(sf);
62 Assert.Equal("Main", sf[0].Name);
63 Assert.Equal("Program.cs", sf[0].File);
64 Assert.Equal(5, sf[0].Line);
65 Assert.Single(v);
66 Assert.Equal("x", v[0].Name);
67 Assert.Equal("1", v[0].Value);
68 Assert.Equal("int", v[0].Type);
69 }
70}
71
View only · write via MCP/CIDE