File: Functions\ApprovalRequiredAIFunctionTests.cs
Web Access
Project: src\test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\Microsoft.Extensions.AI.Abstractions.Tests.csproj (Microsoft.Extensions.AI.Abstractions.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Threading.Tasks;
using Xunit;
 
namespace Microsoft.Extensions.AI.Functions;
 
public class ApprovalRequiredAIFunctionTests
{
    [Fact]
    public void Constructor_NullFunction_ThrowsArgumentNullException()
    {
        Assert.Throws<ArgumentNullException>("innerFunction", () => new ApprovalRequiredAIFunction(null!));
    }
 
    [Fact]
    public void DelegatesToInnerFunction_Properties()
    {
        var inner = AIFunctionFactory.Create(() => 42);
        var func = new ApprovalRequiredAIFunction(inner);
 
        Assert.Equal(inner.Name, func.Name);
        Assert.Equal(inner.Description, func.Description);
        Assert.Equal(inner.JsonSchema, func.JsonSchema);
        Assert.Equal(inner.ReturnJsonSchema, func.ReturnJsonSchema);
        Assert.Same(inner.JsonSerializerOptions, func.JsonSerializerOptions);
        Assert.Same(inner.UnderlyingMethod, func.UnderlyingMethod);
        Assert.Same(inner.AdditionalProperties, func.AdditionalProperties);
        Assert.Equal(inner.ToString(), func.ToString());
    }
 
    [Fact]
    public async Task InvokeAsync_DelegatesToInnerFunction()
    {
        var inner = AIFunctionFactory.Create(() => "result");
        var func = new ApprovalRequiredAIFunction(inner);
 
        var result = await func.InvokeAsync();
 
        Assert.Equal("result", result?.ToString());
    }
}