csharp-sdk/tests/ModelContextProtocol.Tests/Protocol/PromptMessageTests.cs
Copilot 80b1ad21d7
Use ReadOnlyMemory<byte> for binary data to eliminate UTF-16 transcoding (#1070)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: ericstj <8918108+ericstj@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
2026-02-19 14:08:05 -08:00

44 lines
1.7 KiB
C#

using ModelContextProtocol.Protocol;
using System.Text.Json;
namespace ModelContextProtocol.Tests.Protocol;
public static class PromptMessageTests
{
[Fact]
public static void PromptMessage_SerializationRoundTrip_PreservesAllProperties()
{
var original = new PromptMessage
{
Role = Role.User,
Content = new TextContentBlock { Text = "Hello, world!" }
};
string json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
var deserialized = JsonSerializer.Deserialize<PromptMessage>(json, McpJsonUtilities.DefaultOptions);
Assert.NotNull(deserialized);
Assert.Equal(Role.User, deserialized.Role);
var textBlock = Assert.IsType<TextContentBlock>(deserialized.Content);
Assert.Equal("Hello, world!", textBlock.Text);
}
[Fact]
public static void PromptMessage_SerializationRoundTrip_WithImageContent()
{
var original = new PromptMessage
{
Role = Role.Assistant,
Content = new ImageContentBlock { Data = System.Text.Encoding.UTF8.GetBytes("base64data"), MimeType = "image/png" }
};
string json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
var deserialized = JsonSerializer.Deserialize<PromptMessage>(json, McpJsonUtilities.DefaultOptions);
Assert.NotNull(deserialized);
Assert.Equal(Role.Assistant, deserialized.Role);
var imageBlock = Assert.IsType<ImageContentBlock>(deserialized.Content);
Assert.Equal("base64data", System.Text.Encoding.UTF8.GetString(imageBlock.Data.ToArray()));
Assert.Equal("image/png", imageBlock.MimeType);
}
}