diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-08-11 16:07:39 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-08-11 16:07:39 +0200 |
| commit | 58a69ea8688b4d1ec7c70caffaf30a608bccd4bc (patch) | |
| tree | 24f02377a6cd7b3ada59194f53e29fd7f7f249ef | |
| parent | b1d4e3151667f6e1d7942435374aac8ab6b6469d (diff) | |
| download | hittekaart-58a69ea8688b4d1ec7c70caffaf30a608bccd4bc.tar.gz hittekaart-58a69ea8688b4d1ec7c70caffaf30a608bccd4bc.tar.bz2 hittekaart-58a69ea8688b4d1ec7c70caffaf30a608bccd4bc.zip | |
add integration tests for the Rust side of things
| -rw-r--r-- | hittekaart/tests/generate.rs | 97 | ||||
| -rw-r--r-- | test-assets/Synthetic_BRouter_1.gpx.gz | bin | 0 -> 697 bytes |
2 files changed, 97 insertions, 0 deletions
diff --git a/hittekaart/tests/generate.rs b/hittekaart/tests/generate.rs new file mode 100644 index 0000000..3c80a11 --- /dev/null +++ b/hittekaart/tests/generate.rs @@ -0,0 +1,97 @@ +use std::{ + collections::hash_map::RandomState, + env, + error::Error, + fs, + hash::{BuildHasher, Hasher}, + path::PathBuf, +}; + +use hittekaart::{ + gpx, + renderer::{self, heatmap}, + storage::{self, Storage}, +}; + +const ZOOM: u32 = 10; + +fn prepare() -> heatmap::HeatCounter { + let track = gpx::extract_from_file("../test-assets/Synthetic_BRouter_1.gpx.gz", gpx::Compression::Gzip).unwrap(); + renderer::prepare( + &heatmap::Renderer, + ZOOM, + &[track], + || Ok(()), + ).unwrap() +} + +#[test] +fn test_osmand() { + let heat = prepare(); + let mut store = storage::OsmAnd::open(":memory:").unwrap(); + store.prepare().unwrap(); + store.prepare_zoom(ZOOM).unwrap(); + renderer::colorize( + &heatmap::Renderer, + heat, + |tile| { + store.store(ZOOM, tile.x, tile.y, &tile.data) + }, + ).unwrap(); + store.finish().unwrap(); +} + +#[test] +fn test_mbtiles() { + let heat = prepare(); + let mut store = storage::MbTiles::open(":memory:").unwrap() + .with_name("new name".into()) + .with_description(Some("new description".into())); + store.prepare().unwrap(); + store.prepare_zoom(ZOOM).unwrap(); + renderer::colorize( + &heatmap::Renderer, + heat, + |tile| { + store.store(ZOOM, tile.x, tile.y, &tile.data) + }, + ).unwrap(); + store.finish().unwrap(); +} + +// Zero dependency random number generator +fn rand() -> u64 { + RandomState::new().build_hasher().finish() +} + +fn run_folder(base: PathBuf) -> Result<(), Box<dyn Error>> { + let heat = prepare(); + let mut store = storage::Folder::new(base); + store.prepare()?; + store.prepare_zoom(ZOOM)?; + renderer::colorize( + &heatmap::Renderer, + heat, + |tile| { + store.store(ZOOM, tile.x, tile.y, &tile.data) + }, + )?; + store.finish()?; + Ok(()) +} + +#[test] +fn test_folder() { + let mut tmp = env::temp_dir(); + tmp.push(&format!("hitte_test_{}", rand())); + + fs::create_dir(&tmp).unwrap(); + + let result = run_folder(tmp.clone()); + + fs::remove_dir_all(&tmp).unwrap(); + + if let Err(e) = result { + panic!("{}", e); + } +} diff --git a/test-assets/Synthetic_BRouter_1.gpx.gz b/test-assets/Synthetic_BRouter_1.gpx.gz Binary files differnew file mode 100644 index 0000000..e380fc7 --- /dev/null +++ b/test-assets/Synthetic_BRouter_1.gpx.gz |
