diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index 329ed425..9f0a1996 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -192,4 +192,34 @@ mod test { } } } + + #[test] + fn write_formatted() { + use core::fmt::Write; + + let mut writer = construct_writer(); + writeln!(&mut writer, "a").unwrap(); + writeln!(&mut writer, "b{}", "c").unwrap(); + + for (i, row) in writer.buffer.chars.iter().enumerate() { + for (j, screen_char) in row.iter().enumerate() { + let screen_char = screen_char.read(); + if i == BUFFER_HEIGHT - 3 && j == 0 { + assert_eq!(screen_char.ascii_character, b'a'); + assert_eq!(screen_char.color_code, writer.color_code); + } else if i == BUFFER_HEIGHT - 2 && j == 0 { + assert_eq!(screen_char.ascii_character, b'b'); + assert_eq!(screen_char.color_code, writer.color_code); + } else if i == BUFFER_HEIGHT - 2 && j == 1 { + assert_eq!(screen_char.ascii_character, b'c'); + assert_eq!(screen_char.color_code, writer.color_code); + } else if i >= BUFFER_HEIGHT - 2 { + assert_eq!(screen_char.ascii_character, b' '); + assert_eq!(screen_char.color_code, writer.color_code); + } else { + assert_eq!(screen_char, empty_char()); + } + } + } + } }