use crate::io::{qemu, serial, vga_text}; use core::fmt::Write; use qemu::{exit_qemu, QemuExitCode}; use serial::SerialStream; use vga_text::OStream; 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()]) { let mut stdout = OStream::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 test_runner(tests: &[&dyn Fn()]) { let mut stdout = OStream::new(); write!(stdout, "\nRunning {} tests\n", tests.len()).unwrap(); for test in tests { test(); write!(stdout, "\n[OK]\n").unwrap(); } exit_qemu(QemuExitCode::Success); }