// 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); } }