Files
phantom b09795ccff Implement stable serialization and restoration for dock layouts, including auto-hidden and floating panels
- Add `persistence.rs` for stable serialization of dock layouts without runtime identifiers.
- Introduce `preview.rs` for geometry handling of dock drop previews.
- Create `sizing.rs` to manage content-aware sizing policies and constraint solving for dock panels.
- Implement `welcome.rs` to provide a welcome surface when no documents are open, featuring New and Open actions.
2026-07-16 22:10:22 +03:00

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