aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-11-29 12:28:13 +0100
committerDaniel Schadt <kingdread@gmx.de>2025-11-29 12:28:13 +0100
commita7c9cf08061d695f73a7e8bc44050d289030d8af (patch)
tree2f49ecfb32cbe71bae65ae1efdbca69a6f123bae
parent0f55c686ef050abdb57fccd196d7208858ad34c8 (diff)
downloadhittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.tar.gz
hittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.tar.bz2
hittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.zip
more tests for heatmap renderer
-rw-r--r--hittekaart/src/renderer/mod.rs67
1 files changed, 50 insertions, 17 deletions
diff --git a/hittekaart/src/renderer/mod.rs b/hittekaart/src/renderer/mod.rs
index 696c1e5..f9236f2 100644
--- a/hittekaart/src/renderer/mod.rs
+++ b/hittekaart/src/renderer/mod.rs
@@ -99,42 +99,75 @@ pub fn colorize<R: Renderer, F: FnMut(RenderedTile) -> Result<()>>(
#[cfg(test)]
mod test {
- use rstest::rstest;
use super::*;
+ use rstest::rstest;
+
+ fn tracks() -> Vec<Vec<Coordinates>> {
+ vec![
+ vec![Coordinates {
+ latitude: 52.520008,
+ longitude: 13.404954,
+ }],
+ vec![Coordinates {
+ latitude: 52.520008,
+ longitude: 13.404954,
+ }],
+ vec![Coordinates {
+ latitude: 52.520008,
+ longitude: 13.404954,
+ }],
+ ]
+ }
#[rstest]
- fn test_heatmap_prepare() {
- let tracks = &[
- vec![Coordinates { latitude: 52.520008, longitude: 13.404954 }],
- vec![Coordinates { latitude: 52.520008, longitude: 13.404954 }],
- vec![Coordinates { latitude: 52.520008, longitude: 13.404954 }],
- ];
- let mut prep = prepare(&heatmap::Renderer, 0, &tracks[..1], || Ok(())).unwrap();
+ fn test_heatmap_prepare_zoom_0() {
+ let ts = tracks();
+ let mut prep = prepare(&heatmap::Renderer, 0, &ts[..1], || Ok(())).unwrap();
assert_eq!(prep.tile_count(), 1);
assert_eq!(prep.tile_mut(0, 0).get_pixel(0, 0).0[0], 0);
assert_eq!(prep.tile_mut(0, 0).get_pixel(255, 255).0[0], 0);
- let ones: &[(u32, u32)] = &[
- (137, 82),
- (136, 83),
- (137, 83),
- (138, 83),
- (137, 84),
- ];
+ let ones: &[(u32, u32)] = &[(137, 82), (136, 83), (137, 83), (138, 83), (137, 84)];
for (x, y) in ones {
assert_eq!(prep.tile_mut(0, 0).get_pixel(*x, *y).0[0], 1);
}
- let mut prep = prepare(&heatmap::Renderer, 0, &tracks[..2], || Ok(())).unwrap();
+ let mut prep = prepare(&heatmap::Renderer, 0, &ts[..2], || Ok(())).unwrap();
for (x, y) in ones {
assert_eq!(prep.tile_mut(0, 0).get_pixel(*x, *y).0[0], 2);
}
- let mut prep = prepare(&heatmap::Renderer, 0, &tracks[..3], || Ok(())).unwrap();
+ let mut prep = prepare(&heatmap::Renderer, 0, &ts[..3], || Ok(())).unwrap();
for (x, y) in ones {
assert_eq!(prep.tile_mut(0, 0).get_pixel(*x, *y).0[0], 3);
}
}
+
+ #[rstest]
+ fn test_heatmap_prepare_zoom_1() {
+ let ts = tracks();
+ let mut prep = prepare(&heatmap::Renderer, 1, &ts[..1], || Ok(())).unwrap();
+ for (tx, ty) in [(0, 0), (0, 1), (1, 1)] {
+ assert!(prep.tile_mut(tx, ty).pixels().all(|px| px.0[0] == 0));
+ }
+ let ones: &[(u32, u32)] = &[(19, 166), (18, 167), (19, 167), (20, 167), (19, 168)];
+ for (x, y) in ones {
+ assert_eq!(prep.tile_mut(1, 0).get_pixel(*x, *y).0[0], 1);
+ }
+ }
+
+ #[rstest]
+ fn test_heatmap_prepare_zoom_2() {
+ let ts = tracks();
+ let mut prep = prepare(&heatmap::Renderer, 2, &ts[..1], || Ok(())).unwrap();
+ for (tx, ty) in [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1)] {
+ assert!(prep.tile_mut(tx, ty).pixels().all(|px| px.0[0] == 0));
+ }
+ let ones: &[(u32, u32)] = &[(38, 78), (37, 79), (38, 79), (39, 79), (38, 80)];
+ for (x, y) in ones {
+ assert_eq!(prep.tile_mut(2, 1).get_pixel(*x, *y).0[0], 1);
+ }
+ }
}