From 931d384e053d1826e63c9927ce41aada9c083df7 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Sat, 10 Jun 2023 00:28:37 -0400 Subject: [PATCH] Added time::parser tests for basuc format --- src/time/parser.rs | 86 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/src/time/parser.rs b/src/time/parser.rs index 8d73b8b..8260a9d 100644 --- a/src/time/parser.rs +++ b/src/time/parser.rs @@ -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 + })) + ); + } }