use crate::tween::{Tween, TweenBuilder};
pub fn draw_on(path_length: f32) -> TweenBuilder<f32> {
Tween::new(path_length, 0.0)
}
pub fn draw_on_reverse(path_length: f32) -> TweenBuilder<f32> {
Tween::new(0.0, path_length)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::easing::Easing;
use crate::traits::Update;
#[test]
fn draw_on_starts_at_length() {
let tween = draw_on(100.0).duration(1.0).build();
assert!((tween.value() - 100.0).abs() < 1e-6);
}
#[test]
fn draw_on_ends_at_zero() {
let mut tween = draw_on(100.0).duration(1.0).build();
tween.update(1.0);
assert!((tween.value()).abs() < 1e-6);
}
#[test]
fn draw_on_reverse_starts_at_zero() {
let tween = draw_on_reverse(100.0).duration(1.0).build();
assert!((tween.value()).abs() < 1e-6);
}
#[test]
fn draw_on_reverse_ends_at_length() {
let mut tween = draw_on_reverse(100.0).duration(1.0).build();
tween.update(1.0);
assert!((tween.value() - 100.0).abs() < 1e-6);
}
#[test]
fn draw_on_with_easing() {
let mut tween = draw_on(200.0)
.duration(2.0)
.easing(Easing::EaseOutCubic)
.build();
tween.update(1.0); let val = tween.value();
assert!(val < 100.0, "Expected < 100, got {val}");
}
}