"""Tests for the embedding wrapper (using the fake model fixture).""" from __future__ import annotations import numpy as np from wikikb import config, embed def test_embed_passages_shape_and_normalization(fake_model) -> None: vectors = embed.embed_passages(["a", "b", "c"], model=fake_model) assert vectors.shape == (3, config.EMBED_DIM) norms = np.linalg.norm(vectors, axis=1) assert np.allclose(norms, 1.0, atol=1e-5) def test_embed_passages_empty(fake_model) -> None: vectors = embed.embed_passages([], model=fake_model) assert vectors.shape == (0, config.EMBED_DIM) def test_embed_query_normalized(fake_model) -> None: vec = embed.embed_query("domain limit", model=fake_model) assert vec.shape == (config.EMBED_DIM,) assert np.isclose(np.linalg.norm(vec), 1.0, atol=1e-5) def test_get_model_returns_cached(monkeypatch, fake_model) -> None: monkeypatch.setattr(embed, "_model", fake_model) assert embed.get_model() is fake_model def test_normalize_handles_zero_vector() -> None: zero = np.zeros((1, config.EMBED_DIM), dtype=np.float32) out = embed._normalize(zero) assert np.all(out == 0.0) # zero norm replaced by 1, stays zero