Test riemann::trace_iter

This commit is contained in:
numzero 2024-09-14 14:21:24 +03:00
parent 8ab9ab71e8
commit d90f473bd6

View File

@ -169,11 +169,12 @@ pub mod samples {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use approx::assert_abs_diff_eq;
use super::*;
use glam::{Mat2, mat2, vec2}; use glam::{Mat2, mat2, vec2};
use rand::{Rng, SeedableRng}; use rand::{Rng, SeedableRng};
use super::{Decomp2, Metric, samples};
#[test] #[test]
fn uniform_scaled_metric() { fn uniform_scaled_metric() {
let mut rng = rand_pcg::Pcg64Mcg::seed_from_u64(17); let mut rng = rand_pcg::Pcg64Mcg::seed_from_u64(17);
@ -192,4 +193,16 @@ mod tests {
assert_eq!(metric.globalize(rng.gen(), vec2(0., 1.)), vec2(0., 1. / 4.)); assert_eq!(metric.globalize(rng.gen(), vec2(0., 1.)), vec2(0., 1. / 4.));
assert_eq!(metric.globalize(rng.gen(), vec2(1., 1.)), vec2(1. / 3., 1. / 4.)); assert_eq!(metric.globalize(rng.gen(), vec2(1., 1.)), vec2(1. / 3., 1. / 4.));
} }
#[test]
fn test_trace_iter() {
let metric = samples::ScaledMetric { scale: vec2(2., 4.) };
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(1., 0.), 1.).nth(7).unwrap(), vec2(7., 5.));
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(2., 0.), 1.).nth(7).unwrap(), vec2(7., 5.));
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(1., 0.), 0.5).nth(7).unwrap(), vec2(5., 5.));
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(0., 1.), 1.).nth(9).unwrap(), vec2(3., 7.5));
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(0., 4.), 1.).nth(9).unwrap(), vec2(3., 7.5));
assert_eq!(trace_iter(&metric, vec2(3., 5.), vec2(0., 1.), 0.5).nth(9).unwrap(), vec2(3., 6.25));
assert_abs_diff_eq!(trace_iter(&metric, vec2(3., 5.), vec2(0.5, 0.25), std::f32::consts::SQRT_2).nth(7).unwrap(), vec2(7., 7.), epsilon=1e-5);
}
} }