// Copyright (c) Microsoft. All rights reserved. using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.VectorData; using Microsoft.SemanticKernel.Connectors.Redis; using Redis.ConformanceTests.Support; using VectorData.ConformanceTests; using VectorData.ConformanceTests.Support; using Xunit; namespace Redis.ConformanceTests; public class RedisHashSetEmbeddingGenerationTests(RedisHashSetEmbeddingGenerationTests.StringVectorFixture stringVectorFixture, RedisHashSetEmbeddingGenerationTests.RomOfFloatVectorFixture romOfFloatVectorFixture) : EmbeddingGenerationTests(stringVectorFixture, romOfFloatVectorFixture), IClassFixture, IClassFixture { public new class StringVectorFixture : EmbeddingGenerationTests.StringVectorFixture { public override TestStore TestStore => RedisTestStore.HashSetInstance; public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator) => RedisTestStore.HashSetInstance.GetVectorStore(new() { StorageType = RedisStorageType.HashSet, EmbeddingGenerator = embeddingGenerator }); public override Func[] DependencyInjectionStoreRegistrationDelegates => [ services => services .AddSingleton(RedisTestStore.HashSetInstance.Database) .AddRedisVectorStore(optionsProvider: _ => new RedisVectorStoreOptions() { StorageType = RedisStorageType.HashSet}) ]; public override Func[] DependencyInjectionCollectionRegistrationDelegates => [ services => services .AddSingleton(RedisTestStore.HashSetInstance.Database) .AddRedisHashSetCollection(this.CollectionName) ]; } public new class RomOfFloatVectorFixture : EmbeddingGenerationTests.RomOfFloatVectorFixture { public override TestStore TestStore => RedisTestStore.HashSetInstance; public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator) => RedisTestStore.HashSetInstance.GetVectorStore(new() { StorageType = RedisStorageType.HashSet, EmbeddingGenerator = embeddingGenerator }); public override Func[] DependencyInjectionStoreRegistrationDelegates => [ services => services .AddSingleton(RedisTestStore.HashSetInstance.Database) .AddRedisVectorStore(optionsProvider: _ => new RedisVectorStoreOptions() { StorageType = RedisStorageType.HashSet}) ]; public override Func[] DependencyInjectionCollectionRegistrationDelegates => [ services => services .AddSingleton(RedisTestStore.HashSetInstance.Database) .AddRedisHashSetCollection(this.CollectionName) ]; } }