Skip to content

Commit 6c42203

Browse files
Address code review feedback: improve tests, remove docs, split test files
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
1 parent 24517c2 commit 6c42203

9 files changed

Lines changed: 385 additions & 437 deletions

File tree

SEP-973-EXAMPLES.md

Lines changed: 0 additions & 104 deletions
This file was deleted.

SEP-973-IMPLEMENTATION.md

Lines changed: 0 additions & 84 deletions
This file was deleted.

tests/ModelContextProtocol.Tests/Protocol/IconTests.cs

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,49 @@ namespace ModelContextProtocol.Tests.Protocol;
66
public static class IconTests
77
{
88
[Fact]
9-
public static void Icon_SerializesToJson_WithAllProperties()
9+
public static void Icon_SerializationRoundTrip_PreservesAllProperties()
1010
{
11-
var icon = new Icon
11+
// Arrange
12+
var original = new Icon
1213
{
1314
Src = "https://example.com/icon.png",
1415
MimeType = "image/png",
1516
Sizes = "48x48"
1617
};
1718

18-
string json = JsonSerializer.Serialize(icon);
19-
var result = JsonSerializer.Deserialize<Icon>(json);
19+
// Act - Serialize to JSON
20+
string json = JsonSerializer.Serialize(original);
21+
22+
// Act - Deserialize back from JSON
23+
var deserialized = JsonSerializer.Deserialize<Icon>(json);
2024

21-
Assert.Equal("https://example.com/icon.png", result!.Src);
22-
Assert.Equal("image/png", result.MimeType);
23-
Assert.Equal("48x48", result.Sizes);
25+
// Assert
26+
Assert.NotNull(deserialized);
27+
Assert.Equal(original.Src, deserialized.Src);
28+
Assert.Equal(original.MimeType, deserialized.MimeType);
29+
Assert.Equal(original.Sizes, deserialized.Sizes);
2430
}
2531

2632
[Fact]
27-
public static void Icon_SerializesToJson_WithOnlyRequiredProperties()
33+
public static void Icon_SerializationRoundTrip_WithOnlyRequiredProperties()
2834
{
29-
var icon = new Icon
35+
// Arrange
36+
var original = new Icon
3037
{
3138
Src = "data:image/svg+xml;base64,PHN2Zy4uLjwvc3ZnPg=="
3239
};
3340

34-
string json = JsonSerializer.Serialize(icon);
35-
var result = JsonSerializer.Deserialize<Icon>(json);
41+
// Act - Serialize to JSON
42+
string json = JsonSerializer.Serialize(original);
43+
44+
// Act - Deserialize back from JSON
45+
var deserialized = JsonSerializer.Deserialize<Icon>(json);
3646

37-
Assert.Equal("data:image/svg+xml;base64,PHN2Zy4uLjwvc3ZnPg==", result!.Src);
38-
Assert.Null(result.MimeType);
39-
Assert.Null(result.Sizes);
47+
// Assert
48+
Assert.NotNull(deserialized);
49+
Assert.Equal(original.Src, deserialized.Src);
50+
Assert.Equal(original.MimeType, deserialized.MimeType);
51+
Assert.Equal(original.Sizes, deserialized.Sizes);
4052
}
4153

4254
[Fact]
@@ -57,13 +69,23 @@ public static void Icon_HasCorrectJsonPropertyNames()
5769
}
5870

5971
[Theory]
60-
[InlineData("")]
61-
[InlineData(" ")]
62-
public static void Icon_DoesNotValidateEmptyOrWhitespaceSrc(string src)
72+
[InlineData("""{}""")]
73+
[InlineData("""{"mimeType":"image/png"}""")]
74+
[InlineData("""{"sizes":"48x48"}""")]
75+
[InlineData("""{"mimeType":"image/png","sizes":"48x48"}""")]
76+
public static void Icon_DeserializationWithMissingSrc_ThrowsJsonException(string invalidJson)
77+
{
78+
Assert.Throws<JsonException>(() => JsonSerializer.Deserialize<Icon>(invalidJson));
79+
}
80+
81+
[Theory]
82+
[InlineData("null")]
83+
[InlineData("false")]
84+
[InlineData("true")]
85+
[InlineData("42")]
86+
[InlineData("[]")]
87+
public static void Icon_DeserializationWithInvalidJson_ThrowsJsonException(string invalidJson)
6388
{
64-
// The Icon class doesn't enforce validation in the constructor
65-
// It's up to consumers to validate the URI format
66-
var icon = new Icon { Src = src };
67-
Assert.Equal(src, icon.Src);
89+
Assert.Throws<JsonException>(() => JsonSerializer.Deserialize<Icon>(invalidJson));
6890
}
6991
}

0 commit comments

Comments
 (0)