tests.rs
raw
use guiduck_scene::geom::Size;
use super::*;
#[test]
fn progress_clamps_rather_than_overflowing() {
let mut bar = Progress::new();
bar.set_value(1.4);
assert_eq!(
bar.get_value(),
1.0,
"past the end is not drawn past the end"
);
bar.set_value(-0.2);
assert_eq!(bar.get_value(), 0.0);
}
#[test]
fn progress_is_silent_when_set_to_what_it_already_is() {
let mut bar = Progress::new();
bar.set_value(0.5);
let _ = bar.take_dirt();
bar.set_value(0.5);
assert!(
bar.take_dirt().is_clean(),
"a binding rewriting the same fraction costs no repaint"
);
}
#[test]
fn progress_announces_a_percentage() {
let mut bar = Progress::new();
bar.set_value(0.25);
let mut node = accesskit::Node::new(accesskit::Role::ProgressIndicator);
bar.accessibility(&mut node);
assert_eq!(node.numeric_value(), Some(25.0));
}
/// A rule takes its length from the layout and its thickness from the theme,
/// so the same widget is a horizontal line in a column and a vertical one in
/// a row.
#[test]
fn a_separator_is_led_by_its_layout() {
let mut rule = Separator::new();
let mut text = crate::text::TextContext::hermetic([]);
let across = rule.measure(
&mut text,
taffy::Size {
width: Some(120.0),
height: None,
},
taffy::Size {
width: AvailableSpace::MaxContent,
height: AvailableSpace::MaxContent,
},
);
assert_eq!(across.width, 120.0, "the layout gave the length");
assert!(across.height > 0.0, "the theme gave the thickness");
let mut paint = Fragment::default();
rule.paint(&mut paint, Size::new(120.0, across.height as f64));
assert!(!paint.items.is_empty(), "and it draws something");
}