From 0cb9918a83b6b21df65de79cca58c44864a0a79c Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Mon, 1 Jul 2024 09:38:06 -0500 Subject: [PATCH] tests: add additional test cases --- .../Unit/Utils/JsonSchemaGeneratorTestData.cs | 91 ++++++++++++++++++- 1 file changed, 88 insertions(+), 3 deletions(-) diff --git a/tests/AnthropicClient.Tests/Unit/Utils/JsonSchemaGeneratorTestData.cs b/tests/AnthropicClient.Tests/Unit/Utils/JsonSchemaGeneratorTestData.cs index 2eecd02..d7f2a20 100644 --- a/tests/AnthropicClient.Tests/Unit/Utils/JsonSchemaGeneratorTestData.cs +++ b/tests/AnthropicClient.Tests/Unit/Utils/JsonSchemaGeneratorTestData.cs @@ -561,6 +561,83 @@ public class JsonSchemaGeneratorTestData : IEnumerable }, } }; + + var family =new Family(); + + // parameters from instance method + yield return new object[] + { + Tool.CreateFromInstanceMethod(TestToolName,TestToolDescription, family, nameof(family.AddMember)), + new JsonObject() + { + ["type"] = "object", + ["definitions"] = new JsonObject() + { + [$"{typeof(Person).FullName}"] = new JsonObject() + { + ["type"] = "object", + ["properties"] = new JsonObject() + { + ["Name"] = new JsonObject() + { + ["type"] = "string", + ["description"] = string.Empty + }, + ["Age"] = new JsonObject() + { + ["type"] = "integer", + ["description"] = string.Empty + } + }, + ["required"] = new JsonArray() + { + "Name", + "Age" + } + }, + }, + ["properties"] = new JsonObject() + { + ["member"] = new JsonObject() + { + ["$ref"] = $"#/definitions/{typeof(Person).FullName}", + ["description"] = string.Empty + } + }, + ["required"] = new JsonArray() + { + "member", + }, + } + }; + + // parameters from static method + yield return new object[] + { + Tool.CreateFromStaticMethod(TestToolName,TestToolDescription, typeof(Person), nameof(Person.Create)), + new JsonObject() + { + ["type"] = "object", + ["properties"] = new JsonObject() + { + ["name"] = new JsonObject() + { + ["type"] = "string", + ["description"] = string.Empty + }, + ["age"] = new JsonObject() + { + ["type"] = "integer", + ["description"] = string.Empty + } + }, + ["required"] = new JsonArray() + { + "name", + "age", + }, + } + }; } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); @@ -569,10 +646,18 @@ public class JsonSchemaGeneratorTestData : IEnumerable class Family { public List Members { get; } = []; + + public bool AddMember(Person member) + { + Members.Add(member); + return true; + } } -class Person +class Person(string name, int age) { - public string Name { get; } = string.Empty; - public int Age { get; } + public string Name { get; } = name; + public int Age { get; } = age; + + public static Person Create(string name, int age) => new Person(name, age); } \ No newline at end of file