From e1f72768468fed481eaf3bff54ff9070956af93e Mon Sep 17 00:00:00 2001 From: Eirik Tsarpalis Date: Thu, 3 Jul 2025 15:33:44 +0300 Subject: [PATCH 1/2] AIFunctionFactory: add test coverage for JSON comments. --- .../Functions/AIFunctionFactory.cs | 3 +-- .../Functions/AIFunctionFactoryTest.cs | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs index e864923883e..330cad4c2f1 100644 --- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs +++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs @@ -1058,8 +1058,7 @@ private record struct DescriptorKey( ( null # null literal | false # false literal | true # true literal - | \d # positive number - | -\d # negative number + | -?\d # number | " # string | \[ # start array | { # start object diff --git a/test/Libraries/Microsoft.Extensions.AI.Tests/Functions/AIFunctionFactoryTest.cs b/test/Libraries/Microsoft.Extensions.AI.Tests/Functions/AIFunctionFactoryTest.cs index b15d200a39a..afced22038f 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Tests/Functions/AIFunctionFactoryTest.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Tests/Functions/AIFunctionFactoryTest.cs @@ -103,10 +103,13 @@ public async Task Parameters_ToleratesJsonEncodedParameters() [InlineData(" \"I am a string!\" ")] [InlineData(" {}")] [InlineData("[]")] + [InlineData("// single-line comment\r\nnull")] + [InlineData("/* multi-line\r\ncomment */\r\nnull")] public async Task Parameters_ToleratesJsonStringParameters(string jsonStringParam) { - AIFunction func = AIFunctionFactory.Create((JsonElement param) => param); - JsonElement expectedResult = JsonDocument.Parse(jsonStringParam).RootElement; + JsonSerializerOptions options = new(AIJsonUtilities.DefaultOptions) { ReadCommentHandling = JsonCommentHandling.Skip }; + AIFunction func = AIFunctionFactory.Create((JsonElement param) => param, serializerOptions: options); + JsonElement expectedResult = JsonDocument.Parse(jsonStringParam, new() { CommentHandling = JsonCommentHandling.Skip }).RootElement; var result = await func.InvokeAsync(new() { From 34034a9331b7772ee2ba1eab3a44ec10dd96e729 Mon Sep 17 00:00:00 2001 From: Eirik Tsarpalis Date: Thu, 3 Jul 2025 17:34:19 +0300 Subject: [PATCH 2/2] Update src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs --- .../Functions/AIFunctionFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs index 330cad4c2f1..5ad178e7bc8 100644 --- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs +++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/AIFunctionFactory.cs @@ -1058,7 +1058,7 @@ private record struct DescriptorKey( ( null # null literal | false # false literal | true # true literal - | -?\d # number + | -?[0-9]# number | " # string | \[ # start array | { # start object