use super::super::fixture::world;
use super::super::input;
use super::{Frames, converge_ws, deposit, drain, quick};
#[test]
fn the_fold_line_is_the_content_height_with_floor_and_cap() {
let mut world = quick(world());
let ws = world.ws.clone();
world.model.focus_agent(&ws, "c-1");
let frames = Frames::new();
drain(&world);
converge_ws(&mut world);
frames.settle(&mut world, 0.0);
let bare = frames.panel("composer").height();
deposit(&world, "user-001.md", "t0", "one");
converge_ws(&mut world);
frames.settle(&mut world, 1.0);
let one = frames.panel("composer").height();
deposit(&world, "user-002.md", "t1", "two");
converge_ws(&mut world);
frames.settle(&mut world, 2.0);
let two = frames.panel("composer").height();
assert!(one > bare + 4.0, "an item raises the line: {bare} → {one}");
assert!(two > one + 4.0, "and the next again: {one} → {two}");
for i in 3..=60 {
deposit(&world, &format!("user-{i:03}.md"), "t", "pile");
}
converge_ws(&mut world);
frames.settle(&mut world, 3.0);
let sixty = frames.panel("composer").height();
for i in 61..=80 {
deposit(&world, &format!("user-{i:03}.md"), "t", "pile");
}
converge_ws(&mut world);
frames.settle(&mut world, 4.0);
let eighty = frames.panel("composer").height();
assert!(
sixty > two,
"the line kept climbing to the cap: {two} → {sixty}"
);
assert!(
(eighty - sixty).abs() < 2.0,
"past the cap the line holds still: {sixty} → {eighty}"
);
let window = input().screen_rect.expect("the probe sizes the screen");
assert!(
sixty < window.height() / 2.0 + 60.0,
"the cap is half the pane: {sixty}"
);
}
#[test]
fn a_delivery_drain_snaps_the_line_down_to_its_floor() {
let mut world = quick(world());
let ws = world.ws.clone();
world.model.focus_agent(&ws, "c-1");
deposit(&world, "user-002.md", "t1", "two");
deposit(&world, "user-003.md", "t2", "three");
converge_ws(&mut world);
let frames = Frames::new();
frames.settle(&mut world, 0.0);
let full = frames.panel("composer").height();
drain(&world);
converge_ws(&mut world);
frames.run(&mut world, 5.0);
frames.run(&mut world, 5.0 + crate::composer::SNAP_SECS * 0.3);
let mid = frames.panel("composer").height();
frames.settle(&mut world, 6.0);
let bare = frames.panel("composer").height();
assert!(bare < full - 8.0, "the queue emptied: {full} → {bare}");
assert!(
mid > bare + 2.0,
"mid-ease the line is still descending: {mid} !> {bare}"
);
assert!(mid < full + 2.0, "and never above where it started: {mid}");
}