use crate::io::{qemu, serial}; use core::fmt::Write; use qemu::{exit_qemu, QemuExitCode}; use serial::SerialStream; pub fn serial_test_runner_panic(tests: &[&dyn Fn()]) { let mut stdout = SerialStream::new(); write!(stdout, "\nRunning {} tests\n", tests.len()).unwrap(); for test in tests { test(); write!(stdout, "\n[test did not panic]\n\n").unwrap(); exit_qemu(QemuExitCode::Failed); } exit_qemu(QemuExitCode::Success); } pub fn serial_test_runner(tests: &[&dyn Fn()]) { let mut stdout = SerialStream::new(); write!(stdout, "\nRunning {} tests\n", tests.len()).unwrap(); for test in tests { test(); write!(stdout, "\n[OK]\n").unwrap(); } exit_qemu(QemuExitCode::Success); } pub fn test_runner_panic(tests: &[&dyn Fn()]) { crate::vga_println!(); crate::vga_println!("Running {} tests", tests.len()); for test in tests { test(); crate::vga_println!(); crate::vga_println!("[test did not panic]"); crate::vga_println!(); exit_qemu(QemuExitCode::Failed); } exit_qemu(QemuExitCode::Success); } pub fn test_runner(tests: &[&dyn Fn()]) { crate::vga_println!(); crate::vga_println!("Running {} tests", tests.len()); for test in tests { test(); crate::vga_println!(); crate::vga_println!("[OK]"); } exit_qemu(QemuExitCode::Success); }