Skip to content

Commit 0652e52

Browse files
authored
Add test for collision detection with ExcludeFromSchema
Adds test to verify that parameter name collision detection occurs even when one of the colliding parameters is excluded from schema generation via ExcludeFromSchema = true. This addresses reviewer feedback about potential silent de-duplication in this scenario.
1 parent f34f54f commit 0652e52

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

test/Libraries/Microsoft.Extensions.AI.Tests/Functions/AIFunctionFactoryTest.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,28 @@ public void AIParameterNameAttribute_DuplicateNames_Throw()
480480
Assert.Contains("filter", ex2.Message);
481481
}
482482

483+
[Fact]
484+
public void AIParameterNameAttribute_DuplicateNames_DetectedEvenWhenExcludedFromSchema()
485+
{
486+
// Validates that collision detection occurs in ExpectedArgumentNames collection
487+
// even when one of the colliding parameters is excluded from schema generation.
488+
// This addresses the concern that collisions might go undetected when
489+
// ExcludeFromSchema = true for one of the parameters.
490+
491+
var options = new AIFunctionFactoryOptions
492+
{
493+
ConfigureParameterBinding = p => p.Name == "second"
494+
? new AIFunctionFactoryOptions.ParameterBindingOptions { ExcludeFromSchema = true }
495+
: default
496+
};
497+
498+
ArgumentException ex = Assert.Throws<ArgumentException>(() => AIFunctionFactory.Create(
499+
([AIParameterName("dup")] string first, [AIParameterName("dup")] string second) => first + second,
500+
options));
501+
Assert.Contains("dup", ex.Message);
502+
Assert.Contains("AIParameterNameAttribute", ex.Message);
503+
}
504+
483505
[Fact]
484506
public void AIFunctionNameAttribute_DisplayNameAttribute_StillHonoredWhenNoAIFunctionNameAttribute()
485507
{

0 commit comments

Comments
 (0)