use hcie_protocol::Layer; #[test] fn test_draw_filled_rect() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_filled_rect(&mut layer, 1.0, 1.0, 4.0, 4.0, [255, 0, 0, 255], None); let px = layer.get_pixel(2, 2); assert_eq!(px[0], 255, "inside rect should be red"); assert_eq!(px[1], 0); assert_eq!(px[2], 0); } #[test] fn test_draw_filled_rect_outside() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_filled_rect(&mut layer, 1.0, 1.0, 4.0, 4.0, [255, 0, 0, 255], None); let px = layer.get_pixel(9, 9); assert_eq!(px, [0; 4], "outside rect should be unchanged"); } #[test] fn test_draw_filled_circle() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_filled_circle(&mut layer, 5.0, 5.0, 3.0, [0, 255, 0, 255], None); let px = layer.get_pixel(5, 5); assert_eq!(px[1], 255, "circle center should be green"); } #[test] fn test_draw_filled_ellipse() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_filled_ellipse(&mut layer, 5.0, 5.0, 3.0, 2.0, [0, 0, 255, 255], None); let px = layer.get_pixel(5, 5); assert_eq!(px[2], 255, "ellipse center should be blue"); } #[test] fn test_draw_line() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_line( &mut layer, 1.0, 5.0, 8.0, 5.0, [255, 255, 0, 255], 1.0, None, ); let px = layer.get_pixel(5, 5); assert_eq!(px[0], 255, "line pixel should be yellow"); assert_eq!(px[1], 255); } #[test] fn test_flood_fill() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::flood_fill(&mut layer, 0, 0, [255, 0, 0, 255], 0, None); let px = layer.get_pixel(5, 5); assert_eq!(px[0], 255, "flood filled area should be red"); } #[test] fn test_draw_with_mask_restricts_pixels() { let mut layer = Layer::new_transparent("test", 10, 10); let mut mask = vec![0u8; 100]; mask[0] = 255; hcie_draw::draw_filled_rect( &mut layer, 0.0, 0.0, 9.0, 9.0, [255, 0, 0, 255], Some(&mask), ); let in_mask = layer.get_pixel(0, 0); assert_eq!(in_mask[0], 255, "masked pixel should be red"); let out_mask = layer.get_pixel(5, 5); assert_eq!(out_mask, [0; 4], "unmasked pixel should be transparent"); } #[test] fn test_line_at_edge() { let mut layer = Layer::new_transparent("test", 10, 10); hcie_draw::draw_line(&mut layer, 0.0, 0.0, 9.0, 9.0, [255, 0, 0, 255], 1.0, None); let px = layer.get_pixel(0, 0); assert_eq!(px[0], 255, "line at edge should draw"); }