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>
This commit is contained in:
Copilot 2026-02-19 14:08:05 -08:00 • committed by GitHub
commit 80b1ad21d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -270,10 +270,10 @@ public partial class McpServerToolTests
Assert.Equal("text", (result.Content[0] as TextContentBlock)?.Text);
Assert.Equal("1234", (result.Content[1] as ImageContentBlock)?.Data);
Assert.Equal("1234", System.Text.Encoding.UTF8.GetString((result.Content[1] as ImageContentBlock)?.Data.ToArray() ?? []));
Assert.Equal("image/png", (result.Content[1] as ImageContentBlock)?.MimeType);
Assert.Equal("1234", (result.Content[2] as AudioContentBlock)?.Data);
Assert.Equal("1234", System.Text.Encoding.UTF8.GetString((result.Content[2] as AudioContentBlock)?.Data.ToArray() ?? []));
Assert.Equal("audio/wav", (result.Content[2] as AudioContentBlock)?.MimeType);
}
@ -309,12 +309,12 @@ public partial class McpServerToolTests
}
else if (result.Content[0] is ImageContentBlock ic)
{
Assert.Equal(data.Split(',').Last(), ic.Data);
Assert.Equal(data.Split(',').Last(), System.Text.Encoding.UTF8.GetString(ic.Data.ToArray()));
Assert.Equal("image/png", ic.MimeType);
}
else if (result.Content[0] is AudioContentBlock ac)
{
Assert.Equal(data.Split(',').Last(), ac.Data);
Assert.Equal(data.Split(',').Last(), System.Text.Encoding.UTF8.GetString(ac.Data.ToArray()));
Assert.Equal("audio/wav", ac.MimeType);
}
else
@ -397,7 +397,7 @@ public partial class McpServerToolTests
return (IList<ContentBlock>)
[
new TextContentBlock { Text = "42" },
new ImageContentBlock { Data = "1234", MimeType = "image/png" }
ImageContentBlock.FromBytes((byte[])[1, 2, 3, 4], "image/png")
];
});
var result = await tool.InvokeAsync(
@ -405,7 +405,7 @@ public partial class McpServerToolTests
TestContext.Current.CancellationToken);
Assert.Equal(2, result.Content.Count);
Assert.Equal("42", Assert.IsType<TextContentBlock>(result.Content[0]).Text);
Assert.Equal("1234", Assert.IsType<ImageContentBlock>(result.Content[1]).Data);
Assert.Equal((byte[])[1, 2, 3, 4], Assert.IsType<ImageContentBlock>(result.Content[1]).DecodedData.ToArray());
Assert.Equal("image/png", Assert.IsType<ImageContentBlock>(result.Content[1]).MimeType);
}
@ -414,7 +414,7 @@ public partial class McpServerToolTests
{
CallToolResult response = new()
{
Content = [new TextContentBlock { Text = "text" }, new ImageContentBlock { Data = "1234", MimeType = "image/png" }]
Content = [new TextContentBlock { Text = "text" }, ImageContentBlock.FromBytes((byte[])[1, 2, 3, 4], "image/png")]
};
Mock<McpServer> mockServer = new();
@ -431,7 +431,7 @@ public partial class McpServerToolTests
Assert.Equal(2, result.Content.Count);
Assert.Equal("text", Assert.IsType<TextContentBlock>(result.Content[0]).Text);
Assert.Equal("1234", Assert.IsType<ImageContentBlock>(result.Content[1]).Data);
Assert.Equal((byte[])[1, 2, 3, 4], Assert.IsType<ImageContentBlock>(result.Content[1]).DecodedData.ToArray());
}
[Fact]