use gpui::{Pixels, px};
use ui::scroll::*;
const START: Pixels = px(0.0);
const END: Pixels = px(600.0);
#[test]
fn the_middle_of_a_pane_is_still() {
assert_eq!(drift_velocity(px(300.0), START, END), 0.0);
assert_eq!(drift_velocity(DRIFT_EDGE, START, END), 0.0);
assert_eq!(drift_velocity(END - DRIFT_EDGE, START, END), 0.0);
}
#[test]
fn each_edge_travels_the_way_it_is_reached() {
assert_eq!(drift_velocity(START, START, END), DRIFT_SPEED);
assert_eq!(drift_velocity(END, START, END), -DRIFT_SPEED);
}
#[test]
fn the_ramp_eases_with_proximity() {
let half = drift_velocity(DRIFT_EDGE / 2.0, START, END);
assert!((half - DRIFT_SPEED / 2.0).abs() < 1.0, "{half}");
let half = drift_velocity(END - DRIFT_EDGE / 2.0, START, END);
assert!((half + DRIFT_SPEED / 2.0).abs() < 1.0, "{half}");
}
#[test]
fn past_the_edge_holds_full_speed() {
assert_eq!(drift_velocity(px(-400.0), START, END), DRIFT_SPEED);
assert_eq!(drift_velocity(px(4000.0), START, END), -DRIFT_SPEED);
}
#[test]
fn a_pane_narrower_than_two_edges_still_has_a_middle() {
let (start, end) = (px(0.0), px(100.0));
assert_eq!(drift_velocity(px(50.0), start, end), 0.0);
assert_eq!(drift_velocity(px(0.0), start, end), DRIFT_SPEED);
assert_eq!(drift_velocity(px(100.0), start, end), -DRIFT_SPEED);
}
#[test]
fn nothing_to_drift_in_is_never_drifting() {
assert_eq!(drift_velocity(px(0.0), px(0.0), px(0.0)), 0.0);
assert_eq!(drift_velocity(px(10.0), px(600.0), px(0.0)), 0.0);
}