Add a bunch of tests
This commit is contained in:
parent
4050533558
commit
3c965faf86
@ -89,7 +89,7 @@ impl DateTime {
|
|||||||
/// Gets the Unix timestamp corresponding to this `DateTime`
|
/// Gets the Unix timestamp corresponding to this `DateTime`
|
||||||
pub fn timestamp(&self) -> i64 {
|
pub fn timestamp(&self) -> i64 {
|
||||||
let mut seconds = self.timestamp_naive();
|
let mut seconds = self.timestamp_naive();
|
||||||
seconds -= self.zone.as_seconds();
|
seconds += self.zone.as_seconds();
|
||||||
seconds
|
seconds
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ impl DateTime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Converts this datetime to a different timezone
|
/// Converts this datetime to a different timezone
|
||||||
pub fn convert_timezone(&mut self, zone:TimeZone) {
|
pub fn convert_timezone(&mut self, zone: TimeZone) {
|
||||||
let ts = self.timestamp() + zone.as_seconds();
|
let ts = self.timestamp() + zone.as_seconds();
|
||||||
*self = Self::from_timestamp(ts);
|
*self = Self::from_timestamp(ts);
|
||||||
self.zone = zone;
|
self.zone = zone;
|
||||||
@ -279,6 +279,7 @@ impl PartialOrd for DateTime {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::zone::Sign;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn weekday() {
|
fn weekday() {
|
||||||
@ -390,7 +391,7 @@ mod tests {
|
|||||||
let mut dt = DateTime::from_timestamp(1706571482);
|
let mut dt = DateTime::from_timestamp(1706571482);
|
||||||
assert_eq!(dt.to_string(), "2024-01-29T23:38:02Z");
|
assert_eq!(dt.to_string(), "2024-01-29T23:38:02Z");
|
||||||
dt.zone = TimeZone::Offset {
|
dt.zone = TimeZone::Offset {
|
||||||
sign: crate::zone::Sign::Positive,
|
sign: Sign::Positive,
|
||||||
hours: 4,
|
hours: 4,
|
||||||
minutes: 15,
|
minutes: 15,
|
||||||
};
|
};
|
||||||
@ -402,10 +403,59 @@ mod tests {
|
|||||||
let mut dt = DateTime::from_timestamp(1706571482);
|
let mut dt = DateTime::from_timestamp(1706571482);
|
||||||
assert_eq!(dt.display(), "Mon Jan 29 23:38:02 UTC 2024");
|
assert_eq!(dt.display(), "Mon Jan 29 23:38:02 UTC 2024");
|
||||||
dt.zone = TimeZone::Offset {
|
dt.zone = TimeZone::Offset {
|
||||||
sign: crate::zone::Sign::Positive,
|
sign: Sign::Positive,
|
||||||
hours: 4,
|
hours: 4,
|
||||||
minutes: 15,
|
minutes: 15,
|
||||||
};
|
};
|
||||||
assert_eq!(dt.display(), "Mon Jan 29 23:38:02 +04:15 2024");
|
assert_eq!(dt.display(), "Mon Jan 29 23:38:02 +04:15 2024");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn convert_zone() {
|
||||||
|
let mut dt = DateTime {
|
||||||
|
year: Year::new(2024),
|
||||||
|
month: Month::Janurary,
|
||||||
|
day: 29,
|
||||||
|
hour: 23,
|
||||||
|
minute: 38,
|
||||||
|
second: 02,
|
||||||
|
zone: TimeZone::Utc,
|
||||||
|
};
|
||||||
|
let tz = TimeZone::Offset {
|
||||||
|
sign: Sign::Negative,
|
||||||
|
hours: 5,
|
||||||
|
minutes: 0,
|
||||||
|
};
|
||||||
|
dt.convert_timezone(tz);
|
||||||
|
assert_eq!(
|
||||||
|
dt,
|
||||||
|
DateTime {
|
||||||
|
year: Year::new(2024),
|
||||||
|
month: Month::Janurary,
|
||||||
|
day: 29,
|
||||||
|
hour: 18,
|
||||||
|
minute: 38,
|
||||||
|
second: 02,
|
||||||
|
zone: tz,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn from_timestamp_with_zone() {
|
||||||
|
let tz = TimeZone::Offset { sign: Sign::Negative, hours: 5, minutes: 0 };
|
||||||
|
let dt = DateTime::from_timestamp_with_zone(1706571482, tz);
|
||||||
|
assert_eq!(
|
||||||
|
dt,
|
||||||
|
DateTime {
|
||||||
|
year: Year::new(2024),
|
||||||
|
month: Month::Janurary,
|
||||||
|
day: 29,
|
||||||
|
hour: 18,
|
||||||
|
minute: 38,
|
||||||
|
second: 02,
|
||||||
|
zone: tz,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
11
src/zone.rs
11
src/zone.rs
@ -168,3 +168,14 @@ impl fmt::Display for TZError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl error::Error for TZError {}
|
impl error::Error for TZError {}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn as_seconds() {
|
||||||
|
let tz = TimeZone::Offset { sign: Sign::Negative, hours: 5, minutes: 0 };
|
||||||
|
assert_eq!(tz.as_seconds(), -18000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user