Files
hcie-rust-v3.05/hcie-draw/tests/draw_pixels.rs
T
2026-07-09 02:59:53 +03:00

73 lines
2.5 KiB
Rust

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");
}