diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-17 21:44:48 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-17 21:44:48 +0200 |
commit | 566e784b52ca10008dd5e07d33e0f18851cfb1ec (patch) | |
tree | 25a7319f496acc9b82a7c23c9a4e11312002d5cd /lib/warden-core/src/google/parser | |
parent | 82c617ba2b993f7b81c8e8ec665cd30cf1a83e0f (diff) | |
download | warden-566e784b52ca10008dd5e07d33e0f18851cfb1ec.tar.bz2 warden-566e784b52ca10008dd5e07d33e0f18851cfb1ec.zip |
test(core): rule helpers
Diffstat (limited to 'lib/warden-core/src/google/parser')
-rw-r--r-- | lib/warden-core/src/google/parser/dt.rs | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/warden-core/src/google/parser/dt.rs b/lib/warden-core/src/google/parser/dt.rs index 0e57833..7e61c1f 100644 --- a/lib/warden-core/src/google/parser/dt.rs +++ b/lib/warden-core/src/google/parser/dt.rs @@ -103,6 +103,97 @@ mod date { ) } } + + #[cfg(test)] + mod tests { + use super::*; + use time::{Month, OffsetDateTime}; + + use time::Date as TimeDate; + + #[test] + fn converts_dates() { + let d = TimeDate::from_calendar_date(2023, Month::August, 17).unwrap(); + let date: Date = d.into(); + + let time_date = TimeDate::try_from(date); + + assert!(time_date.is_ok()); + } + + #[test] + fn converts_regular_date_no_time() { + let d = TimeDate::from_calendar_date(2023, Month::August, 17).unwrap(); + let date: Date = d.into(); + + assert_eq!(date.year, 2023); + assert_eq!(date.month, 8); + assert_eq!(date.day, 17); + } + + #[test] + fn converts_leap_year_date() { + let d = TimeDate::from_calendar_date(2020, Month::February, 29).unwrap(); + let date: Date = d.into(); + + assert_eq!(date.year, 2020); + assert_eq!(date.month, 2); + assert_eq!(date.day, 29); + } + + #[test] + fn converts_minimum_date() { + let d = TimeDate::MIN; // Year -9999-01-01 + let date: Date = d.into(); + + assert_eq!(date.year, -9999); + assert_eq!(date.month, 1); + assert_eq!(date.day, 1); + } + + #[test] + fn converts_maximum_date() { + let d = TimeDate::MAX; // Year 9999-12-31 + let date: Date = d.into(); + + assert_eq!(date.year, 9999); + assert_eq!(date.month, 12); + assert_eq!(date.day, 31); + } + + #[test] + fn converts_regular_date() { + let dt = OffsetDateTime::from_unix_timestamp(1_600_000_000).unwrap(); // 2020-09-13 UTC + let date: Date = dt.into(); + + assert_eq!(date.year, 2020); + assert_eq!(date.month, 9); + assert_eq!(date.day, 13); + } + + #[test] + fn converts_leap_year_feb_29() { + let dt = OffsetDateTime::new_utc( + time::Date::from_calendar_date(2020, Month::February, 29).unwrap(), + time::Time::from_hms(0, 0, 0).unwrap(), + ); + let date: Date = dt.into(); + + assert_eq!(date.year, 2020); + assert_eq!(date.month, 2); + assert_eq!(date.day, 29); + } + + #[test] + fn converts_first_day_of_epoch() { + let dt = OffsetDateTime::UNIX_EPOCH; // 1970-01-01 + let date: Date = dt.into(); + + assert_eq!(date.year, 1970); + assert_eq!(date.month, 1); + assert_eq!(date.day, 1); + } + } } #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] |