// Copyright (c) Microsoft. All rights reserved. using Microsoft.Extensions.VectorData; using PgVector.ConformanceTests.Support; using VectorData.ConformanceTests; using VectorData.ConformanceTests.Support; using Xunit; namespace PgVector.ConformanceTests; public class PostgresDistanceFunctionTests(PostgresDistanceFunctionTests.Fixture fixture) : DistanceFunctionTests(fixture), IClassFixture { public override Task EuclideanSquaredDistance() => Assert.ThrowsAsync(base.EuclideanSquaredDistance); public override Task NegativeDotProductSimilarity() => Assert.ThrowsAsync(base.NegativeDotProductSimilarity); public override async Task HammingDistance() { // Hamming distance is supported by pgvector, but only on binary vectors (bit(x)), and the test uses float32 vectors (vector(x)). var exception = await Assert.ThrowsAsync(base.HammingDistance); Assert.IsType(exception.InnerException); } public new class Fixture() : DistanceFunctionTests.Fixture { public override TestStore TestStore => PostgresTestStore.Instance; } }