#![cfg(test)]
use approx::assert_abs_diff_eq;
#[test]
fn tempa_example() {
use crate::*;
let rate = FrameRate::from_fps(60.0);
let mut stepper = FrameStepper::new(rate);
let clip = TimeRange::new(Time::from_seconds(0.0), Time::from_seconds(10.0));
stepper.step(120);
assert_eq!(stepper.current(), FrameIndex::new(120));
assert_abs_diff_eq!(stepper.current_time().seconds(), 2.0, epsilon = 1e-12);
let frame = conversion::frame_from_time(Time::from_seconds(1.25), rate);
assert_eq!(frame, FrameIndex::new(75));
let time = conversion::time_from_frame(frame, rate);
assert_abs_diff_eq!(time.seconds(), 1.25, epsilon = 1e-12);
stepper.seek_time(Time::from_seconds(2.75));
assert_eq!(stepper.current(), FrameIndex::new(165));
assert_abs_diff_eq!(stepper.current_time().seconds(), 2.75, epsilon = 1e-12);
let u = clip.normalize_time(stepper.current_time());
assert_abs_diff_eq!(u, 0.275, epsilon = 1e-12);
let outro = TimeRange::new(Time::from_seconds(8.0), Time::from_seconds(10.0));
let outro_time = clip.remap_time(stepper.current_time(), &outro);
assert_abs_diff_eq!(outro_time.seconds(), 8.55, epsilon = 1e-12);
let window: TimeRange<f64> = (1.0..3.5).into();
assert_abs_diff_eq!(window.duration().seconds(), 2.5, epsilon = 1e-12);
let a = TimeRange::new(Time::from_seconds(1.0), Time::from_seconds(4.0));
let b = TimeRange::new(Time::from_seconds(3.5), Time::from_seconds(6.0));
let merged = a.union(&b);
assert_eq!(merged, TimeRange::new(Time::from_seconds(1.0), Time::from_seconds(6.0)));
stepper.step(-10_000);
assert_eq!(stepper.current(), FrameIndex::ZERO);
assert_abs_diff_eq!(stepper.current_time().seconds(), 0.0, epsilon = 1e-12);
}