use keyhog_core::testing::{CoreTestApi, TestApi};
use std::io::Write;
fn tmp(name: &str, bytes: &[u8]) -> std::path::PathBuf {
let p = std::env::temp_dir().join(format!("keyhog_state_file_{name}_{}", std::process::id()));
std::fs::File::create(&p).unwrap().write_all(bytes).unwrap();
p
}
#[test]
fn within_cap_reads_exact_bytes() {
let p = tmp("ok", b"alpha-beta");
let got = TestApi
.read_capped(&p, 64, "calibration")
.expect("within cap must read");
assert_eq!(got, b"alpha-beta");
std::fs::remove_file(&p).ok();
}
#[test]
fn oversized_file_is_refused_with_invalid_data() {
let p = tmp("big", &vec![b'x'; 128]);
let err = TestApi
.read_capped(&p, 16, "merkle-index")
.expect_err("oversized must be refused");
assert_eq!(err.kind(), std::io::ErrorKind::InvalidData);
assert!(err.to_string().contains("exceeds 16 byte cap"));
std::fs::remove_file(&p).ok();
}