use super::super::distance::CpuDistance;
use super::NativeHnsw;
type H = NativeHnsw<CpuDistance>;
#[test]
fn validate_vectors_file_len_accepts_large_file_backed_count() {
const HEADER: u64 = 16;
let dimension = 768usize;
let count = (20u64 * 1024 * 1024 * 1024) / (dimension as u64 * 4);
let payload = count * dimension as u64 * 4;
let file_len = payload + HEADER; assert!(
H::validate_vectors_file_len(count as usize, dimension, file_len).is_ok(),
"a file-backed large count must load, regardless of the alloc backstop"
);
}
#[test]
fn validate_vectors_file_len_rejects_short_file() {
let dimension = 128usize;
let count = 1_000_000usize;
let err = H::validate_vectors_file_len(count, dimension, 100)
.expect_err("file shorter than declared payload must be rejected");
assert_eq!(err.kind(), std::io::ErrorKind::InvalidData);
}
#[test]
fn validate_vectors_file_len_rejects_overflow_header() {
let err = H::validate_vectors_file_len(usize::MAX, usize::MAX, u64::MAX)
.expect_err("overflow-class payload must be rejected");
assert_eq!(err.kind(), std::io::ErrorKind::InvalidData);
}