use alpha_id::packed::{corpus_sha256, read_packed, write_packed, PackedHeader}; use std::io::Write; fn header(n_rows: u32, dim: u32) -> PackedHeader { PackedHeader { n_rows, dim, embed_model: "test/model".to_string(), corpus_sha256: "deadbeef".to_string(), corpus_name: "corpus.txt".to_string(), } } #[test] fn write_read_roundtrip_preserves_header_and_rows() { let dir = tempfile::tempdir().unwrap(); let path = dir.path().join("packed.bin"); let rows = vec![vec![0.0f32, 1.5, -2.25], vec![3.0, 4.0, 5.0]]; let h = header(2, 3); write_packed(&path, &h, &rows).unwrap(); let (got_h, got_rows) = read_packed(&path).unwrap(); assert_eq!(got_h, h); assert_eq!(got_rows, rows); } #[test] fn corpus_sha256_stable_and_sensitive() { let dir = tempfile::tempdir().unwrap(); let p = dir.path().join("c.txt"); std::fs::write(&p, b"alpha|beta").unwrap(); let a = corpus_sha256(p.to_str().unwrap()).unwrap(); let b = corpus_sha256(p.to_str().unwrap()).unwrap(); assert_eq!(a, b, "same bytes hash identically"); std::fs::write(&p, b"alpha|betb").unwrap(); let c = corpus_sha256(p.to_str().unwrap()).unwrap(); assert_ne!(a, c, "one changed byte changes the hash"); } #[test] fn read_packed_rejects_bad_magic() { let dir = tempfile::tempdir().unwrap(); let path = dir.path().join("bad.bin"); let mut f = std::fs::File::create(&path).unwrap(); f.write_all(b"XXXX____________").unwrap(); assert!(read_packed(&path).is_err()); }