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:
parent
a3ce9e9606
commit
80b1ad21d7
1 changed files with 400 additions and 103 deletions
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Reference in a new issue