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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. public class MessageExtensionTests
  9. {
  10. [Fact]
  11. public void ExtractCodeBlock_WithSingleCodeBlock_ShouldReturnCodeBlock()
  12. {
  13. // Arrange
  14. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  15. var codeBlockPrefix = "```csharp";
  16. var codeBlockSuffix = "```";
  17. // Act
  18. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  19. codeBlock.Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  20. }
  21. [Fact]
  22. public void ExtractCodeBlock_WithMultipleCodeBlocks_ShouldReturnFirstCodeBlock()
  23. {
  24. // Arrange
  25. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```\n```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  26. var codeBlockPrefix = "```csharp";
  27. var codeBlockSuffix = "```";
  28. // Act
  29. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  30. codeBlock.Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  31. }
  32. [Fact]
  33. public void ExtractCodeBlock_WithNoCodeBlock_ShouldReturnNull()
  34. {
  35. // Arrange
  36. var message = new TextMessage(Role.Assistant, "Hello, World!");
  37. var codeBlockPrefix = "```csharp";
  38. var codeBlockSuffix = "```";
  39. // Act
  40. var codeBlock = message.ExtractCodeBlock(codeBlockPrefix, codeBlockSuffix);
  41. codeBlock.Should().BeNull();
  42. }
  43. [Fact]
  44. public void ExtractCodeBlocks_WithMultipleCodeBlocks_ShouldReturnAllCodeBlocks()
  45. {
  46. // Arrange
  47. var message = new TextMessage(Role.Assistant, "```csharp\nConsole.WriteLine(\"Hello, World!\");\n```\n```csharp\nConsole.WriteLine(\"Hello, World!\");\n```");
  48. var codeBlockPrefix = "```csharp";
  49. var codeBlockSuffix = "```";
  50. // Act
  51. var codeBlocks = message.ExtractCodeBlocks(codeBlockPrefix, codeBlockSuffix);
  52. codeBlocks.Should().HaveCount(2);
  53. codeBlocks.ElementAt(0).Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  54. codeBlocks.ElementAt(1).Should().BeEquivalentTo("Console.WriteLine(\"Hello, World!\");");
  55. }
  56. [Fact]
  57. public void ExtractCodeBlocks_WithNoCodeBlock_ShouldReturnEmpty()
  58. {
  59. // Arrange
  60. var message = new TextMessage(Role.Assistant, "Hello, World!");
  61. var codeBlockPrefix = "```csharp";
  62. var codeBlockSuffix = "```";
  63. // Act
  64. var codeBlocks = message.ExtractCodeBlocks(codeBlockPrefix, codeBlockSuffix);
  65. codeBlocks.Should().BeEmpty();
  66. }
  67. }