use assert2::assert;
use idakit::kernel::Ida;
use rstest::rstest;
#[test]
fn new_run_returns_closure_value() {
let out = Ida::new().run(|_ida| 7).expect("kernel init failed");
assert!(out == 7);
}
#[test]
fn new_run_honors_stack_size() {
let out = Ida::new()
.stack_size(16 << 20)
.run(|_ida| 9)
.expect("kernel init failed");
assert!(out == 9);
}
#[rstest]
#[case::maybe_none_matches_omitted(None)]
#[case::explicit_documented_default(Some(8 << 20))]
#[case::larger_custom_size(Some(32 << 20))]
fn stack_size_maybe_succeeds(#[case] stack_size: Option<usize>) {
let out = Ida::new()
.maybe_stack_size(stack_size)
.run(|_ida| 11)
.expect("kernel init failed");
assert!(out == 11);
}
#[test]
fn new_here_brings_up_kernel() {
std::thread::Builder::new()
.stack_size(8 << 20)
.spawn(|| {
let idb = Ida::new().here().expect("kernel init failed");
drop(idb);
})
.expect("spawn")
.join()
.expect("here thread panicked");
}