Files
agent-framework/dotnet/tests/Microsoft.Extensions.AI.Agents.A2A.UnitTests/Extensions/A2AMessageExtensionsTests.cs
T
SergeyMenshykh 1d2f833122 .NET: A2A agent (#520)
* add a2a agent

* Update dotnet/src/Microsoft.Extensions.AI.Agents.A2A/A2AAgent.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* address pr review feedback

* move unit tests for extension methods to the extensions folder

* address pr review comments

* address pr review comments

* address pr review feedback

* move a2a agent sample to console app

* remove unnecessary Ids set for new projects in the solution file

* remove unnecessary configuration

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 08:30:30 +00:00

65 lines
2.0 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
using System.Collections.Generic;
using System.Text.Json;
using A2A;
namespace Microsoft.Extensions.AI.Agents.A2A.UnitTests;
/// <summary>
/// Unit tests for the <see cref="A2AMessageExtensions"/> class.
/// </summary>
public sealed class A2AMessageExtensionsTests
{
[Fact]
public void ToChatMessage_WithMixedParts_ReturnsChatMessageWithMixedContents()
{
// Arrange
var uri = "https://example.com/image.jpg";
var metadata = new Dictionary<string, JsonElement>
{
["isUrgent"] = JsonDocument.Parse("true").RootElement
};
var message = new Message
{
MessageId = "mixed-parts-id",
Role = MessageRole.Agent,
Parts = new List<Part>
{
new TextPart { Text = "Here's an image:" },
new FilePart { File = new FileWithUri { Uri = uri } },
new TextPart { Text = "What do you think?" }
},
Metadata = metadata
};
// Act
var result = message.ToChatMessage();
// Assert
Assert.NotNull(result);
Assert.Equal(ChatRole.Assistant, result.Role);
Assert.Equal(message, result.RawRepresentation);
Assert.NotNull(result.Contents);
Assert.Equal(3, result.Contents.Count);
var firstContent = Assert.IsType<TextContent>(result.Contents[0]);
Assert.Equal("Here's an image:", firstContent.Text);
var fileContent = Assert.IsType<HostedFileContent>(result.Contents[1]);
Assert.Equal(uri, fileContent.FileId);
var lastContent = Assert.IsType<TextContent>(result.Contents[2]);
Assert.Equal("What do you think?", lastContent.Text);
Assert.NotNull(result.AdditionalProperties);
Assert.Single(result.AdditionalProperties);
Assert.True(result.AdditionalProperties.ContainsKey("isUrgent"));
Assert.True(((JsonElement)result.AdditionalProperties["isUrgent"]!).GetBoolean());
}
}