use idakit::prelude::*;
use idakit_runner_macros::kernel_test;
#[kernel_test(read_only)]
fn function_names_are_total() {
crate::common::with_canonical_db(run);
}
fn run(idb: &mut Database) {
let (mut user, mut auto, mut dummy) = (0usize, 0usize, 0usize);
let mut total = 0usize;
for f in idb.functions() {
let name = f.name();
assert!(
!name.is_empty(),
"function {:#x} has an empty name",
f.address().get()
);
match &name {
FunctionName::User(text) => {
user += 1;
assert!(
idb.name(f.address()).as_deref() == Some(text.as_str()),
"Database::name disagrees with Function::name's User text at {:#x}",
f.address().get()
);
}
FunctionName::Auto(_) => auto += 1,
FunctionName::Dummy(_) => dummy += 1,
}
total += 1;
}
assert!(total > 0, "expected at least one function");
println!("function names OK: {total} funcs, {user} user, {auto} auto, {dummy} dummy");
}