#![cfg(feature = "leap")]
#![allow(clippy::unwrap_used, clippy::expect_used)]
use timeglyph::leap;
#[test]
fn gps_epoch_and_leap_offset() {
assert!(leap::from_gps_seconds(0.0)
.utc_rfc3339
.starts_with("1980-01-06T00:00:00"));
let r = leap::from_gps_seconds(1_261_872_018.0);
assert!(
r.utc_rfc3339.starts_with("2020-01-01T00:00:00"),
"GPS 1261872018 = {}, expected 2020-01-01T00:00:00",
r.utc_rfc3339
);
}
#[test]
fn tai64_label_to_utc() {
let r = leap::from_tai64(4_611_686_020_005_224_741).unwrap();
assert!(
r.utc_rfc3339.starts_with("2020-01-01T00:00:00"),
"TAI64 = {}, expected 2020-01-01T00:00:00",
r.utc_rfc3339
);
}
#[test]
fn ntp_seconds_to_utc() {
assert!(leap::from_ntp_seconds(2_208_988_800)
.unwrap()
.utc_rfc3339
.starts_with("1970-01-01T00:00:00"));
assert!(leap::from_ntp_seconds(3_786_825_600)
.unwrap()
.utc_rfc3339
.starts_with("2020-01-01T00:00:00"));
}
#[test]
fn gps_reading_states_its_assumptions() {
let r = leap::from_gps_seconds(0.0);
assert_eq!(r.scale, "GPS");
assert!(!r.citation.is_empty());
assert!(!r.assumptions.is_empty());
}
#[test]
fn leap_error_paths() {
assert!(leap::decode("tai64", -1).unwrap().is_err());
assert!(leap::decode("ntp", -1).unwrap().is_err());
assert!(leap::from_tai64(u64::MAX).is_err());
assert!(leap::from_ntp_seconds(u64::MAX).is_err());
assert!(leap::from_ntp_seconds(400_000_000_000).is_err());
assert!(leap::decode("filetime", 0).is_none());
}