#![feature(type_alias_impl_trait)]
use pw_log::{error, info};

#[no_mangle]
pub extern "C" fn main() -> core::ffi::c_int {
    let mut success = true;
    unittest_core::for_each_test(|test| {
        info!("[{}] running", test.desc.name);
        match test.test_fn {
            unittest_core::TestFn::StaticTestFn(f) => {
                if let Err(e) = f() {
                    error!(
                        "[{}] FAILED: {}:{} - {}",
                        test.desc.name, e.file, e.line, e.message
                    );
                    success = false;
                } else {
                    info!("[{}] PASSED", test.desc.name);
                }
            }
        }
    });

    // Return a C error code here as we're implementing a "bare main".
    match success {
        true => 0,
        false => 1,
    }
}
