// Copyright (c) Microsoft. All rights reserved.
using System.Linq;
using System.Text.Json;
using Microsoft.Extensions.AI;
namespace Microsoft.Agents.AI.Workflows.Declarative.UnitTests;
///
/// Base class for event tests.
///
public abstract class EventTest(ITestOutputHelper output) : WorkflowTest(output)
{
protected static TEvent VerifyEventSerialization(TEvent source)
{
string? text = JsonSerializer.Serialize(source, AIJsonUtilities.DefaultOptions);
Assert.NotNull(text);
TEvent? copy = JsonSerializer.Deserialize(text, AIJsonUtilities.DefaultOptions);
Assert.NotNull(copy);
return copy;
}
protected static void AssertMessage(ChatMessage source, ChatMessage copy)
{
Assert.Equal(source.Role, copy.Role);
Assert.Equal(source.Text, copy.Text);
Assert.Equal(source.Contents.Count, copy.Contents.Count);
}
protected static TContent AssertContent(ChatMessage message) where TContent : AIContent
{
TContent[] contents = message.Contents.OfType().ToArray();
return Assert.Single(contents);
}
}