aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2026-08-11 16:07:39 +0200
committerDaniel Schadt <kingdread@gmx.de>2026-08-11 16:07:39 +0200
commit58a69ea8688b4d1ec7c70caffaf30a608bccd4bc (patch)
tree24f02377a6cd7b3ada59194f53e29fd7f7f249ef
parentb1d4e3151667f6e1d7942435374aac8ab6b6469d (diff)
downloadhittekaart-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.rs97
-rw-r--r--test-assets/Synthetic_BRouter_1.gpx.gzbin0 -> 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
new file mode 100644
index 0000000..e380fc7
--- /dev/null
+++ b/test-assets/Synthetic_BRouter_1.gpx.gz
Binary files differ