xz-embed 0.1.0

Text embedding and vector storage abstraction layer
Documentation
use std::collections::HashMap;
use xz_embed::*;

#[tokio::test]
async fn test_mock_embedder() {
    let mut mock = MockEmbedder::new(384, 32);
    mock.set_output(vec![vec![0.1; 384], vec![0.2; 384]]);

    let vectors = mock.embed(&["hello", "world"]).await.unwrap();
    assert_eq!(vectors.len(), 2);
    assert_eq!(vectors[0].len(), 384);
    assert_eq!(mock.dimensions(), 384);
}

#[tokio::test]
async fn test_batch_embed_with_expectation() {
    let mut mock = MockEmbedder::new(4, 32);
    mock.expect_embed(
        vec!["hello", "world"],
        vec![vec![0.1; 4], vec![0.2; 4]],
    );

    let vectors = mock.embed(&["hello", "world"]).await.unwrap();
    assert_eq!(vectors.len(), 2);
    assert_eq!(vectors[0].len(), 4);
}

#[tokio::test]
async fn test_embed_error_empty_batch() {
    let mock = MockEmbedder::new(4, 32);
    let result = mock.embed(&[]).await;
    assert!(matches!(result.unwrap_err(), EmbedError::EmptyBatch));
}