Added time::parser tests for basuc format

This commit is contained in:
Nathan Fisher 2023-06-10 00:28:37 -04:00
parent de27339b73
commit 931d384e05

View file

@ -327,7 +327,7 @@ impl<'a> Parser<'a> {
}
}
}
_ => return Err(Error::Truncated),
_ => {}
}
if self.year.is_none() || self.month.is_none() || self.day.is_none() {
return Err(Error::Truncated);
@ -349,7 +349,7 @@ mod tests {
use super::*;
#[test]
fn parse_full_utc() {
fn parse_extended_utc() {
let parser = Parser::new("2023-05-09T19:39:15Z");
let dt = parser.parse().unwrap();
assert_eq!(dt.year, 2023);
@ -362,7 +362,7 @@ mod tests {
}
#[test]
fn parse_full_positive() {
fn parse_extended_positive() {
let parser = Parser::new("2023-05-09T19:39:15+05:15");
let dt = parser.parse().unwrap();
assert_eq!(dt.year, 2023);
@ -382,7 +382,7 @@ mod tests {
}
#[test]
fn parse_full_negative() {
fn parse_extended_negative() {
let parser = Parser::new("2023-05-09T19:39:15-05");
let dt = parser.parse().unwrap();
assert_eq!(dt.year, 2023);
@ -402,7 +402,7 @@ mod tests {
}
#[test]
fn parse_full_no_seconds() {
fn parse_extended_no_seconds() {
let parser = Parser::new("2023-05-09T19:39-05");
let dt = parser.parse().unwrap();
assert!(dt.second.is_none());
@ -417,7 +417,7 @@ mod tests {
}
#[test]
fn parse_full_no_minutes() {
fn parse_extended_no_minutes() {
let parser = Parser::new("2023-05-09T19-05");
let dt = parser.parse().unwrap();
assert!(dt.second.is_none());
@ -433,11 +433,83 @@ mod tests {
}
#[test]
fn parse_full_no_time() {
fn parse_extended_no_time() {
let parser = Parser::new("2023-05-09");
let dt = parser.parse().unwrap();
assert!(dt.second.is_none());
assert!(dt.minute.is_none());
assert!(dt.tz.is_none());
}
#[test]
fn parse_basic_utc() {
let parser = Parser::new("20230407T114230Z");
let dt = parser.parse().unwrap();
assert_eq!(dt.year, 2023);
assert_eq!(dt.month, 4);
assert_eq!(dt.day, 7);
assert_eq!(dt.hour, Some(11));
assert_eq!(dt.minute, Some(42));
assert_eq!(dt.second, Some(30));
assert_eq!(dt.tz, Some(TimeZone::UTC));
}
#[test]
fn parse_basic_positive() {
let parser = Parser::new("20230407T114230+0520");
let dt = parser.parse().unwrap();
assert_eq!(
dt.tz,
Some(TimeZone::Offset(Offset {
sign: Sign::Positive,
hours: 5,
minutes: Some(20)
}))
);
}
#[test]
fn parse_basic_negative() {
let parser = Parser::new("20230407T114230-0520");
let dt = parser.parse().unwrap();
assert_eq!(
dt.tz,
Some(TimeZone::Offset(Offset {
sign: Sign::Negative,
hours: 5,
minutes: Some(20)
}))
);
}
#[test]
fn parse_basic_no_seconds() {
let parser = Parser::new("20230407T1142-0520");
let dt = parser.parse().unwrap();
assert!(dt.second.is_none());
assert_eq!(
dt.tz,
Some(TimeZone::Offset(Offset {
sign: Sign::Negative,
hours: 5,
minutes: Some(20)
}))
);
}
#[test]
fn parse_basic_no_minutes() {
let parser = Parser::new("20230407T11-05");
let dt = parser.parse().unwrap();
assert!(dt.second.is_none());
assert!(dt.minute.is_none());
assert_eq!(
dt.tz,
Some(TimeZone::Offset(Offset {
sign: Sign::Negative,
hours: 5,
minutes: None
}))
);
}
}