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.

MessageExtensionTests.cs 2.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // MessageExtensionTests.cs
  3. using AutoGen.Core;
  4. using AutoGen.DotnetInteractive.Extension;
  5. using FluentAssertions;
  6. using Xunit;
  7. namespace AutoGen.DotnetInteractive.Tests;
  8. [Trait("Category", "UnitV1")]
  9. public class MessageExtensionTests
  10. {
  11. [Fact]
  12. public void ExtractCodeBlock_WithSingleCodeBlock_ShouldReturnCodeBlock()
  13. {
  14. // Arrange
  15. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  16. var codeBlockPrefix = "```csharp";
  17. var codeBlockSuffix = "```";
  18. // Act
  19. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  20. codeBlock.Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  21. }
  22. [Fact]
  23. public void ExtractCodeBlock_WithMultipleCodeBlocks_ShouldReturnFirstCodeBlock()
  24. {
  25. // Arrange
  26. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```\n```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  27. var codeBlockPrefix = "```csharp";
  28. var codeBlockSuffix = "```";
  29. // Act
  30. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  31. codeBlock.Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  32. }
  33. [Fact]
  34. public void ExtractCodeBlock_WithNoCodeBlock_ShouldReturnNull()
  35. {
  36. // Arrange
  37. var message = new TextMessage(Role.Assistant, "Hello, World!");
  38. var codeBlockPrefix = "```csharp";
  39. var codeBlockSuffix = "```";
  40. // Act
  41. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  42. codeBlock.Should().BeNull();
  43. }
  44. [Fact]
  45. public void ExtractCodeBlocks_WithMultipleCodeBlocks_ShouldReturnAllCodeBlocks()
  46. {
  47. // Arrange
  48. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```\n```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  49. var codeBlockPrefix = "```csharp";
  50. var codeBlockSuffix = "```";
  51. // Act
  52. var codeBlocks = message.ExtractCodeBlocks(codeBlockPrefix, codeBlockSuffix);
  53. codeBlocks.Should().HaveCount(2);
  54. codeBlocks.ElementAt(0).Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  55. codeBlocks.ElementAt(1).Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  56. }
  57. [Fact]
  58. public void ExtractCodeBlocks_WithNoCodeBlock_ShouldReturnEmpty()
  59. {
  60. // Arrange
  61. var message = new TextMessage(Role.Assistant, "Hello, World!");
  62. var codeBlockPrefix = "```csharp";
  63. var codeBlockSuffix = "```";
  64. // Act
  65. var codeBlocks = message.ExtractCodeBlocks(codeBlockPrefix, codeBlockSuffix);
  66. codeBlocks.Should().BeEmpty();
  67. }
  68. }