diff --git a/src/main.rs b/src/main.rs index f8e09cbd..c715b7ca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,10 +58,3 @@ pub unsafe fn exit_qemu(exit_code: QemuExitCode) { let mut port = Port::new(0xf4); port.write(exit_code as u32); } - -#[test_case] -fn trivial_assertion() { - serial_print!("trivial assertion... "); - assert_eq!(1, 1); - serial_println!("[ok]"); -} diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index 94dbc4c6..e7d4ed5f 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -2,6 +2,7 @@ use core::fmt; use lazy_static::lazy_static; use spin::Mutex; use volatile::Volatile; +use crate::{serial_print, serial_println}; lazy_static! { /// A global `Writer` instance that can be used for printing to the VGA text buffer. @@ -169,3 +170,33 @@ pub fn _print(args: fmt::Arguments) { use core::fmt::Write; WRITER.lock().write_fmt(args).unwrap(); } + +#[test_case] +fn test_println_simple() { + serial_print!("test_println... "); + println!("test_println_simple output"); + serial_println!("[ok]"); +} + +#[test_case] +fn test_println_many() { + serial_print!("test_println_many... "); + for _ in 0..200 { + println!("test_println_many output"); + } + serial_println!("[ok]"); +} + +#[test_case] +fn test_println_output() { + serial_print!("test_println_output... "); + + let s = "Some test string that fits on a single line"; + println!("{}", s); + for (i, c) in s.chars().enumerate() { + let screen_char = WRITER.lock().buffer.chars[BUFFER_HEIGHT - 2][i].read(); + assert_eq!(char::from(screen_char.ascii_character), c); + } + + serial_println!("[ok]"); +}