use super::*;
#[test]
fn pointer_position_is_the_clamped_lens_center() {
let width = 100.0;
assert_eq!(segment_lens_left(50.0, width, 3), 0.0);
assert_eq!(segment_lens_left(150.0, width, 3), 100.0);
assert_eq!(segment_lens_left(250.0, width, 3), 200.0);
assert_eq!(segment_lens_left(-50.0, width, 3), 0.0);
assert_eq!(segment_lens_left(400.0, width, 3), 200.0);
}
#[test]
fn segmented_contact_matches_native_presentation_bounds() {
for (progress, width, height) in [(0.0, 96.0, 28.0), (0.5, 108.0, 36.0), (1.0, 120.0, 44.0)] {
let size = segmented_lens_base_size(100.0, progress);
assert_eq!(size.width, width);
assert_eq!(size.height, height);
}
}
#[test]
fn a_scope_records_what_each_segment_announces() {
let drawn = Rc::new(std::cell::Cell::new(0u32));
let counted = Rc::clone(&drawn);
let segments = collect_segments(|scope| {
scope.segment("Sending");
scope.segment_content("Received", move |selected| {
counted.set(counted.get() + u32::from(selected));
});
});
assert_eq!(segments.len(), 2);
assert_eq!(segments[0].description, "Sending");
assert_eq!(segments[1].description, "Received");
assert_eq!(drawn.get(), 0);
(segments[1].content)(true);
assert_eq!(drawn.get(), 1);
}
#[test]
fn a_control_with_no_segments_declares_none() {
assert!(collect_segments(|_| {}).is_empty());
}