You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

HandlerInvokerTest.cs 2.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // HandlerInvokerTest.cs
  3. using FluentAssertions;
  4. using Microsoft.AutoGen.Contracts;
  5. using Xunit;
  6. namespace Microsoft.AutoGen.Core.Tests;
  7. [Trait("Category", "UnitV2")]
  8. public class HandlerInvokerTest()
  9. {
  10. public List<(string, MessageContext)> PublishlikeInvocations = new List<(string, MessageContext)>();
  11. public ValueTask PublishlikeAsync(string message, MessageContext messageContext)
  12. {
  13. this.PublishlikeInvocations.Add((message, messageContext));
  14. return ValueTask.CompletedTask;
  15. }
  16. public List<(string, MessageContext)> SendlikeInvocations = new List<(string, MessageContext)>();
  17. public ValueTask<int> SendlikeAsync(string message, MessageContext messageContext)
  18. {
  19. this.SendlikeInvocations.Add((message, messageContext));
  20. return ValueTask.FromResult(this.SendlikeInvocations.Count);
  21. }
  22. [Fact]
  23. public async Task Test_InvokingPublishlike_Succeeds()
  24. {
  25. MessageContext messageContext = new MessageContext(Guid.NewGuid().ToString(), CancellationToken.None);
  26. var methodInfo = typeof(HandlerInvokerTest).GetMethod(nameof(PublishlikeAsync))!;
  27. var invoker = new HandlerInvoker(methodInfo, this);
  28. object? result = await invoker.InvokeAsync("Hello, world!", messageContext);
  29. this.PublishlikeInvocations.Should().HaveCount(1);
  30. this.PublishlikeInvocations[0].Item1.Should().Be("Hello, world!");
  31. result.Should().BeNull();
  32. }
  33. [Fact]
  34. public async Task Test_InvokingSendlike_Succeeds()
  35. {
  36. MessageContext messageContext = new MessageContext(Guid.NewGuid().ToString(), CancellationToken.None);
  37. var methodInfo = typeof(HandlerInvokerTest).GetMethod(nameof(SendlikeAsync))!;
  38. var invoker = new HandlerInvoker(methodInfo, this);
  39. object? result = await invoker.InvokeAsync("Hello, world!", messageContext);
  40. this.SendlikeInvocations.Should().HaveCount(1);
  41. this.SendlikeInvocations[0].Item1.Should().Be("Hello, world!");
  42. result.Should().Be(1);
  43. }
  44. }