// Copyright (c) Microsoft. All rights reserved. using AzureAISearch.ConformanceTests.Support; using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.VectorData; using VectorData.ConformanceTests; using VectorData.ConformanceTests.Support; using Xunit; namespace AzureAISearch.ConformanceTests; public class AzureAISearchEmbeddingGenerationTests(AzureAISearchEmbeddingGenerationTests.StringVectorFixture stringVectorFixture, AzureAISearchEmbeddingGenerationTests.RomOfFloatVectorFixture romOfFloatVectorFixture) : EmbeddingGenerationTests(stringVectorFixture, romOfFloatVectorFixture), IClassFixture, IClassFixture { // SearchAsync without a generator delegates to the service for AzureAISearch public override Task SearchAsync_string_without_generator_throws() => Task.CompletedTask; public new class StringVectorFixture : EmbeddingGenerationTests.StringVectorFixture { public override TestStore TestStore => AzureAISearchTestStore.Instance; public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator) => AzureAISearchTestStore.Instance.GetVectorStore(new() { EmbeddingGenerator = embeddingGenerator }); public override Func[] DependencyInjectionStoreRegistrationDelegates => [ services => services .AddSingleton(AzureAISearchTestStore.Instance.Client) .AddAzureAISearchVectorStore() ]; public override Func[] DependencyInjectionCollectionRegistrationDelegates => [ services => services .AddSingleton(AzureAISearchTestStore.Instance.Client) .AddAzureAISearchCollection(this.CollectionName) ]; } public new class RomOfFloatVectorFixture : EmbeddingGenerationTests.RomOfFloatVectorFixture { public override TestStore TestStore => AzureAISearchTestStore.Instance; public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator) => AzureAISearchTestStore.Instance.GetVectorStore(new() { EmbeddingGenerator = embeddingGenerator }); public override Func[] DependencyInjectionStoreRegistrationDelegates => [ services => services .AddSingleton(AzureAISearchTestStore.Instance.Client) .AddAzureAISearchVectorStore() ]; public override Func[] DependencyInjectionCollectionRegistrationDelegates => [ services => services .AddSingleton(AzureAISearchTestStore.Instance.Client) .AddAzureAISearchCollection(this.CollectionName) ]; } }