use crate::framebuffer::Framebuffer; pub struct MockFramebuffer { width: u16, height: u16, pixels: [(u16, u16, u32); 4096], pixel_count: usize, flushed: bool, } impl MockFramebuffer { pub fn new(width: u16, height: u16) -> Self { Self { width, height, pixels: [(0, 0, 0); 4096], pixel_count: 0, flushed: false, } } pub fn pixel_count(&self) -> usize { self.pixel_count } pub fn was_flushed(&self) -> bool { self.flushed } pub fn pixel_at(&self, index: usize) -> (u16, u16, u32) { self.pixels[index] } } impl Framebuffer for MockFramebuffer { fn width(&self) -> u16 { self.width } fn height(&self) -> u16 { self.height } fn write_pixel(&mut self, x: u16, y: u16, color: u32) { if self.pixel_count < self.pixels.len() { self.pixels[self.pixel_count] = (x, y, color); self.pixel_count += 1; } } fn fill_rect(&mut self, x: u16, y: u16, w: u16, h: u16, color: u32) { for dy in 0..h { for dx in 0..w { self.write_pixel(x + dx, y + dy, color); } } } fn clear(&mut self, _color: u32) { self.pixel_count = 0; } fn flush(&mut self) { self.flushed = true; } }