summaryrefslogtreecommitdiff
path: root/src/vga/buffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/vga/buffer.rs')
-rw-r--r--src/vga/buffer.rs34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/vga/buffer.rs b/src/vga/buffer.rs
index 34c665d..4ca001c 100644
--- a/src/vga/buffer.rs
+++ b/src/vga/buffer.rs
@@ -109,6 +109,7 @@ impl NullLock<VgaWriter> {
});
}
+ #[allow(dead_code)]
pub fn write_string(&self, s: &str) {
self.lock(|writer| {
writer.write_string(s);
@@ -152,6 +153,37 @@ macro_rules! println {
pub static WRITER: NullLock<VgaWriter> = NullLock::new(VgaWriter {
column_position: 0,
- color_code: ColorCode::new(Color::Yellow, Color::Black),
+ color_code: ColorCode::new(Color::LightBlue, Color::Black),
buffer: None,
});
+
+#[test_case]
+fn test_println_simple() {
+ println!("test_println_simple output");
+}
+
+#[test_case]
+fn test_println_many() {
+ for _ in 0..200 {
+ println!("test_println_many output");
+ }
+}
+
+#[test_case]
+fn 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(|writer| {
+ if let Some(buffer) = &writer.buffer {
+ return buffer.chars[BUFFER_HEIGHT - 2][i].read();
+ } else {
+ return ScreenChar {
+ ascii_character: b' ',
+ color_code: ColorCode::new(Color::LightBlue, Color::Black),
+ };
+ }
+ });
+ assert_eq!(char::from(screen_char.ascii_character), c);
+ }
+}