guest_test_uefi/uefi/tests/
mod.rs1use crate::uefi::Splashes;
5use crate::uefi::splash;
6use core::num::NonZeroU8;
7use uefi::boot;
8use uefi::cstr16;
9use uefi::println;
10use uefi::runtime;
11use uefi::runtime::VariableVendor;
12
13pub fn run_tests() {
15    println!("running tests...");
16    let mut splash_seq = 2u8;
17
18    macro_rules! do_test {
19        ($test_fn:ident) => {{
20            let name = stringify!($test_fn);
21            println!(">>>>>> [TEST]: running '{}'", name);
22            $test_fn();
23            splash_seq = splash_seq.wrapping_shl(1);
24            splash::draw_splash(Splashes(NonZeroU8::new(splash_seq).unwrap()));
25            boot::stall(1000000); }};
27    }
28
29    do_test!(test_global_alloc);
30
31    do_test!(test_dbdefault);
32    do_test!(test_watchdog);
37}
38
39fn test_global_alloc() {
40    let s = format!("hello {}!", "world");
41    println!("look 'ma, i'm outputting a heap allocated string: {}", s);
42}
43
44fn test_watchdog() {
45    boot::set_watchdog_timer(5, 0xdeadbeef, None).unwrap();
46    boot::stall(1000000 * 6); panic!("watchdog should've expired, but we're still running!")
48}
49
50fn test_dbdefault() {
51    let db = runtime::get_variable_boxed(cstr16!("db"), &VariableVendor::IMAGE_SECURITY_DATABASE);
52    let dbdefault =
53        runtime::get_variable_boxed(cstr16!("dbDefault"), &VariableVendor::GLOBAL_VARIABLE);
54
55    let (db_data, _) = db.expect("db not found");
56    let (dbdefault_data, _) = dbdefault.expect("dbDefault not found");
57
58    assert_eq!(db_data, dbdefault_data);
59}
60
61