Skip to content

Commit

Permalink
Make TimeDelta::seconds infallible
Browse files Browse the repository at this point in the history
  • Loading branch information
pitdicker committed Mar 14, 2024
1 parent 64a0b98 commit e9534ca
Show file tree
Hide file tree
Showing 10 changed files with 135 additions and 204 deletions.
12 changes: 6 additions & 6 deletions src/datetime/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -569,12 +569,12 @@ fn test_datetime_offset() {
let dt = Utc.with_ymd_and_hms(2014, 5, 6, 7, 8, 9).unwrap();
assert_eq!(dt, edt.with_ymd_and_hms(2014, 5, 6, 3, 8, 9).unwrap());
assert_eq!(
dt + TimeDelta::seconds(3600 + 60 + 1).unwrap(),
dt + TimeDelta::seconds(3600 + 60 + 1),
Utc.with_ymd_and_hms(2014, 5, 6, 8, 9, 10).unwrap()
);
assert_eq!(
dt.signed_duration_since(edt.with_ymd_and_hms(2014, 5, 6, 10, 11, 12).unwrap()),
TimeDelta::seconds(-7 * 3600 - 3 * 60 - 3).unwrap()
TimeDelta::seconds(-7 * 3600 - 3 * 60 - 3)
);

assert_eq!(*Utc.with_ymd_and_hms(2014, 5, 6, 7, 8, 9).unwrap().offset(), Utc);
Expand Down Expand Up @@ -1389,20 +1389,20 @@ fn test_datetime_add_assign() {
let datetime = naivedatetime.and_utc();
let mut datetime_add = datetime;

datetime_add += TimeDelta::seconds(60).unwrap();
assert_eq!(datetime_add, datetime + TimeDelta::seconds(60).unwrap());
datetime_add += TimeDelta::seconds(60);
assert_eq!(datetime_add, datetime + TimeDelta::seconds(60));

let timezone = FixedOffset::east(60 * 60).unwrap();
let datetime = datetime.with_timezone(&timezone);
let datetime_add = datetime_add.with_timezone(&timezone);

assert_eq!(datetime_add, datetime + TimeDelta::seconds(60).unwrap());
assert_eq!(datetime_add, datetime + TimeDelta::seconds(60));

let timezone = FixedOffset::west(2 * 60 * 60).unwrap();
let datetime = datetime.with_timezone(&timezone);
let datetime_add = datetime_add.with_timezone(&timezone);

assert_eq!(datetime_add, datetime + TimeDelta::seconds(60).unwrap());
assert_eq!(datetime_add, datetime + TimeDelta::seconds(60));
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion src/format/parsed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ impl Parsed {
59 => {}
// `datetime` is known to be off by one second.
0 => {
datetime -= TimeDelta::seconds(1).unwrap();
datetime -= TimeDelta::seconds(1);
}
// otherwise it is impossible.
_ => return Err(IMPOSSIBLE),
Expand Down
8 changes: 4 additions & 4 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,11 @@
//! // arithmetic operations
//! let dt1 = Utc.with_ymd_and_hms(2014, 11, 14, 8, 9, 10).unwrap();
//! let dt2 = Utc.with_ymd_and_hms(2014, 11, 14, 10, 9, 8).unwrap();
//! assert_eq!(dt1.signed_duration_since(dt2), TimeDelta::seconds(-2 * 3600 + 2).unwrap());
//! assert_eq!(dt2.signed_duration_since(dt1), TimeDelta::seconds(2 * 3600 - 2).unwrap());
//! assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() + TimeDelta::seconds(1_000_000_000).unwrap(),
//! assert_eq!(dt1.signed_duration_since(dt2), TimeDelta::seconds(-2 * 3600 + 2));
//! assert_eq!(dt2.signed_duration_since(dt1), TimeDelta::seconds(2 * 3600 - 2));
//! assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() + TimeDelta::seconds(1_000_000_000),
//! Utc.with_ymd_and_hms(2001, 9, 9, 1, 46, 40).unwrap());
//! assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() - TimeDelta::seconds(1_000_000_000).unwrap(),
//! assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() - TimeDelta::seconds(1_000_000_000),
//! Utc.with_ymd_and_hms(1938, 4, 24, 22, 13, 20).unwrap());
//! ```
//!
Expand Down
8 changes: 4 additions & 4 deletions src/naive/date/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1699,8 +1699,8 @@ impl Datelike for NaiveDate {
/// let from_ymd = |y, m, d| NaiveDate::from_ymd(y, m, d).unwrap();
///
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::zero(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::seconds(86399).unwrap(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::seconds(-86399).unwrap(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::seconds(86399), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::seconds(-86399), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::days(1), from_ymd(2014, 1, 2));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::days(-1), from_ymd(2013, 12, 31));
/// assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::days(364), from_ymd(2014, 12, 31));
Expand Down Expand Up @@ -1842,8 +1842,8 @@ impl Sub<Days> for NaiveDate {
/// let from_ymd = |y, m, d| NaiveDate::from_ymd(y, m, d).unwrap();
///
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::zero(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::seconds(86399).unwrap(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::seconds(-86399).unwrap(), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::seconds(86399), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::seconds(-86399), from_ymd(2014, 1, 1));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::days(1), from_ymd(2013, 12, 31));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::days(-1), from_ymd(2014, 1, 2));
/// assert_eq!(from_ymd(2014, 1, 1) - TimeDelta::days(364), from_ymd(2013, 1, 2));
Expand Down
4 changes: 2 additions & 2 deletions src/naive/date/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -452,9 +452,9 @@ fn test_date_checked_add_signed() {
let ymd = |y, m, d| NaiveDate::from_ymd(y, m, d).ok();

check(ymd(2014, 1, 1), TimeDelta::zero(), ymd(2014, 1, 1));
check(ymd(2014, 1, 1), TimeDelta::seconds(86399).unwrap(), ymd(2014, 1, 1));
check(ymd(2014, 1, 1), TimeDelta::seconds(86399), ymd(2014, 1, 1));
// always round towards zero
check(ymd(2014, 1, 1), TimeDelta::seconds(-86399).unwrap(), ymd(2014, 1, 1));
check(ymd(2014, 1, 1), TimeDelta::seconds(-86399), ymd(2014, 1, 1));
check(ymd(2014, 1, 1), TimeDelta::days(1), ymd(2014, 1, 2));
check(ymd(2014, 1, 1), TimeDelta::days(-1), ymd(2013, 12, 31));
check(ymd(2014, 1, 1), TimeDelta::days(364), ymd(2014, 12, 31));
Expand Down
78 changes: 32 additions & 46 deletions src/naive/datetime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,17 +254,11 @@ impl NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// let hms = |h, m, s| d.and_hms(h, m, s).unwrap();
/// assert_eq!(hms(3, 5, 7).checked_add_signed(TimeDelta::zero()), Some(hms(3, 5, 7)));
/// assert_eq!(hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(1).unwrap()), Some(hms(3, 5, 8)));
/// assert_eq!(hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(1)), Some(hms(3, 5, 8)));
/// assert_eq!(hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(-1)), Some(hms(3, 5, 6)));
/// assert_eq!(hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(3600 + 60)), Some(hms(4, 6, 7)));
/// assert_eq!(
/// hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(-1).unwrap()),
/// Some(hms(3, 5, 6))
/// );
/// assert_eq!(
/// hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(3600 + 60).unwrap()),
/// Some(hms(4, 6, 7))
/// );
/// assert_eq!(
/// hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(86_400).unwrap()),
/// hms(3, 5, 7).checked_add_signed(TimeDelta::seconds(86_400)),
/// Some(from_ymd(2016, 7, 9).and_hms(3, 5, 7).unwrap())
/// );
///
Expand Down Expand Up @@ -299,17 +293,17 @@ impl NaiveDateTime {
/// Some(hmsm(3, 5, 59, 1_800)));
/// assert_eq!(leap.checked_add_signed(TimeDelta::milliseconds(800).unwrap()),
/// Some(hmsm(3, 6, 0, 100)));
/// assert_eq!(leap.checked_add_signed(TimeDelta::seconds(10).unwrap()),
/// assert_eq!(leap.checked_add_signed(TimeDelta::seconds(10)),
/// Some(hmsm(3, 6, 9, 300)));
/// assert_eq!(leap.checked_add_signed(TimeDelta::seconds(-10).unwrap()),
/// assert_eq!(leap.checked_add_signed(TimeDelta::seconds(-10)),
/// Some(hmsm(3, 5, 50, 300)));
/// assert_eq!(leap.checked_add_signed(TimeDelta::days(1)),
/// Some(from_ymd(2016, 7, 9).and_hms_milli(3, 5, 59, 300).unwrap()));
/// ```
#[must_use]
pub const fn checked_add_signed(self, rhs: TimeDelta) -> Option<NaiveDateTime> {
let (time, remainder) = self.time.overflowing_add_signed(rhs);
let remainder = try_opt!(TimeDelta::seconds(remainder));
let remainder = try_opt!(TimeDelta::new(remainder, 0));
let date = try_opt!(self.date.checked_add_signed(remainder));
Some(NaiveDateTime { date, time })
}
Expand Down Expand Up @@ -435,17 +429,11 @@ impl NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// let hms = |h, m, s| d.and_hms(h, m, s).unwrap();
/// assert_eq!(hms(3, 5, 7).checked_sub_signed(TimeDelta::zero()), Some(hms(3, 5, 7)));
/// assert_eq!(hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(1).unwrap()), Some(hms(3, 5, 6)));
/// assert_eq!(
/// hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(-1).unwrap()),
/// Some(hms(3, 5, 8))
/// );
/// assert_eq!(
/// hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(3600 + 60).unwrap()),
/// Some(hms(2, 4, 7))
/// );
/// assert_eq!(hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(1)), Some(hms(3, 5, 6)));
/// assert_eq!(hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(-1)), Some(hms(3, 5, 8)));
/// assert_eq!(hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(3600 + 60)), Some(hms(2, 4, 7)));
/// assert_eq!(
/// hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(86_400).unwrap()),
/// hms(3, 5, 7).checked_sub_signed(TimeDelta::seconds(86_400)),
/// Some(from_ymd(2016, 7, 7).and_hms(3, 5, 7).unwrap())
/// );
///
Expand Down Expand Up @@ -478,15 +466,15 @@ impl NaiveDateTime {
/// Some(hmsm(3, 5, 59, 1_100)));
/// assert_eq!(leap.checked_sub_signed(TimeDelta::milliseconds(500).unwrap()),
/// Some(hmsm(3, 5, 59, 800)));
/// assert_eq!(leap.checked_sub_signed(TimeDelta::seconds(60).unwrap()),
/// assert_eq!(leap.checked_sub_signed(TimeDelta::seconds(60)),
/// Some(hmsm(3, 5, 0, 300)));
/// assert_eq!(leap.checked_sub_signed(TimeDelta::days(1)),
/// Some(from_ymd(2016, 7, 7).and_hms_milli(3, 6, 0, 300).unwrap()));
/// ```
#[must_use]
pub const fn checked_sub_signed(self, rhs: TimeDelta) -> Option<NaiveDateTime> {
let (time, remainder) = self.time.overflowing_sub_signed(rhs);
let remainder = try_opt!(TimeDelta::seconds(remainder));
let remainder = try_opt!(TimeDelta::new(remainder, 0));
let date = try_opt!(self.date.checked_sub_signed(remainder));
Some(NaiveDateTime { date, time })
}
Expand Down Expand Up @@ -560,15 +548,14 @@ impl NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// assert_eq!(
/// d.and_hms(3, 5, 7).unwrap().signed_duration_since(d.and_hms(2, 4, 6).unwrap()),
/// TimeDelta::seconds(3600 + 60 + 1).unwrap()
/// TimeDelta::seconds(3600 + 60 + 1)
/// );
///
/// // July 8 is 190th day in the year 2016
/// let d0 = from_ymd(2016, 1, 1);
/// assert_eq!(
/// d.and_hms_milli(0, 7, 6, 500).unwrap().signed_duration_since(d0.and_hms(0, 0, 0).unwrap()),
/// TimeDelta::seconds(189 * 86_400 + 7 * 60 + 6).unwrap()
/// + TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(189 * 86_400 + 7 * 60 + 6) + TimeDelta::milliseconds(500).unwrap()
/// );
/// ```
///
Expand All @@ -581,11 +568,11 @@ impl NaiveDateTime {
/// let leap = from_ymd(2015, 6, 30).and_hms_milli(23, 59, 59, 1_500).unwrap();
/// assert_eq!(
/// leap.signed_duration_since(from_ymd(2015, 6, 30).and_hms(23, 0, 0).unwrap()),
/// TimeDelta::seconds(3600).unwrap() + TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(3600) + TimeDelta::milliseconds(500).unwrap()
/// );
/// assert_eq!(
/// from_ymd(2015, 7, 1).and_hms(1, 0, 0).unwrap().signed_duration_since(leap),
/// TimeDelta::seconds(3600).unwrap() - TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(3600) - TimeDelta::milliseconds(500).unwrap()
/// );
/// ```
#[must_use]
Expand Down Expand Up @@ -1311,11 +1298,11 @@ impl Timelike for NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// let hms = |h, m, s| d.and_hms(h, m, s).unwrap();
/// assert_eq!(hms(3, 5, 7) + TimeDelta::zero(), hms(3, 5, 7));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(1).unwrap(), hms(3, 5, 8));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(-1).unwrap(), hms(3, 5, 6));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(3600 + 60).unwrap(), hms(4, 6, 7));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(1), hms(3, 5, 8));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(-1), hms(3, 5, 6));
/// assert_eq!(hms(3, 5, 7) + TimeDelta::seconds(3600 + 60), hms(4, 6, 7));
/// assert_eq!(
/// hms(3, 5, 7) + TimeDelta::seconds(86_400).unwrap(),
/// hms(3, 5, 7) + TimeDelta::seconds(86_400),
/// from_ymd(2016, 7, 9).and_hms(3, 5, 7).unwrap()
/// );
/// assert_eq!(hms(3, 5, 7) + TimeDelta::days(365), from_ymd(2017, 7, 8).and_hms(3, 5, 7).unwrap());
Expand All @@ -1336,8 +1323,8 @@ impl Timelike for NaiveDateTime {
/// assert_eq!(leap + TimeDelta::milliseconds(-500).unwrap(), hmsm(3, 5, 59, 800));
/// assert_eq!(leap + TimeDelta::milliseconds(500).unwrap(), hmsm(3, 5, 59, 1_800));
/// assert_eq!(leap + TimeDelta::milliseconds(800).unwrap(), hmsm(3, 6, 0, 100));
/// assert_eq!(leap + TimeDelta::seconds(10).unwrap(), hmsm(3, 6, 9, 300));
/// assert_eq!(leap + TimeDelta::seconds(-10).unwrap(), hmsm(3, 5, 50, 300));
/// assert_eq!(leap + TimeDelta::seconds(10), hmsm(3, 6, 9, 300));
/// assert_eq!(leap + TimeDelta::seconds(-10), hmsm(3, 5, 50, 300));
/// assert_eq!(leap + TimeDelta::days(1),
/// from_ymd(2016, 7, 9).and_hms_milli(3, 5, 59, 300).unwrap());
/// ```
Expand Down Expand Up @@ -1493,11 +1480,11 @@ impl Add<Months> for NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// let hms = |h, m, s| d.and_hms(h, m, s).unwrap();
/// assert_eq!(hms(3, 5, 7) - TimeDelta::zero(), hms(3, 5, 7));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(1).unwrap(), hms(3, 5, 6));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(-1).unwrap(), hms(3, 5, 8));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(3600 + 60).unwrap(), hms(2, 4, 7));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(1), hms(3, 5, 6));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(-1), hms(3, 5, 8));
/// assert_eq!(hms(3, 5, 7) - TimeDelta::seconds(3600 + 60), hms(2, 4, 7));
/// assert_eq!(
/// hms(3, 5, 7) - TimeDelta::seconds(86_400).unwrap(),
/// hms(3, 5, 7) - TimeDelta::seconds(86_400),
/// from_ymd(2016, 7, 7).and_hms(3, 5, 7).unwrap()
/// );
/// assert_eq!(hms(3, 5, 7) - TimeDelta::days(365), from_ymd(2015, 7, 9).and_hms(3, 5, 7).unwrap());
Expand All @@ -1517,7 +1504,7 @@ impl Add<Months> for NaiveDateTime {
/// assert_eq!(leap - TimeDelta::zero(), hmsm(3, 5, 59, 1_300));
/// assert_eq!(leap - TimeDelta::milliseconds(200).unwrap(), hmsm(3, 5, 59, 1_100));
/// assert_eq!(leap - TimeDelta::milliseconds(500).unwrap(), hmsm(3, 5, 59, 800));
/// assert_eq!(leap - TimeDelta::seconds(60).unwrap(), hmsm(3, 5, 0, 300));
/// assert_eq!(leap - TimeDelta::seconds(60), hmsm(3, 5, 0, 300));
/// assert_eq!(leap - TimeDelta::days(1),
/// from_ymd(2016, 7, 7).and_hms_milli(3, 6, 0, 300).unwrap());
/// ```
Expand Down Expand Up @@ -1661,15 +1648,14 @@ impl Sub<Months> for NaiveDateTime {
/// let d = from_ymd(2016, 7, 8);
/// assert_eq!(
/// d.and_hms(3, 5, 7).unwrap() - d.and_hms(2, 4, 6).unwrap(),
/// TimeDelta::seconds(3600 + 60 + 1).unwrap()
/// TimeDelta::seconds(3600 + 60 + 1)
/// );
///
/// // July 8 is 190th day in the year 2016
/// let d0 = from_ymd(2016, 1, 1);
/// assert_eq!(
/// d.and_hms_milli(0, 7, 6, 500).unwrap() - d0.and_hms(0, 0, 0).unwrap(),
/// TimeDelta::seconds(189 * 86_400 + 7 * 60 + 6).unwrap()
/// + TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(189 * 86_400 + 7 * 60 + 6) + TimeDelta::milliseconds(500).unwrap()
/// );
/// ```
///
Expand All @@ -1682,11 +1668,11 @@ impl Sub<Months> for NaiveDateTime {
/// let leap = from_ymd(2015, 6, 30).and_hms_milli(23, 59, 59, 1_500).unwrap();
/// assert_eq!(
/// leap - from_ymd(2015, 6, 30).and_hms(23, 0, 0).unwrap(),
/// TimeDelta::seconds(3600).unwrap() + TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(3600) + TimeDelta::milliseconds(500).unwrap()
/// );
/// assert_eq!(
/// from_ymd(2015, 7, 1).and_hms(1, 0, 0).unwrap() - leap,
/// TimeDelta::seconds(3600).unwrap() - TimeDelta::milliseconds(500).unwrap()
/// TimeDelta::seconds(3600) - TimeDelta::milliseconds(500).unwrap()
/// );
/// ```
impl Sub<NaiveDateTime> for NaiveDateTime {
Expand Down
10 changes: 5 additions & 5 deletions src/naive/datetime/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ fn test_datetime_add() {
assert_eq!(lhs.checked_add_signed(rhs), sum);
assert_eq!(lhs.checked_sub_signed(-rhs), sum);
}
let seconds = |s| TimeDelta::seconds(s).unwrap();
let seconds = |s| TimeDelta::seconds(s);

check((2014, 5, 6, 7, 8, 9), seconds(3600 + 60 + 1), Some((2014, 5, 6, 8, 9, 10)));
check((2014, 5, 6, 7, 8, 9), seconds(-(3600 + 60 + 1)), Some((2014, 5, 6, 6, 7, 8)));
Expand Down Expand Up @@ -52,19 +52,19 @@ fn test_datetime_sub() {
assert_eq!(since(ymdhms(2014, 5, 6, 7, 8, 9), ymdhms(2014, 5, 6, 7, 8, 9)), TimeDelta::zero());
assert_eq!(
since(ymdhms(2014, 5, 6, 7, 8, 10), ymdhms(2014, 5, 6, 7, 8, 9)),
TimeDelta::seconds(1).unwrap()
TimeDelta::seconds(1)
);
assert_eq!(
since(ymdhms(2014, 5, 6, 7, 8, 9), ymdhms(2014, 5, 6, 7, 8, 10)),
TimeDelta::seconds(-1).unwrap()
TimeDelta::seconds(-1)
);
assert_eq!(
since(ymdhms(2014, 5, 7, 7, 8, 9), ymdhms(2014, 5, 6, 7, 8, 10)),
TimeDelta::seconds(86399).unwrap()
TimeDelta::seconds(86399)
);
assert_eq!(
since(ymdhms(2001, 9, 9, 1, 46, 39), ymdhms(1970, 1, 1, 0, 0, 0)),
TimeDelta::seconds(999_999_999).unwrap()
TimeDelta::seconds(999_999_999)
);
}

Expand Down
Loading

0 comments on commit e9534ca

Please sign in to comment.