use super::*;
use crate::provenance::Fingerprint;
#[test]
fn serde_round_trips_and_rejects_degenerate() {
let norm = LatentNorm::new(vec![1.0, -2.0], vec![3.0, 0.5], LatentNorm::DEFAULT_EPS).unwrap();
let json = serde_json::to_string(&norm).unwrap();
let back: LatentNorm = serde_json::from_str(&json).unwrap();
assert_eq!(norm, back);
let bad = r#"{"mean":[0.0],"std":[0.0]}"#;
assert!(serde_json::from_str::<LatentNorm>(bad).is_err());
let bad = r#"{"mean":[0.0,0.0],"std":[1.0]}"#;
assert!(serde_json::from_str::<LatentNorm>(bad).is_err());
}
#[test]
fn equal_statistics_hash_equally() {
let a = LatentNorm::new(vec![1.0, 2.0], vec![3.0, 4.0], LatentNorm::DEFAULT_EPS).unwrap();
let same = LatentNorm::new(vec![1.0, 2.0], vec![3.0, 4.0], LatentNorm::DEFAULT_EPS).unwrap();
let diff = LatentNorm::new(vec![1.0, 2.0], vec![3.0, 4.5], LatentNorm::DEFAULT_EPS).unwrap();
assert_eq!(
Fingerprint::of(&a).unwrap(),
Fingerprint::of(&same).unwrap()
);
assert_ne!(
Fingerprint::of(&a).unwrap(),
Fingerprint::of(&diff).unwrap()
);
}