use hypervector::encoder::ObjectEncoder;
use hypervector::mbat::MBAT;
use hypervector::{set_global_seed, Hypervector, TieBreaker};
use serde_json::json;
#[test]
fn test_crate_import_and_basic_usage() {
set_global_seed(42);
let hv = Hypervector::<MBAT>::generate(1000);
assert!(
(hv.cosine_similarity(&hv) - 1.0).abs() < 1e-6,
"Self similarity must be 1.0"
);
let mut encoder = ObjectEncoder::<MBAT>::new(1000, TieBreaker::AlwaysPositive);
let json_obj = json!({
"name": "Alice",
"age": 30,
"interests": ["rust", "coding", "hiking"]
});
let encoded = encoder.encode_object(&json_obj);
assert_eq!(encoded.to_vec().len(), 1000);
let fetched = encoder
.get_encoded_object(&json_obj)
.expect("The encoded object should be retrievable from the codebook.");
assert_eq!(
&encoded, fetched,
"The fetched encoding should match the computed encoding."
);
}