use self::probes::assert_c8_index_costs;
use self::session::run_session;
mod output;
mod probes;
mod readings;
mod scale;
mod session;
#[cfg_attr(miri, ignore)]
#[test]
fn measurements_report() {
let typed_target = 6_000usize;
let delete_target = 1_800usize;
let r = run_session(typed_target, delete_target);
let order_calls_per_keystroke = 1usize;
let order_node_visits = r.skeleton_len;
assert!(
r.visible_len <= r.skeleton_len,
"visible never exceeds skeleton"
);
assert!(
r.skeleton_len >= r.typed - r.deleted,
"skeleton retains every live element"
);
assert_eq!(
r.per_keystroke_dots, 1,
"a single keystroke ships exactly one store dot"
);
assert_eq!(
r.per_keystroke_context_bytes, 37,
"the empty-seeded per-keystroke context frame parks the novel dot as a run"
);
assert_eq!(
r.per_keystroke_floored_context_bytes, 21,
"the floored per-keystroke context frame folds the novel dot into the floor"
);
assert!(
r.batch_dots >= 50,
"a 50-keystroke batch ships at least 50 store dots"
);
assert!(
r.per_keystroke_bytes > 0 && r.batch_bytes > 0,
"both deltas carry positive measured cost",
);
assert!(
r.exceptions.iter().all(|&e| e == 0),
"whole-state deltas leave no exceptions"
);
assert!(
r.holes.iter().all(|&h| h == 0),
"whole-state deltas leave no holes"
);
assert_eq!(r.demo_exceptions, 2, "two parked dots above the gap");
assert_eq!(
r.demo_holes, 3,
"three missing dots (2, 3, 4) below the high water"
);
assert_c8_index_costs(&r);
let per_keystroke_bytes_per_dot = r.per_keystroke_bytes / r.per_keystroke_dots.max(1);
let batch_bytes_per_dot = r.batch_bytes / r.batch_dots.max(1);
#[cfg(feature = "std")]
output::print_report(
&r,
order_calls_per_keystroke,
order_node_visits,
per_keystroke_bytes_per_dot,
batch_bytes_per_dot,
);
output::touch_report_values(
&r,
order_calls_per_keystroke,
order_node_visits,
per_keystroke_bytes_per_dot,
batch_bytes_per_dot,
);
}