use super::super::{Bar, LINGER};
#[test]
fn the_linger_runs_from_when_the_pointer_left() {
assert!((LINGER - 0.75).abs() < f32::EPSILON, "the ruling's number");
let linger = f64::from(LINGER);
let mut bar = Bar::default();
assert!(!bar.open(0.0, linger), "shut at rest");
assert_eq!(bar.heard(0.0, false, linger), None);
assert_eq!(bar.heard(1.0, true, linger), None);
assert!(bar.open(1.0, linger));
assert_eq!(
bar.heard(1.5, false, linger),
Some(0.25),
"a quarter second left"
);
assert!(bar.open(1.5, linger), "lingering");
assert!(!bar.open(1.0 + linger, linger));
assert_eq!(bar.heard(1.0 + linger, false, linger), None);
assert_eq!(bar.left_at, None, "forgotten once lapsed");
bar.left_at = Some(1.0);
assert!(bar.open(1.0 + linger, 2.0), "a longer linger");
bar.pinned = true;
assert!(bar.open(9.0, linger), "pinned");
bar.left_at = Some(9.0);
assert_eq!(
bar.heard(9.5, false, linger),
None,
"a pinned bar owes no repaint"
);
}