use super::*;
use quipu::embedding::EmbeddingProvider;
struct FixedProvider {
dim: usize,
}
impl EmbeddingProvider for FixedProvider {
fn embed_text(&self, _text: &str) -> quipu::Result<Vec<f32>> {
Ok(vec![0.5; self.dim])
}
fn dimension(&self) -> usize {
self.dim
}
}
#[test]
fn test_reported_dimension_matches_produced_vectors() {
let p = FixedProvider { dim: 384 };
assert_eq!(p.dimension(), p.embed_text("anything").unwrap().len());
}
#[test]
fn test_default_batch_agrees_with_single() {
let p = FixedProvider { dim: 8 };
let batch = p.embed_batch(&["a", "b", "c"]).unwrap();
assert_eq!(3, batch.len());
for v in batch {
assert_eq!(p.embed_text("a").unwrap(), v);
}
}
#[test]
fn test_a_store_without_a_provider_is_distinguishable_from_one_with() {
let mut store = quipu::Store::open_in_memory().expect("in-memory store");
store.set_embedding_provider(std::sync::Arc::new(FixedProvider { dim: 384 }));
}