// Copyright (c) Microsoft. All rights reserved. using System; using System.Collections.Generic; using System.Linq; using FluentAssertions; using Microsoft.Agents.Workflows.Execution; namespace Microsoft.Agents.Workflows.UnitTests; internal static class MessageDeliveryValidation { public static void CheckForwarded(Dictionary> queuedMessages, params (string expectedSender, List expectedMessages)[] expectedForwards) { queuedMessages.Should().HaveCount(expectedForwards.Length); IEnumerable> perSenderValidations = expectedForwards.Select( (forward) => { (string expectedSender, List expectedMessages) = forward; return (Action)( senderId => { senderId.Should().Be(expectedSender); queuedMessages[senderId].Should().HaveCount(expectedMessages.Count); Action[] validations = expectedMessages.Select(message => (Action)(envelope => envelope!.Message.Should().Be(message))) .ToArray(); Assert.Collection(queuedMessages[senderId], validations); }); } ); Assert.Collection(queuedMessages.Keys, perSenderValidations.ToArray()); } }