From 4ac0615ddb5afb5ba05361da3cd40d01b848acf9 Mon Sep 17 00:00:00 2001 From: Moritz Oberhauser Date: Fri, 8 Mar 2024 23:29:54 +0100 Subject: [PATCH] Streamline `test_date_(add/sub)_days` --- src/naive/date/tests.rs | 50 +++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/naive/date/tests.rs b/src/naive/date/tests.rs index 6d8c2998..396f6029 100644 --- a/src/naive/date/tests.rs +++ b/src/naive/date/tests.rs @@ -504,43 +504,45 @@ fn test_date_sub() { #[test] fn test_date_add_days() { - fn check((y1, m1, d1): (i32, u32, u32), rhs: Days, ymd: Option<(i32, u32, u32)>) { - let lhs = NaiveDate::from_ymd_opt(y1, m1, d1).unwrap(); - let sum = ymd.map(|(y, m, d)| NaiveDate::from_ymd_opt(y, m, d).unwrap()); - assert_eq!(lhs.checked_add_days(rhs), sum); + fn check(lhs: Option, days: Days, rhs: Option) { + assert_eq!(lhs.unwrap().checked_add_days(days), rhs); } + let ymd = NaiveDate::from_ymd_opt; - check((2014, 1, 1), Days::new(0), Some((2014, 1, 1))); + check(ymd(2014, 1, 1), Days::new(0), ymd(2014, 1, 1)); // always round towards zero - check((2014, 1, 1), Days::new(1), Some((2014, 1, 2))); - check((2014, 1, 1), Days::new(364), Some((2014, 12, 31))); - check((2014, 1, 1), Days::new(365 * 4 + 1), Some((2018, 1, 1))); - check((2014, 1, 1), Days::new(365 * 400 + 97), Some((2414, 1, 1))); + check(ymd(2014, 1, 1), Days::new(1), ymd(2014, 1, 2)); + check(ymd(2014, 1, 1), Days::new(364), ymd(2014, 12, 31)); + check(ymd(2014, 1, 1), Days::new(365 * 4 + 1), ymd(2018, 1, 1)); + check(ymd(2014, 1, 1), Days::new(365 * 400 + 97), ymd(2414, 1, 1)); - check((-7, 1, 1), Days::new(365 * 12 + 3), Some((5, 1, 1))); + check(ymd(-7, 1, 1), Days::new(365 * 12 + 3), ymd(5, 1, 1)); // overflow check - check((0, 1, 1), Days::new(MAX_DAYS_FROM_YEAR_0.try_into().unwrap()), Some((MAX_YEAR, 12, 31))); - check((0, 1, 1), Days::new(u64::try_from(MAX_DAYS_FROM_YEAR_0).unwrap() + 1), None); + check(ymd(0, 1, 1), Days::new(MAX_DAYS_FROM_YEAR_0.try_into().unwrap()), ymd(MAX_YEAR, 12, 31)); + check(ymd(0, 1, 1), Days::new(u64::try_from(MAX_DAYS_FROM_YEAR_0).unwrap() + 1), None); } #[test] fn test_date_sub_days() { - fn check((y1, m1, d1): (i32, u32, u32), (y2, m2, d2): (i32, u32, u32), diff: Days) { - let lhs = NaiveDate::from_ymd_opt(y1, m1, d1).unwrap(); - let rhs = NaiveDate::from_ymd_opt(y2, m2, d2).unwrap(); - assert_eq!(lhs - diff, rhs); + fn check(lhs: Option, days: Days, rhs: Option) { + assert_eq!(lhs.unwrap().checked_sub_days(days), rhs); } + let ymd = NaiveDate::from_ymd_opt; - check((2014, 1, 1), (2014, 1, 1), Days::new(0)); - check((2014, 1, 2), (2014, 1, 1), Days::new(1)); - check((2014, 12, 31), (2014, 1, 1), Days::new(364)); - check((2015, 1, 3), (2014, 1, 1), Days::new(365 + 2)); - check((2018, 1, 1), (2014, 1, 1), Days::new(365 * 4 + 1)); - check((2414, 1, 1), (2014, 1, 1), Days::new(365 * 400 + 97)); + check(ymd(2014, 1, 1), Days::new(0), ymd(2014, 1, 1)); + check(ymd(2014, 1, 2), Days::new(1), ymd(2014, 1, 1)); + check(ymd(2014, 12, 31), Days::new(364), ymd(2014, 1, 1)); + check(ymd(2015, 1, 3), Days::new(365 + 2), ymd(2014, 1, 1)); + check(ymd(2018, 1, 1), Days::new(365 * 4 + 1), ymd(2014, 1, 1)); + check(ymd(2414, 1, 1), Days::new(365 * 400 + 97), ymd(2014, 1, 1)); - check((MAX_YEAR, 12, 31), (0, 1, 1), Days::new(MAX_DAYS_FROM_YEAR_0.try_into().unwrap())); - check((0, 1, 1), (MIN_YEAR, 1, 1), Days::new((-MIN_DAYS_FROM_YEAR_0).try_into().unwrap())); + check(ymd(MAX_YEAR, 12, 31), Days::new(MAX_DAYS_FROM_YEAR_0.try_into().unwrap()), ymd(0, 1, 1)); + check( + ymd(0, 1, 1), + Days::new((-MIN_DAYS_FROM_YEAR_0).try_into().unwrap()), + ymd(MIN_YEAR, 1, 1), + ); } #[test]