diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2025-11-29 12:28:13 +0100 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2025-11-29 12:28:13 +0100 |
| commit | a7c9cf08061d695f73a7e8bc44050d289030d8af (patch) | |
| tree | 2f49ecfb32cbe71bae65ae1efdbca69a6f123bae | |
| parent | 0f55c686ef050abdb57fccd196d7208858ad34c8 (diff) | |
| download | hittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.tar.gz hittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.tar.bz2 hittekaart-a7c9cf08061d695f73a7e8bc44050d289030d8af.zip | |
more tests for heatmap renderer
| -rw-r--r-- | hittekaart/src/renderer/mod.rs | 67 |
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); + } + } } |
