1declare_tween!(
2 pub struct Linear;
4
5 pub fn linear;
7
8 pub fn linear_at;
10
11 pub fn tween<Value: crate::TweenValue>(&mut self, value_delta: Value, percent: f32) -> Value {
12 value_delta.scale(percent)
13 }
14);
15
16#[cfg(test)]
17mod tests {
18 use super::Linear;
19 use approx::assert_ulps_eq;
20
21 #[test]
22 fn linear_over_frames() {
23 let mut value;
24 let mut tweener = crate::Tweener::new(0.0, 100.0, 10, Linear);
25
26 for val in 1..=10 {
27 value = tweener.move_to(val);
28 assert_ulps_eq!(value, val as f32 * 10.0);
29 }
30 }
31
32 #[test]
33 fn linear_over_frames_rev() {
34 let mut value;
35 let mut tweener = crate::Tweener::new(100.0, 0.0, 10, Linear);
36
37 for val in 1..=10 {
38 value = tweener.move_to(val);
39 assert_ulps_eq!(value, 100.0 - val as f32 * 10.0);
40 }
41 }
42}