From 50640efb17e5d165897ce2b980bc58d2e077ef90 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Thu, 27 Mar 2025 15:51:32 -0400 Subject: [PATCH] Blur: improve tests --- src/blur.rs | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 3 deletions(-) diff --git a/src/blur.rs b/src/blur.rs index 81f3988..cfa1351 100644 --- a/src/blur.rs +++ b/src/blur.rs @@ -277,7 +277,7 @@ mod tests { 0.494_753_96, ]; for (v1, v2) in dst.iter().zip(sol) { - assert!((v1 - v2).abs() < 1e-6); + assert!((v1 - v2).abs() < 1e-6, "box_blur_h failure"); } blur.box_blur_v(&src, &mut dst, width, height, 1, 1.0); @@ -348,7 +348,7 @@ mod tests { 0.672_591_45, ]; for (v1, v2) in dst.iter().zip(sol) { - assert!((v1 - v2).abs() < 1e-6); + assert!((v1 - v2).abs() < 1e-6, "box_blur_v failure"); } blur.box_blur(&mut src, &mut dst, width, height, 1, 1.0); @@ -419,7 +419,7 @@ mod tests { 0.538_112_16, ]; for (v1, v2) in src.iter().zip(sol) { - assert!((v1 - v2).abs() < 1e-6); + assert!((v1 - v2).abs() < 1e-6, "box_blur failure"); } } @@ -434,4 +434,128 @@ mod tests { let boxes = Blur::boxes_for_gaussian::<3>(2.5); assert_eq!(boxes, [2, 2, 2]); } + + #[test] + fn total_blur_test() { + let height = 10; + let width = 10; + let mut src = (1..=(height * width)) + .map(|i| (i as f32).recip()) + .collect::>(); + let mut blur = Blur::new(width); + + blur.box_blur( + &mut src, + &mut vec![0.0; width * height], + width, + height, + 1, + 0.1, + ); + let sol = vec![ + 0.020623347, + 0.031088883, + 0.03575954, + 0.04622508, + 0.050895732, + 0.06136127, + 0.066031925, + 0.06618575, + 0.055720214, + 0.051049553, + 0.038047146, + 0.05850169, + 0.067484796, + 0.087939344, + 0.09692245, + 0.11737699, + 0.1263601, + 0.12663625, + 0.1061817, + 0.097198606, + 0.040142592, + 0.06103797, + 0.07035155, + 0.091246925, + 0.1005605, + 0.12145588, + 0.13076945, + 0.13107346, + 0.11017809, + 0.100864515, + 0.057566393, + 0.088450775, + 0.102076806, + 0.1329612, + 0.14658722, + 0.1774716, + 0.19109762, + 0.19152397, + 0.16063958, + 0.14701356, + 0.05966184, + 0.09098706, + 0.10494356, + 0.13626878, + 0.15022527, + 0.18155049, + 0.19550698, + 0.19596118, + 0.16463596, + 0.15067947, + 0.077085644, + 0.118399866, + 0.13666882, + 0.17798306, + 0.19625197, + 0.2375662, + 0.25583515, + 0.2564117, + 0.21509746, + 0.19682851, + 0.0791811, + 0.12093615, + 0.13953556, + 0.18129064, + 0.19989002, + 0.24164508, + 0.26024452, + 0.2608489, + 0.21909383, + 0.20049442, + 0.07922324, + 0.12098102, + 0.13958256, + 0.18134035, + 0.19994187, + 0.24169965, + 0.2603012, + 0.26090586, + 0.21914804, + 0.20054653, + 0.06179944, + 0.09356822, + 0.1078573, + 0.13962609, + 0.15391515, + 0.18568392, + 0.19997302, + 0.20045534, + 0.16868654, + 0.15439747, + 0.059703995, + 0.09103194, + 0.10499055, + 0.1363185, + 0.15027711, + 0.18160504, + 0.19556366, + 0.19601813, + 0.16469017, + 0.15073158, + ]; + for (v1, v2) in src.iter().zip(sol) { + assert!((v1 - v2).abs() < 1e-6, "run failure {} vs {}", v1, v2); + } + } }