mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
1d2f833122
* 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>
65 lines
2.0 KiB
C#
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());
|
|
}
|
|
}
|