ringbuffer_iteration/
test_macros.rs

1#[macro_export]
2macro_rules! assert_almost_eq {
3    ($left:expr, $right:expr, $epsilon:expr) => ({
4        match(&$left, &$right, &$epsilon) {
5            (left_val, right_val, epsilon_val) => {
6                let diff = *left_val - *right_val;
7                if (diff < 0_f32) && (-diff > *epsilon_val) {
8                    panic!("assertion failed: `(abs(left - right) < epsilon)\n`\
9                            left: {:?},\n\
10                            right: {:?},\n\
11                            epsilon: {:?},\n\
12                            actual diff: {:?}",
13                            left_val, right_val, epsilon_val, diff)
14                } else if (diff > *epsilon_val) {
15                    panic!("assertion failed: `(abs(left - right) < epsilon)`\n\
16                            left: {:?},\n\
17                            right: {:?},\n\
18                            epsilon: {:?},\n\
19                            actual diff: {:?}",
20                            left_val, right_val, epsilon_val, diff)
21                }
22
23            }
24        }
25    });
26}
27