Test retained spawn-out animation frames
This commit is contained in:
parent
cf61c080b6
commit
501c508839
1 changed files with 51 additions and 0 deletions
|
|
@ -642,6 +642,27 @@ fn cubic_bezier_point(x1: f32, y1: f32, x2: f32, y2: f32, t: f32) -> CurvePoint
|
|||
mod tests {
|
||||
use super::*;
|
||||
|
||||
use crate::cmm::cmm_manager::ColorManager;
|
||||
|
||||
fn retained_for_tests() -> Rc<RetainedToplevel> {
|
||||
let color_manager = ColorManager::new();
|
||||
Rc::new(RetainedToplevel {
|
||||
offset: (0, 0),
|
||||
surface: RetainedSurface {
|
||||
offset: (0, 0),
|
||||
size: (100, 100),
|
||||
content: RetainedContent::Color {
|
||||
color: Color::SOLID_BLACK,
|
||||
alpha: None,
|
||||
color_description: color_manager.srgb_gamma22().clone(),
|
||||
render_intent: RenderIntent::Perceptual,
|
||||
},
|
||||
below: vec![],
|
||||
above: vec![],
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn linear_rect_interpolation_is_symmetric() {
|
||||
let a = Rect::new_sized_saturating(0, 0, 100, 100);
|
||||
|
|
@ -669,6 +690,36 @@ mod tests {
|
|||
assert!(AnimationCurve::from_cubic_bezier(0.0, f32::NAN, 0.58, 1.0).is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spawn_out_frames_shrink_linearly_and_expire() {
|
||||
let state = AnimationState::default();
|
||||
let retained = retained_for_tests();
|
||||
let from = Rect::new_sized_saturating(10, 20, 100, 80);
|
||||
let to = spawn_in_start_rect(from);
|
||||
assert!(state.set_spawn_out(
|
||||
from,
|
||||
2,
|
||||
retained.clone(),
|
||||
true,
|
||||
RetainedExitLayer::Floating,
|
||||
0,
|
||||
160
|
||||
));
|
||||
|
||||
let start = state.exit_frames(0);
|
||||
assert_eq!(start.len(), 1);
|
||||
assert_eq!(start[0].rect, from);
|
||||
assert_eq!(start[0].source_body_size, (96, 76));
|
||||
assert!(start[0].active);
|
||||
assert_eq!(start[0].layer, RetainedExitLayer::Floating);
|
||||
assert!(Rc::ptr_eq(&start[0].retained, &retained));
|
||||
|
||||
let middle = state.exit_frames(80_000_000);
|
||||
assert_eq!(middle.len(), 1);
|
||||
assert_eq!(middle[0].rect, lerp_rect(from, to, 0.5));
|
||||
assert!(state.exit_frames(160_000_000).is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unchanged_target_does_not_restart() {
|
||||
let state = AnimationState::default();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue