Blur: improve tests

This commit is contained in:
Simon Gardling 2025-03-27 15:51:32 -04:00
parent d7284fcd37
commit 50640efb17
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D

View File

@ -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::<Vec<_>>();
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);
}
}
}