common: Make Logger calculate and publish pace.
[gps-watch.git] / test / logger_test.rs
index 784c04955cc567938e852abfbd7d3b8e8b0bb43c..18b0fbb9921854a4ce876a9f5da0abe4631de32e 100644 (file)
@@ -572,3 +572,42 @@ fn remove_recording1() {
 
     assert_eq!(fake_storage.expected, fake_storage.actual);
 }
+
+#[test]
+fn pace0() {
+    let mut fake_storage = FakeStorage::new();
+
+    let mut logger = Logger::new(&mut fake_storage);
+    logger.init();
+
+    let lat_lon = [
+        (49.372117, 8.820219),
+        (49.372229, 8.821636),
+    ];
+
+    let template = gps::TimeAndPos {
+        system_time: 0,
+        unix_time: 0,
+        latitude_deg: 0,
+        longitude_deg: 0,
+        latitude_rad: Fixed::from_f32(0.0),
+        longitude_rad: Fixed::from_f32(0.0),
+    };
+
+    let mut taps = [template; 11];
+
+    for i in 0..taps.len() {
+        taps[i].system_time = (i as u32) * 100;
+        taps[i].unix_time = i as u32;
+        taps[i].latitude_rad = Fixed::from_f32(lat_lon[i % lat_lon.len()].0).to_radians();
+        taps[i].longitude_rad = Fixed::from_f32(lat_lon[i % lat_lon.len()].1).to_radians();
+    }
+
+    logger.start_recording(&taps[0]);
+
+    for i in 0..(taps.len() - 1) {
+        logger.log(&taps[i], &taps[i + 1]);
+    }
+
+    assert_eq!(logger.pace_s, 10);
+}