mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
35f44e854e
* fix: HandoffAgentExecutor does not output any reponse when non-streaming * fix: Ensure Workflow outputs persisted in chat history when hosted AsAgent * fix: Remove duplicate history entry creation and ad test * test: Add streaming tests for AsAgent to smoke tests * feat: Add output configurability to Handoffs
72 lines
2.9 KiB
C#
72 lines
2.9 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Agents.AI.Workflows.Specialized;
|
|
|
|
namespace Microsoft.Agents.AI.Workflows.UnitTests;
|
|
|
|
public class HandoffAgentExecutorTests : AIAgentHostingExecutorTestsBase
|
|
{
|
|
[Theory]
|
|
[InlineData(null, null)]
|
|
[InlineData(null, true)]
|
|
[InlineData(null, false)]
|
|
[InlineData(true, null)]
|
|
[InlineData(true, true)]
|
|
[InlineData(true, false)]
|
|
[InlineData(false, null)]
|
|
[InlineData(false, true)]
|
|
[InlineData(false, false)]
|
|
public async Task Test_HandoffAgentExecutor_EmitsStreamingUpdatesIFFConfiguredAsync(bool? executorSetting, bool? turnSetting)
|
|
{
|
|
// Arrange
|
|
TestRunContext testContext = new();
|
|
TestReplayAgent agent = new(TestMessages, TestAgentId, TestAgentName);
|
|
|
|
HandoffAgentExecutorOptions options = new("",
|
|
emitAgentResponseEvents: false,
|
|
emitAgentResponseUpdateEvents: executorSetting,
|
|
HandoffToolCallFilteringBehavior.None);
|
|
|
|
HandoffAgentExecutor executor = new(agent, options);
|
|
testContext.ConfigureExecutor(executor);
|
|
|
|
// Act
|
|
HandoffState message = new(new(turnSetting), null, []);
|
|
await executor.HandleAsync(message, testContext.BindWorkflowContext(executor.Id));
|
|
|
|
// Assert
|
|
bool expectingStreamingUpdates = turnSetting ?? executorSetting ?? false;
|
|
|
|
AgentResponseUpdateEvent[] updates = testContext.Events.OfType<AgentResponseUpdateEvent>().ToArray();
|
|
CheckResponseUpdateEventsAgainstTestMessages(updates, expectingStreamingUpdates, agent.GetDescriptiveId());
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(true)]
|
|
[InlineData(false)]
|
|
public async Task Test_HandoffAgentExecutor_EmitsResponseIFFConfiguredAsync(bool executorSetting)
|
|
{
|
|
// Arrange
|
|
TestRunContext testContext = new();
|
|
TestReplayAgent agent = new(TestMessages, TestAgentId, TestAgentName);
|
|
|
|
HandoffAgentExecutorOptions options = new("",
|
|
emitAgentResponseEvents: executorSetting,
|
|
emitAgentResponseUpdateEvents: false,
|
|
HandoffToolCallFilteringBehavior.None);
|
|
|
|
HandoffAgentExecutor executor = new(agent, options);
|
|
testContext.ConfigureExecutor(executor);
|
|
|
|
// Act
|
|
HandoffState message = new(new(false), null, []);
|
|
await executor.HandleAsync(message, testContext.BindWorkflowContext(executor.Id));
|
|
|
|
// Assert
|
|
AgentResponseEvent[] updates = testContext.Events.OfType<AgentResponseEvent>().ToArray();
|
|
CheckResponseEventsAgainstTestMessages(updates, expectingResponse: executorSetting, agent.GetDescriptiveId());
|
|
}
|
|
}
|