xz-embed 0.1.0

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

#[test]
fn test_metadata_filter_combinators() {
    let filter = MetadataFilter::and([
        MetadataFilter::eq("source", "docs"),
        MetadataFilter::in_values("lang", &["rust", "go"]),
        MetadataFilter::or([
            MetadataFilter::eq("status", "active"),
            MetadataFilter::eq("status", "draft"),
        ]),
    ]);

    match &filter {
        MetadataFilter::And(inner) => assert_eq!(inner.len(), 3),
        _ => panic!("expected And"),
    }
}

#[test]
fn test_metadata_filter_not() {
    let filter = MetadataFilter::not(MetadataFilter::eq("status", "archived"));

    match &filter {
        MetadataFilter::Not(inner) => match inner.as_ref() {
            MetadataFilter::Eq { key, value } => {
                assert_eq!(key, "status");
                assert_eq!(value, "archived");
            }
            _ => panic!("expected Eq"),
        },
        _ => panic!("expected Not"),
    }
}

#[test]
fn test_filter_from_str_auto() {
    let f = MetadataFilter::eq("key", "val");
    match f {
        MetadataFilter::Eq { key, value } => {
            assert_eq!(key, "key");
            assert_eq!(value, "val");
        }
        _ => panic!(),
    }
}