From f6460e99ee5195342b63b71e4e1a720eaaf4432e Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Sun, 18 Aug 2024 11:37:19 -0500 Subject: [PATCH] tests: add test for serializing system property with correct expected value based on whether given system messages or just a system message. --- .../Unit/Models/MessageRequestTests.cs | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/tests/AnthropicClient.Tests/Unit/Models/MessageRequestTests.cs b/tests/AnthropicClient.Tests/Unit/Models/MessageRequestTests.cs index bcd3532..6f96c54 100644 --- a/tests/AnthropicClient.Tests/Unit/Models/MessageRequestTests.cs +++ b/tests/AnthropicClient.Tests/Unit/Models/MessageRequestTests.cs @@ -322,6 +322,137 @@ public class MessageRequestTests : SerializationTest JsonAssert.Equal(_testJson, actual); } + [Fact] + public void JsonSerialization_WhenSerializedAndSystemMessagesAndSystemAreNull_ItShouldNotHaveSystemProperty() + { + var messageRequest = new MessageRequest( + model: AnthropicModels.Claude3Haiku, + messages: [ + new() + { + Role = MessageRole.User, + Content = [new TextContent("Hello!")] + } + ] + ); + + var expected = @"{ + ""model"": ""claude-3-haiku-20240307"", + ""messages"": [ + { + ""role"": ""user"", + ""content"": [ + { + ""text"": ""Hello!"", + ""type"": ""text"" + } + ] + } + ], + ""max_tokens"": 1024, + ""stop_sequences"": [], + ""temperature"": 0.0, + ""stream"": false + }"; + + var actual = Serialize(messageRequest); + + JsonAssert.Equal(expected, actual); + } + + [Fact] + public void JsonSerialization_WhenSerializedAndSystemMessagesAreProvided_ItShouldUseSystemMessagesForHaveSystemProperty() + { + var messageRequest = new MessageRequest( + model: AnthropicModels.Claude3Haiku, + messages: [ + new() + { + Role = MessageRole.User, + Content = [new TextContent("Hello!")] + } + ], + systemMessages: [ + new TextContent("You are a helpful assistant.") + ], + system: "test-system" + ); + + var expected = @"{ + ""model"": ""claude-3-haiku-20240307"", + ""system"": [ + { + ""text"": ""You are a helpful assistant."", + ""type"": ""text"" + } + ], + ""messages"": [ + { + ""role"": ""user"", + ""content"": [ + { + ""text"": ""Hello!"", + ""type"": ""text"" + } + ] + } + ], + ""max_tokens"": 1024, + ""stop_sequences"": [], + ""temperature"": 0.0, + ""stream"": false + }"; + + var actual = Serialize(messageRequest); + + JsonAssert.Equal(expected, actual); + } + + [Fact] + public void JsonSerialization_WhenSerializedAndSystemMessageIsProvided_ItShouldUseSystemMessageForHaveSystemProperty() + { + var messageRequest = new MessageRequest( + model: AnthropicModels.Claude3Haiku, + messages: [ + new() + { + Role = MessageRole.User, + Content = [new TextContent("Hello!")] + } + ], + system: "test-system" + ); + + var expected = @"{ + ""model"": ""claude-3-haiku-20240307"", + ""system"": [ + { + ""text"": ""test-system"", + ""type"": ""text"" + } + ], + ""messages"": [ + { + ""role"": ""user"", + ""content"": [ + { + ""text"": ""Hello!"", + ""type"": ""text"" + } + ] + } + ], + ""max_tokens"": 1024, + ""stop_sequences"": [], + ""temperature"": 0.0, + ""stream"": false + }"; + + var actual = Serialize(messageRequest); + + JsonAssert.Equal(expected, actual); + } + [Fact] public void JsonDeserialization_WhenDeserialized_ItShouldHaveExpectedShape() {