64 lines
2.0 KiB
Rust
64 lines
2.0 KiB
Rust
use hcie_brush_engine::{BrushTip, BrushStyle};
|
|
|
|
fn make_round_tip(size: f32, hardness: f32) -> BrushTip {
|
|
BrushTip {
|
|
style: BrushStyle::Round,
|
|
size,
|
|
hardness,
|
|
..BrushTip::default()
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_brush_stamp_size() {
|
|
let tip = make_round_tip(10.0, 0.5);
|
|
let stamp = hcie_brush_engine::generate_brush_stamp(&tip);
|
|
let expected_d = 20usize;
|
|
assert_eq!(stamp.len(), expected_d * expected_d, "stamp should be square");
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_brush_stamp_center_nonzero() {
|
|
let tip = make_round_tip(10.0, 1.0);
|
|
let stamp = hcie_brush_engine::generate_brush_stamp(&tip);
|
|
let d = 20usize;
|
|
let center = d / 2;
|
|
assert!(stamp[center * d + center] > 0, "center should be opaque");
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_brush_stamp_hardness_gradient() {
|
|
let soft = hcie_brush_engine::generate_brush_stamp(&make_round_tip(10.0, 0.0));
|
|
let hard = hcie_brush_engine::generate_brush_stamp(&make_round_tip(10.0, 1.0));
|
|
assert_eq!(soft.len(), hard.len(), "same size stamp should have same length");
|
|
}
|
|
|
|
#[test]
|
|
fn test_brush_spacing_pixels() {
|
|
let spacing = hcie_brush_engine::brush_spacing_pixels(20.0, 0.5);
|
|
assert_eq!(spacing, 10.0, "spacing should be size * ratio");
|
|
let min_spacing = hcie_brush_engine::brush_spacing_pixels(20.0, 0.0);
|
|
assert!((min_spacing - 0.2).abs() < 0.001, "min spacing should be ~0.2, got {}", min_spacing);
|
|
}
|
|
|
|
#[test]
|
|
fn test_jitter_offset_within_bounds() {
|
|
let (jx, jy) = hcie_brush_engine::jitter_offset(0.0, 10.0);
|
|
assert_eq!(jx, 0.0, "no jitter");
|
|
assert_eq!(jy, 0.0, "no jitter");
|
|
}
|
|
|
|
#[test]
|
|
fn test_bitmap_stamp_fallback_to_round() {
|
|
let tip = BrushTip {
|
|
style: BrushStyle::Bitmap,
|
|
size: 10.0,
|
|
bitmap_pixels: vec![],
|
|
bitmap_w: 0,
|
|
bitmap_h: 0,
|
|
..BrushTip::default()
|
|
};
|
|
let stamp = hcie_brush_engine::generate_brush_stamp(&tip);
|
|
assert!(!stamp.is_empty(), "empty bitmap should fallback to round");
|
|
}
|