Forge
csharpdeeb25a2
1using System.Text.Json;
2using CascadeIDE.Services;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class McpCommandJsonArgsTests
8{
9 [Fact]
10 public void String_NullArgs_ReturnsNull()
11 {
12 Assert.Null(McpCommandJsonArgs.String(null, "k"));
13 }
14
15 [Fact]
16 public void String_MissingKey_ReturnsNull()
17 {
18 var args = Args(("other", JsonSerializer.SerializeToElement("x")));
19 Assert.Null(McpCommandJsonArgs.String(args, "k"));
20 }
21
22 [Fact]
23 public void String_Present_ReturnsValue()
24 {
25 var args = Args(("k", JsonSerializer.SerializeToElement("hello")));
26 Assert.Equal("hello", McpCommandJsonArgs.String(args, "k"));
27 }
28
29 [Fact]
30 public void Int_MissingOrInvalid_UsesDefault()
31 {
32 Assert.Equal(0, McpCommandJsonArgs.Int(null, "n"));
33 var args = Args(("n", JsonSerializer.SerializeToElement("not int")));
34 Assert.Equal(7, McpCommandJsonArgs.Int(args, "n", 7));
35 }
36
37 [Fact]
38 public void Int_Present_ReturnsValue()
39 {
40 var args = Args(("n", JsonSerializer.SerializeToElement(42)));
41 Assert.Equal(42, McpCommandJsonArgs.Int(args, "n", 0));
42 }
43
44 [Fact]
45 public void Bool_NonBoolean_UsesDefault()
46 {
47 var args = Args(("b", JsonSerializer.SerializeToElement("x")));
48 Assert.False(McpCommandJsonArgs.Bool(args, "b", false));
49 Assert.True(McpCommandJsonArgs.Bool(args, "b", true));
50 }
51
52 [Fact]
53 public void Bool_Present_ReturnsValue()
54 {
55 var t = Args(("b", JsonSerializer.SerializeToElement(true)));
56 var f = Args(("b", JsonSerializer.SerializeToElement(false)));
57 Assert.True(McpCommandJsonArgs.Bool(t, "b"));
58 Assert.False(McpCommandJsonArgs.Bool(f, "b"));
59 }
60
61 [Fact]
62 public void StringList_NullOrNotArray_ReturnsNull()
63 {
64 Assert.Null(McpCommandJsonArgs.StringList(null, "a"));
65 var args = Args(("a", JsonSerializer.SerializeToElement("s")));
66 Assert.Null(McpCommandJsonArgs.StringList(args, "a"));
67 }
68
69 [Fact]
70 public void StringList_FiltersWhitespaceAndEmpty()
71 {
72 var args = Args(("a", JsonSerializer.SerializeToElement(new[] { "a", "", " ", "b" })));
73 var list = McpCommandJsonArgs.StringList(args, "a");
74 Assert.NotNull(list);
75 Assert.Equal(new[] { "a", "b" }, list);
76 }
77
78 private static Dictionary<string, JsonElement> Args(params (string key, JsonElement el)[] pairs)
79 {
80 var d = new Dictionary<string, JsonElement>(StringComparer.Ordinal);
81 foreach (var (key, el) in pairs)
82 d[key] = el;
83 return d;
84 }
85}
86
View only · write via MCP/CIDE