common: Use the correct magic number in Fixed15_49::pi_div_two().
[gps-watch.git] / test / gps_test.rs
index 1cff088019cb99a020477a8f0e2cd045d3dd7cb7..bba47fe9d4751427566cf3e40f0fa7fa6b8ece5c 100644 (file)
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+use common::fixed15_49;
 use common::gps;
 
+type Fixed = fixed15_49::Fixed15_49;
+
 // Verifies that a single RMC message with position, date and time
 // does not suffice for getting a valid TimeAndPos result.
 #[test]
@@ -82,8 +85,31 @@ $GPGGA,110338.000,1234.5678,N,12345.6789,E,\
 
     assert_eq!(true, has_fix);
     assert_eq!(1477998218, tap.unix_time);
-    assert_eq!(7545678, tap.latitude);
-    assert_eq!(74256789, tap.longitude);
+    assert_eq!(7545678, tap.latitude_deg);
+    assert_eq!(74256789, tap.longitude_deg);
     assert_eq!(0.21949487565883447, tap.latitude_rad.to_f32());
     assert_eq!(2.160042433347846, tap.longitude_rad.to_f32());
 }
+
+#[test]
+fn distance_cm0() {
+    let tap0 = gps::TimeAndPos {
+        system_time: 0,
+        unix_time: 0,
+        latitude_deg: 0,
+        longitude_deg: 0,
+        latitude_rad: Fixed::from_f32(49.02541333).to_radians(),
+        longitude_rad: Fixed::from_f32(8.79440167).to_radians(),
+    };
+
+    let tap1 = gps::TimeAndPos {
+        system_time: 1,
+        unix_time: 1,
+        latitude_deg: 0,
+        longitude_deg: 0,
+        latitude_rad: Fixed::from_f32(49.02541000).to_radians(),
+        longitude_rad: Fixed::from_f32(8.79443667).to_radians(),
+    };
+
+    assert_eq!(251, tap1.distance_cm(&tap0));
+}