mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
a610a4769c
* add support for baackground responses to a2a agent * fix line endings * address pr review comments * address pr review comments * update sample to net10.0 * Update dotnet/samples/GettingStarted/A2A/A2AAgent_PollingForTaskCompletion/README.md Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com> * Update dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AAgentTaskExtensions.cs Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com> * Update dotnet/samples/GettingStarted/A2A/A2AAgent_PollingForTaskCompletion/Program.cs Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com> * address pr review feedback * add clarification regarding background responses --------- Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
108 lines
3.4 KiB
C#
108 lines
3.4 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Text.Json;
|
|
using A2A;
|
|
using Microsoft.Extensions.AI;
|
|
|
|
namespace Microsoft.Agents.AI.A2A.UnitTests;
|
|
|
|
/// <summary>
|
|
/// Unit tests for the <see cref="A2AArtifactExtensions"/> class.
|
|
/// </summary>
|
|
public sealed class A2AArtifactExtensionsTests
|
|
{
|
|
[Fact]
|
|
public void ToChatMessage_WithMultiplePartsMetadataAndRawRepresentation_ReturnsCorrectChatMessage()
|
|
{
|
|
// Arrange
|
|
var artifact = new Artifact
|
|
{
|
|
ArtifactId = "artifact-comprehensive",
|
|
Name = "comprehensive-artifact",
|
|
Parts =
|
|
[
|
|
new TextPart { Text = "First part" },
|
|
new TextPart { Text = "Second part" },
|
|
new TextPart { Text = "Third part" }
|
|
],
|
|
Metadata = new Dictionary<string, JsonElement>
|
|
{
|
|
{ "key1", JsonSerializer.SerializeToElement("value1") },
|
|
{ "key2", JsonSerializer.SerializeToElement(42) }
|
|
}
|
|
};
|
|
|
|
// Act
|
|
var result = artifact.ToChatMessage();
|
|
|
|
// Assert - Verify multiple parts
|
|
Assert.NotNull(result);
|
|
Assert.Equal(ChatRole.Assistant, result.Role);
|
|
Assert.Equal(3, result.Contents.Count);
|
|
Assert.All(result.Contents, content => Assert.IsType<TextContent>(content));
|
|
Assert.Equal("First part", ((TextContent)result.Contents[0]).Text);
|
|
Assert.Equal("Second part", ((TextContent)result.Contents[1]).Text);
|
|
Assert.Equal("Third part", ((TextContent)result.Contents[2]).Text);
|
|
|
|
// Assert - Verify metadata conversion to AdditionalProperties
|
|
Assert.NotNull(result.AdditionalProperties);
|
|
Assert.Equal(2, result.AdditionalProperties.Count);
|
|
Assert.True(result.AdditionalProperties.ContainsKey("key1"));
|
|
Assert.True(result.AdditionalProperties.ContainsKey("key2"));
|
|
|
|
// Assert - Verify RawRepresentation is set to artifact
|
|
Assert.NotNull(result.RawRepresentation);
|
|
Assert.Same(artifact, result.RawRepresentation);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToAIContents_WithMultipleParts_ReturnsCorrectList()
|
|
{
|
|
// Arrange
|
|
var artifact = new Artifact
|
|
{
|
|
ArtifactId = "artifact-ai-multi",
|
|
Name = "test",
|
|
Parts = new List<Part>
|
|
{
|
|
new TextPart { Text = "Part 1" },
|
|
new TextPart { Text = "Part 2" },
|
|
new TextPart { Text = "Part 3" }
|
|
},
|
|
Metadata = null
|
|
};
|
|
|
|
// Act
|
|
var result = artifact.ToAIContents();
|
|
|
|
// Assert
|
|
Assert.NotNull(result);
|
|
Assert.Equal(3, result.Count);
|
|
Assert.All(result, content => Assert.IsType<TextContent>(content));
|
|
Assert.Equal("Part 1", ((TextContent)result[0]).Text);
|
|
Assert.Equal("Part 2", ((TextContent)result[1]).Text);
|
|
Assert.Equal("Part 3", ((TextContent)result[2]).Text);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToAIContents_WithEmptyParts_ReturnsEmptyList()
|
|
{
|
|
// Arrange
|
|
var artifact = new Artifact
|
|
{
|
|
ArtifactId = "artifact-empty",
|
|
Name = "test",
|
|
Parts = new List<Part>(),
|
|
Metadata = null
|
|
};
|
|
|
|
// Act
|
|
var result = artifact.ToAIContents();
|
|
|
|
// Assert
|
|
Assert.NotNull(result);
|
|
Assert.Empty(result);
|
|
}
|
|
}
|