-
Notifications
You must be signed in to change notification settings - Fork 693
Expand file tree
/
Copy pathIconTests.cs
More file actions
90 lines (76 loc) · 2.88 KB
/
IconTests.cs
File metadata and controls
90 lines (76 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using ModelContextProtocol.Protocol;
using System.Text.Json;
namespace ModelContextProtocol.Tests.Protocol;
public static class IconTests
{
[Fact]
public static void Icon_SerializationRoundTrip_PreservesAllProperties()
{
// Arrange
var original = new Icon
{
Src = "https://example.com/icon.png",
MimeType = "image/png",
Sizes = "48x48"
};
// Act - Serialize to JSON
string json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
// Act - Deserialize back from JSON
var deserialized = JsonSerializer.Deserialize<Icon>(json, McpJsonUtilities.DefaultOptions);
// Assert
Assert.NotNull(deserialized);
Assert.Equal(original.Src, deserialized.Src);
Assert.Equal(original.MimeType, deserialized.MimeType);
Assert.Equal(original.Sizes, deserialized.Sizes);
}
[Fact]
public static void Icon_SerializationRoundTrip_WithOnlyRequiredProperties()
{
// Arrange
var original = new Icon
{
Src = "data:image/svg+xml;base64,PHN2Zy4uLjwvc3ZnPg=="
};
// Act - Serialize to JSON
string json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
// Act - Deserialize back from JSON
var deserialized = JsonSerializer.Deserialize<Icon>(json, McpJsonUtilities.DefaultOptions);
// Assert
Assert.NotNull(deserialized);
Assert.Equal(original.Src, deserialized.Src);
Assert.Equal(original.MimeType, deserialized.MimeType);
Assert.Equal(original.Sizes, deserialized.Sizes);
}
[Fact]
public static void Icon_HasCorrectJsonPropertyNames()
{
var icon = new Icon
{
Src = "https://example.com/icon.svg",
MimeType = "image/svg+xml",
Sizes = "any"
};
string json = JsonSerializer.Serialize(icon, McpJsonUtilities.DefaultOptions);
Assert.Contains("\"src\":", json);
Assert.Contains("\"mimeType\":", json);
Assert.Contains("\"sizes\":", json);
}
[Theory]
[InlineData("""{}""")]
[InlineData("""{"mimeType":"image/png"}""")]
[InlineData("""{"sizes":"48x48"}""")]
[InlineData("""{"mimeType":"image/png","sizes":"48x48"}""")]
public static void Icon_DeserializationWithMissingSrc_ThrowsJsonException(string invalidJson)
{
Assert.Throws<JsonException>(() => JsonSerializer.Deserialize<Icon>(invalidJson, McpJsonUtilities.DefaultOptions));
}
[Theory]
[InlineData("false")]
[InlineData("true")]
[InlineData("42")]
[InlineData("[]")]
public static void Icon_DeserializationWithInvalidJson_ThrowsJsonException(string invalidJson)
{
Assert.Throws<JsonException>(() => JsonSerializer.Deserialize<Icon>(invalidJson, McpJsonUtilities.DefaultOptions));
}
}