From a2e76629ccc28ddeba2a867272ba12d85a996cba Mon Sep 17 00:00:00 2001 From: cxworks Date: Mon, 19 Jun 2023 22:36:17 -0400 Subject: [PATCH 1/5] add generated unit test --- src/format/scan.rs | 114 +++++++++++++++++++++++++++ src/naive/date.rs | 28 +++++++ src/naive/datetime/mod.rs | 12 +++ src/naive/time/mod.rs | 15 ++++ src/offset/local/mod.rs | 14 ++-- src/offset/local/tz_info/parser.rs | 15 ++++ src/offset/local/tz_info/rule.rs | 48 +++++++++++ src/offset/local/tz_info/timezone.rs | 56 +++++++++++++ 8 files changed, 295 insertions(+), 7 deletions(-) diff --git a/src/format/scan.rs b/src/format/scan.rs index 29fa70d4d7..4bfa9307e1 100644 --- a/src/format/scan.rs +++ b/src/format/scan.rs @@ -463,6 +463,120 @@ mod tests { assert_eq!(space("a "), Err(INVALID)); } + #[test] + fn test_timezone_name_skip(){ + let s = "\r"; + let ans = crate::format::scan::timezone_name_skip(s); + assert!(ans.is_ok()); + } + + #[test] + fn test_timezone_offset_2822() { + let s = "cSt"; + let ans = crate::format::scan::timezone_offset_2822(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-21600)))"); + + let s = "pSt"; + let ans = crate::format::scan::timezone_offset_2822(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-28800)))"); + + let s = "mSt"; + let ans = crate::format::scan::timezone_offset_2822(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-25200)))"); + + let s = "Gp"; + let ans = crate::format::scan::timezone_offset_2822(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", None))"); + + let s = "-1551"; + let ans = crate::format::scan::timezone_offset_2822(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-57060)))"); + } + + #[test] + fn test_short_or_long_month0(){ + let s = "JUn"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 5))"); + + let s = "mAy"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 4))"); + + let s = "AuG"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 7))"); + + let s = "Aprâ"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"â\", 3))"); + + let s = "JUl"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 6))"); + + let s = "mAr"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 2))"); + + let s = "Jan"; + let ans = crate::format::scan::short_or_long_month0(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); + } + + #[test] + fn test_short_or_long_weekday() { + let s = "sAtu"; + let ans = crate::format::scan::short_or_long_weekday(s); + assert_eq!(format!("{:?}", ans), "Ok((\"u\", Sat))"); + + let s = "thu"; + let ans = crate::format::scan::short_or_long_weekday(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", Thu))"); + } + + #[test] + fn test_nanosecond_fixed() { + let s = ""; + let num = 0usize; + let ans = crate::format::scan::nanosecond_fixed(s, num); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); + + let s = ""; + let num = 1usize; + let ans = crate::format::scan::nanosecond_fixed(s, num); + assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); + } + + #[test] + fn test_nanosecond(){ + let s = "2Ù"; + let ans = crate::format::scan::nanosecond(s); + assert_eq!(format!("{:?}", ans), "Ok((\"Ù\", 200000000))"); + + let s = "8"; + let ans = crate::format::scan::nanosecond(s); + assert_eq!(format!("{:?}", ans), "Ok((\"\", 800000000))"); + } + + #[test] + fn test_equals(){ + let s = b"\x5b"; + let pattern = "["; + let ans = crate::format::scan::equals(s, pattern); + assert!(ans); + + let s = b"\x0a\x5b\x4b"; + let pattern = "[K"; + let ans = crate::format::scan::equals(s, pattern); + assert!(!ans); + + let s = b"\x00"; + let pattern = ""; + let ans = crate::format::scan::equals(s, pattern); + assert!(!ans); + } + #[test] fn test_s_next() { assert_eq!(s_next(""), ""); diff --git a/src/naive/date.rs b/src/naive/date.rs index e98615b458..3f87279bc7 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -2997,6 +2997,34 @@ mod tests { } } + + #[test] + fn test_date_from_str2(){ + let str = "-2-2-2"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(-0002-02-02)"); + + let str = "-1-1-2"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(-0001-01-02)"); + + let str = "4-4-4"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(0004-04-04)"); + + let str = "9"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); + + let str = "4-44-44"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); + + let str = "4-4-9"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(0004-04-09)"); + } + #[test] fn test_date_parse_from_str() { let ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap(); diff --git a/src/naive/datetime/mod.rs b/src/naive/datetime/mod.rs index d10ea89d63..58d7038270 100644 --- a/src/naive/datetime/mod.rs +++ b/src/naive/datetime/mod.rs @@ -1966,3 +1966,15 @@ where assert!(from_str(r#"{"date":{"ymdf":20},"time":{"secs":0,"frac":0}}"#).is_err()); assert!(from_str(r#"null"#).is_err()); } + + +#[test] +fn test_from_str(){ + let str = "6"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); + + let str = "+6666667006"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); +} \ No newline at end of file diff --git a/src/naive/time/mod.rs b/src/naive/time/mod.rs index 856444f6fd..8d21ab257f 100644 --- a/src/naive/time/mod.rs +++ b/src/naive/time/mod.rs @@ -1451,3 +1451,18 @@ where assert!(from_str(r#"{"secs":0,"frac":0}"#).is_err()); assert!(from_str(r#"null"#).is_err()); } + +#[test] +fn test_from_str(){ + let str = "0:0:4.00000000000"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(00:00:04)"); + + let str = "0:7:60"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Ok(00:07:60)"); + + let str = "7:85:8"; + let ans = ::from_str(str); + assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); +} diff --git a/src/offset/local/mod.rs b/src/offset/local/mod.rs index c7a938dd5a..c00e5a519c 100644 --- a/src/offset/local/mod.rs +++ b/src/offset/local/mod.rs @@ -228,11 +228,11 @@ mod tests { } } - /// Test Issue #866 - #[test] - fn test_issue_866() { - #[allow(deprecated)] - let local_20221106 = Local.ymd(2022, 11, 6); - let _dt_20221106 = local_20221106.and_hms_milli_opt(1, 2, 59, 1000).unwrap(); - } + // /// Test Issue #866 + // #[test] + // fn test_issue_866() { + // #[allow(deprecated)] + // let local_20221106 = Local.ymd(2022, 11, 6); + // let _dt_20221106 = local_20221106.and_hms_milli_opt(1, 2, 59, 1000).unwrap(); + // } } diff --git a/src/offset/local/tz_info/parser.rs b/src/offset/local/tz_info/parser.rs index 47cc0377e4..3065ec67af 100644 --- a/src/offset/local/tz_info/parser.rs +++ b/src/offset/local/tz_info/parser.rs @@ -331,3 +331,18 @@ enum Version { /// Version 3 V3, } + +#[cfg(test)] +mod tests { + + #[test] + fn test_parse(){ + let data=b"\x54\x5a\x69\x66\x3d"; + let ans = crate::offset::local::tz_info::parser::parse(data); + assert_eq!(format!("{:?}", ans), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); + + let data=b"\x0a\x0a\x0a\x0a"; + let ans = crate::offset::local::tz_info::parser::parse(data); + assert_eq!(format!("{:?}", ans), "Err(InvalidTzFile(\"invalid magic number\"))"); + } +} \ No newline at end of file diff --git a/src/offset/local/tz_info/rule.rs b/src/offset/local/tz_info/rule.rs index 369e317a42..297c700045 100644 --- a/src/offset/local/tz_info/rule.rs +++ b/src/offset/local/tz_info/rule.rs @@ -874,6 +874,39 @@ mod tests { Ok(()) } + #[test] + fn test_from_tz_string() { + let tz_string = b"hhh5hxx,5,1"; + let use_string_extensions = false; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Ok(Alternate(AlternateTime { std: LocalTimeType { ut_offset: -18000, is_dst: false, name: Some(\"hhh\") }, dst: LocalTimeType { ut_offset: -14400, is_dst: true, name: Some(\"hxx\") }, dst_start: Julian0WithLeap(5), dst_start_time: 7200, dst_end: Julian0WithLeap(1), dst_end_time: 7200 }))"); + + let tz_string = b"BBf3"; + let use_string_extensions = false; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Ok(Fixed(LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"BBf\") }))"); + + let tz_string = b"V-1,1/1:62["; + let use_string_extensions = false; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(InvalidTzString(\"invalid day time minute\"))"); + + let tz_string = b"2,2212"; + let use_string_extensions = false; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(TransitionRule(\"invalid rule day julian day\"))"); + + let tz_string = b"hhh5,5,1"; + let use_string_extensions = false; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(LocalTimeType(\"time zone name must have between 3 and 7 characters\"))"); + + let tz_string = b"3,M7.4.8l"; + let use_string_extensions = true; + assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(TransitionRule(\"invalid rule day week day\"))"); + } + #[test] fn test_v3_file() -> Result<(), Error> { let bytes = b"TZif3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x04\0\0\x1c\x20\0\0IST\0TZif3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x04\0\0\0\0\x7f\xe8\x17\x80\0\0\0\x1c\x20\0\0IST\0\x01\x01\x0aIST-2IDT,M3.4.4/26,M10.5.0\x0a"; @@ -1008,6 +1041,21 @@ mod tests { Ok(()) } + #[test] + fn test_from_timespec() { + let unix_time = 8825501086245354106i64; + let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); + assert_eq!(format!("{:?}", ans), "Err(OutOfRange(\"i64 is out of range for i32\"))"); + + let unix_time = -9223372036846387200i64; + let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); + assert_eq!(format!("{:?}", ans), "Err(OutOfRange(\"out of range operation\"))"); + + let unix_time = 0; + let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); + assert_eq!(format!("{:?}", ans), "Ok(UtcDateTime { year: 1970, month: 1, month_day: 1, hour: 0, minute: 0, second: 0 })"); + } + #[test] fn test_transition_rule_overflow() -> Result<(), Error> { let transition_rule_1 = TransitionRule::from(AlternateTime::new( diff --git a/src/offset/local/tz_info/timezone.rs b/src/offset/local/tz_info/timezone.rs index d2de060237..ea312052e5 100644 --- a/src/offset/local/tz_info/timezone.rs +++ b/src/offset/local/tz_info/timezone.rs @@ -740,6 +740,22 @@ mod tests { Ok(()) } + #[test] + fn test_from_tz_data() -> Result<(), Error> { + let bytes = b"\x54\x5a\x69\x66\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5"; + let time_zone = TimeZone::from_tz_data(bytes); + assert_eq!(format!("{:?}", time_zone), "Err(InvalidTzFile(\"invalid header\"))"); + + let bytes = b"\x0a\x0a\xae\x0a"; + let time_zone = TimeZone::from_tz_data(bytes); + assert_eq!(format!("{:?}", time_zone), "Err(InvalidTzFile(\"invalid magic number\"))"); + + let bytes = b"\x54\x5a\x69\x66\x0a"; + let time_zone = TimeZone::from_tz_data(bytes); + assert_eq!(format!("{:?}", time_zone), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); + Ok(()) + } + #[test] fn test_tz_ascii_str() -> Result<(), Error> { assert!(matches!(TimeZoneName::new(b""), Err(Error::LocalTimeType(_)))); @@ -823,6 +839,46 @@ mod tests { Ok(()) } + #[test] + fn test_time_zone_from_posix_tz_extra() -> Result<(), Error> { + //error cases + assert!(TimeZone::from_posix_tz("2,M2.2.").is_err()); + assert!(TimeZone::from_posix_tz("8T1").is_err()); + assert!(TimeZone::from_posix_tz("1,1,4").is_err()); + assert!(TimeZone::from_posix_tz("2,M2.·/").is_err()); + assert!(TimeZone::from_posix_tz("+1+").is_err()); + assert!(TimeZone::from_posix_tz("1J").is_err()); + assert!(TimeZone::from_posix_tz("1122").is_err()); + assert!(TimeZone::from_posix_tz("aaa2,2,2").is_err()); + assert!(TimeZone::from_posix_tz("2,M2.2.22÷").is_err()); + assert!(TimeZone::from_posix_tz("2,M2").is_err()); + assert!(TimeZone::from_posix_tz("/Ä").is_err()); + assert!(TimeZone::from_posix_tz("1:211").is_err()); + assert!(TimeZone::from_posix_tz("9:2:62").is_err()); + assert!(TimeZone::from_posix_tz("2,2/29").is_err()); + assert!(TimeZone::from_posix_tz("1,1,4$").is_err()); + //ok cases + if let Ok(tz) = TimeZone::from_posix_tz("aaa3aaa3,2,22"){ + assert_eq!(format!("{:?}", tz), "TimeZone { \ + transitions: [], \ + local_time_types: [LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }], \ + leap_seconds: [], \ + extra_rule: Some(Alternate(AlternateTime { std: LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, dst: LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }, dst_start: Julian0WithLeap(2), dst_start_time: 7200, dst_end: Julian0WithLeap(22), dst_end_time: 7200 })) \ + }"); + } + if let Ok(tz) = TimeZone::from_posix_tz("TTT8"){ + assert_eq!(format!("{:?}", tz), "TimeZone { \ + transitions: [], \ + local_time_types: [LocalTimeType { ut_offset: -28800, is_dst: false, name: Some(\"TTT\") }], \ + leap_seconds: [], \ + extra_rule: Some(Fixed(LocalTimeType { ut_offset: -28800, is_dst: false, name: Some(\"TTT\") })) \ + }"); + } + + + Ok(()) + } + #[test] fn test_leap_seconds() -> Result<(), Error> { let time_zone = TimeZone::new( From f525e3b0268ba48ecc77b28abbaf2b7f5d46f1d2 Mon Sep 17 00:00:00 2001 From: cxworks Date: Tue, 20 Jun 2023 00:10:30 -0400 Subject: [PATCH 2/5] recover failed tests --- src/offset/local/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/offset/local/mod.rs b/src/offset/local/mod.rs index c00e5a519c..c7a938dd5a 100644 --- a/src/offset/local/mod.rs +++ b/src/offset/local/mod.rs @@ -228,11 +228,11 @@ mod tests { } } - // /// Test Issue #866 - // #[test] - // fn test_issue_866() { - // #[allow(deprecated)] - // let local_20221106 = Local.ymd(2022, 11, 6); - // let _dt_20221106 = local_20221106.and_hms_milli_opt(1, 2, 59, 1000).unwrap(); - // } + /// Test Issue #866 + #[test] + fn test_issue_866() { + #[allow(deprecated)] + let local_20221106 = Local.ymd(2022, 11, 6); + let _dt_20221106 = local_20221106.and_hms_milli_opt(1, 2, 59, 1000).unwrap(); + } } From 0b18c99307bce0c27eb4cb9e7f3de23c17bab6a3 Mon Sep 17 00:00:00 2001 From: cxworks Date: Tue, 20 Jun 2023 01:20:26 -0400 Subject: [PATCH 3/5] cargo fmt check --- src/format/scan.rs | 8 +++---- src/naive/date.rs | 3 +-- src/naive/datetime/mod.rs | 5 ++-- src/naive/time/mod.rs | 2 +- src/offset/local/tz_info/parser.rs | 8 +++---- src/offset/local/tz_info/rule.rs | 35 +++++++++++++++++++--------- src/offset/local/tz_info/timezone.rs | 10 ++++---- 7 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/format/scan.rs b/src/format/scan.rs index 4bfa9307e1..2ab4e094fd 100644 --- a/src/format/scan.rs +++ b/src/format/scan.rs @@ -464,7 +464,7 @@ mod tests { } #[test] - fn test_timezone_name_skip(){ + fn test_timezone_name_skip() { let s = "\r"; let ans = crate::format::scan::timezone_name_skip(s); assert!(ans.is_ok()); @@ -494,7 +494,7 @@ mod tests { } #[test] - fn test_short_or_long_month0(){ + fn test_short_or_long_month0() { let s = "JUn"; let ans = crate::format::scan::short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 5))"); @@ -549,7 +549,7 @@ mod tests { } #[test] - fn test_nanosecond(){ + fn test_nanosecond() { let s = "2Ù"; let ans = crate::format::scan::nanosecond(s); assert_eq!(format!("{:?}", ans), "Ok((\"Ù\", 200000000))"); @@ -560,7 +560,7 @@ mod tests { } #[test] - fn test_equals(){ + fn test_equals() { let s = b"\x5b"; let pattern = "["; let ans = crate::format::scan::equals(s, pattern); diff --git a/src/naive/date.rs b/src/naive/date.rs index 3f87279bc7..613102e98d 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -2997,9 +2997,8 @@ mod tests { } } - #[test] - fn test_date_from_str2(){ + fn test_date_from_str2() { let str = "-2-2-2"; let ans = ::from_str(str); assert_eq!(format!("{:?}", ans), "Ok(-0002-02-02)"); diff --git a/src/naive/datetime/mod.rs b/src/naive/datetime/mod.rs index 58d7038270..04f3deea17 100644 --- a/src/naive/datetime/mod.rs +++ b/src/naive/datetime/mod.rs @@ -1967,9 +1967,8 @@ where assert!(from_str(r#"null"#).is_err()); } - #[test] -fn test_from_str(){ +fn test_from_str() { let str = "6"; let ans = ::from_str(str); assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); @@ -1977,4 +1976,4 @@ fn test_from_str(){ let str = "+6666667006"; let ans = ::from_str(str); assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); -} \ No newline at end of file +} diff --git a/src/naive/time/mod.rs b/src/naive/time/mod.rs index 8d21ab257f..34292f82e7 100644 --- a/src/naive/time/mod.rs +++ b/src/naive/time/mod.rs @@ -1453,7 +1453,7 @@ where } #[test] -fn test_from_str(){ +fn test_from_str() { let str = "0:0:4.00000000000"; let ans = ::from_str(str); assert_eq!(format!("{:?}", ans), "Ok(00:00:04)"); diff --git a/src/offset/local/tz_info/parser.rs b/src/offset/local/tz_info/parser.rs index 3065ec67af..d5235c951c 100644 --- a/src/offset/local/tz_info/parser.rs +++ b/src/offset/local/tz_info/parser.rs @@ -336,13 +336,13 @@ enum Version { mod tests { #[test] - fn test_parse(){ - let data=b"\x54\x5a\x69\x66\x3d"; + fn test_parse() { + let data = b"\x54\x5a\x69\x66\x3d"; let ans = crate::offset::local::tz_info::parser::parse(data); assert_eq!(format!("{:?}", ans), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); - let data=b"\x0a\x0a\x0a\x0a"; + let data = b"\x0a\x0a\x0a\x0a"; let ans = crate::offset::local::tz_info::parser::parse(data); assert_eq!(format!("{:?}", ans), "Err(InvalidTzFile(\"invalid magic number\"))"); } -} \ No newline at end of file +} diff --git a/src/offset/local/tz_info/rule.rs b/src/offset/local/tz_info/rule.rs index 297c700045..d32b23c292 100644 --- a/src/offset/local/tz_info/rule.rs +++ b/src/offset/local/tz_info/rule.rs @@ -883,28 +883,38 @@ mod tests { let tz_string = b"BBf3"; let use_string_extensions = false; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Ok(Fixed(LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"BBf\") }))"); + assert_eq!( + format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Ok(Fixed(LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"BBf\") }))" + ); let tz_string = b"V-1,1/1:62["; let use_string_extensions = false; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(InvalidTzString(\"invalid day time minute\"))"); + assert_eq!( + format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(InvalidTzString(\"invalid day time minute\"))" + ); let tz_string = b"2,2212"; let use_string_extensions = false; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(TransitionRule(\"invalid rule day julian day\"))"); + assert_eq!( + format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(TransitionRule(\"invalid rule day julian day\"))" + ); let tz_string = b"hhh5,5,1"; let use_string_extensions = false; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(LocalTimeType(\"time zone name must have between 3 and 7 characters\"))"); + assert_eq!( + format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(LocalTimeType(\"time zone name must have between 3 and 7 characters\"))" + ); let tz_string = b"3,M7.4.8l"; let use_string_extensions = true; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(TransitionRule(\"invalid rule day week day\"))"); + assert_eq!( + format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), + "Err(TransitionRule(\"invalid rule day week day\"))" + ); } #[test] @@ -1053,7 +1063,10 @@ mod tests { let unix_time = 0; let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); - assert_eq!(format!("{:?}", ans), "Ok(UtcDateTime { year: 1970, month: 1, month_day: 1, hour: 0, minute: 0, second: 0 })"); + assert_eq!( + format!("{:?}", ans), + "Ok(UtcDateTime { year: 1970, month: 1, month_day: 1, hour: 0, minute: 0, second: 0 })" + ); } #[test] diff --git a/src/offset/local/tz_info/timezone.rs b/src/offset/local/tz_info/timezone.rs index ea312052e5..327777aaf3 100644 --- a/src/offset/local/tz_info/timezone.rs +++ b/src/offset/local/tz_info/timezone.rs @@ -752,7 +752,10 @@ mod tests { let bytes = b"\x54\x5a\x69\x66\x0a"; let time_zone = TimeZone::from_tz_data(bytes); - assert_eq!(format!("{:?}", time_zone), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); + assert_eq!( + format!("{:?}", time_zone), + "Err(UnsupportedTzFile(\"unsupported TZif version\"))" + ); Ok(()) } @@ -858,7 +861,7 @@ mod tests { assert!(TimeZone::from_posix_tz("2,2/29").is_err()); assert!(TimeZone::from_posix_tz("1,1,4$").is_err()); //ok cases - if let Ok(tz) = TimeZone::from_posix_tz("aaa3aaa3,2,22"){ + if let Ok(tz) = TimeZone::from_posix_tz("aaa3aaa3,2,22") { assert_eq!(format!("{:?}", tz), "TimeZone { \ transitions: [], \ local_time_types: [LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }], \ @@ -866,7 +869,7 @@ mod tests { extra_rule: Some(Alternate(AlternateTime { std: LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, dst: LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }, dst_start: Julian0WithLeap(2), dst_start_time: 7200, dst_end: Julian0WithLeap(22), dst_end_time: 7200 })) \ }"); } - if let Ok(tz) = TimeZone::from_posix_tz("TTT8"){ + if let Ok(tz) = TimeZone::from_posix_tz("TTT8") { assert_eq!(format!("{:?}", tz), "TimeZone { \ transitions: [], \ local_time_types: [LocalTimeType { ut_offset: -28800, is_dst: false, name: Some(\"TTT\") }], \ @@ -875,7 +878,6 @@ mod tests { }"); } - Ok(()) } From 4f061d813488b1d26d3cdb6c5d4f6976055f8510 Mon Sep 17 00:00:00 2001 From: cxworks Date: Tue, 20 Jun 2023 10:30:36 -0400 Subject: [PATCH 4/5] 1. Fix clippy issue 2. Resolve import/uses 3. Remove outlined unit tests --- src/format/scan.rs | 50 ++++++++++++++++-------------- src/naive/date.rs | 27 ---------------- src/naive/datetime/mod.rs | 11 ------- src/naive/time/mod.rs | 15 --------- src/offset/local/tz_info/parser.rs | 5 +-- 5 files changed, 30 insertions(+), 78 deletions(-) diff --git a/src/format/scan.rs b/src/format/scan.rs index 2ab4e094fd..53d8cb2dcd 100644 --- a/src/format/scan.rs +++ b/src/format/scan.rs @@ -415,7 +415,11 @@ enum CommentState { #[cfg(test)] mod tests { - use super::{comment_2822, consume_colon_maybe, s_next, space, trim1}; + use super::{ + comment_2822, consume_colon_maybe, equals, nanosecond, nanosecond_fixed, s_next, + short_or_long_month0, short_or_long_weekday, space, timezone_name_skip, + timezone_offset_2822, trim1, + }; use crate::format::{INVALID, TOO_SHORT}; #[test] @@ -466,72 +470,72 @@ mod tests { #[test] fn test_timezone_name_skip() { let s = "\r"; - let ans = crate::format::scan::timezone_name_skip(s); + let ans = timezone_name_skip(s); assert!(ans.is_ok()); } #[test] fn test_timezone_offset_2822() { let s = "cSt"; - let ans = crate::format::scan::timezone_offset_2822(s); + let ans = timezone_offset_2822(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-21600)))"); let s = "pSt"; - let ans = crate::format::scan::timezone_offset_2822(s); + let ans = timezone_offset_2822(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-28800)))"); let s = "mSt"; - let ans = crate::format::scan::timezone_offset_2822(s); + let ans = timezone_offset_2822(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-25200)))"); let s = "Gp"; - let ans = crate::format::scan::timezone_offset_2822(s); + let ans = timezone_offset_2822(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", None))"); let s = "-1551"; - let ans = crate::format::scan::timezone_offset_2822(s); + let ans = timezone_offset_2822(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-57060)))"); } #[test] fn test_short_or_long_month0() { let s = "JUn"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 5))"); let s = "mAy"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 4))"); let s = "AuG"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 7))"); let s = "Aprâ"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"â\", 3))"); let s = "JUl"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 6))"); let s = "mAr"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 2))"); let s = "Jan"; - let ans = crate::format::scan::short_or_long_month0(s); + let ans = short_or_long_month0(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); } #[test] fn test_short_or_long_weekday() { let s = "sAtu"; - let ans = crate::format::scan::short_or_long_weekday(s); + let ans = short_or_long_weekday(s); assert_eq!(format!("{:?}", ans), "Ok((\"u\", Sat))"); let s = "thu"; - let ans = crate::format::scan::short_or_long_weekday(s); + let ans = short_or_long_weekday(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", Thu))"); } @@ -539,23 +543,23 @@ mod tests { fn test_nanosecond_fixed() { let s = ""; let num = 0usize; - let ans = crate::format::scan::nanosecond_fixed(s, num); + let ans = nanosecond_fixed(s, num); assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); let s = ""; let num = 1usize; - let ans = crate::format::scan::nanosecond_fixed(s, num); + let ans = nanosecond_fixed(s, num); assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); } #[test] fn test_nanosecond() { let s = "2Ù"; - let ans = crate::format::scan::nanosecond(s); + let ans = nanosecond(s); assert_eq!(format!("{:?}", ans), "Ok((\"Ù\", 200000000))"); let s = "8"; - let ans = crate::format::scan::nanosecond(s); + let ans = nanosecond(s); assert_eq!(format!("{:?}", ans), "Ok((\"\", 800000000))"); } @@ -563,17 +567,17 @@ mod tests { fn test_equals() { let s = b"\x5b"; let pattern = "["; - let ans = crate::format::scan::equals(s, pattern); + let ans = equals(s, pattern); assert!(ans); let s = b"\x0a\x5b\x4b"; let pattern = "[K"; - let ans = crate::format::scan::equals(s, pattern); + let ans = equals(s, pattern); assert!(!ans); let s = b"\x00"; let pattern = ""; - let ans = crate::format::scan::equals(s, pattern); + let ans = equals(s, pattern); assert!(!ans); } diff --git a/src/naive/date.rs b/src/naive/date.rs index 613102e98d..e98615b458 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -2997,33 +2997,6 @@ mod tests { } } - #[test] - fn test_date_from_str2() { - let str = "-2-2-2"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(-0002-02-02)"); - - let str = "-1-1-2"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(-0001-01-02)"); - - let str = "4-4-4"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(0004-04-04)"); - - let str = "9"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); - - let str = "4-44-44"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); - - let str = "4-4-9"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(0004-04-09)"); - } - #[test] fn test_date_parse_from_str() { let ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap(); diff --git a/src/naive/datetime/mod.rs b/src/naive/datetime/mod.rs index 04f3deea17..d10ea89d63 100644 --- a/src/naive/datetime/mod.rs +++ b/src/naive/datetime/mod.rs @@ -1966,14 +1966,3 @@ where assert!(from_str(r#"{"date":{"ymdf":20},"time":{"secs":0,"frac":0}}"#).is_err()); assert!(from_str(r#"null"#).is_err()); } - -#[test] -fn test_from_str() { - let str = "6"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); - - let str = "+6666667006"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); -} diff --git a/src/naive/time/mod.rs b/src/naive/time/mod.rs index 34292f82e7..856444f6fd 100644 --- a/src/naive/time/mod.rs +++ b/src/naive/time/mod.rs @@ -1451,18 +1451,3 @@ where assert!(from_str(r#"{"secs":0,"frac":0}"#).is_err()); assert!(from_str(r#"null"#).is_err()); } - -#[test] -fn test_from_str() { - let str = "0:0:4.00000000000"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(00:00:04)"); - - let str = "0:7:60"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Ok(00:07:60)"); - - let str = "7:85:8"; - let ans = ::from_str(str); - assert_eq!(format!("{:?}", ans), "Err(ParseError(OutOfRange))"); -} diff --git a/src/offset/local/tz_info/parser.rs b/src/offset/local/tz_info/parser.rs index d5235c951c..87364d2bc9 100644 --- a/src/offset/local/tz_info/parser.rs +++ b/src/offset/local/tz_info/parser.rs @@ -334,15 +334,16 @@ enum Version { #[cfg(test)] mod tests { + use crate::offset::local::tz_info::parser::parse; #[test] fn test_parse() { let data = b"\x54\x5a\x69\x66\x3d"; - let ans = crate::offset::local::tz_info::parser::parse(data); + let ans = parse(data); assert_eq!(format!("{:?}", ans), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); let data = b"\x0a\x0a\x0a\x0a"; - let ans = crate::offset::local::tz_info::parser::parse(data); + let ans = parse(data); assert_eq!(format!("{:?}", ans), "Err(InvalidTzFile(\"invalid magic number\"))"); } } From a07b2746e8645c868d694c59bd53534c27291915 Mon Sep 17 00:00:00 2001 From: cxworks Date: Thu, 13 Jul 2023 11:36:31 -0400 Subject: [PATCH 5/5] 1. Remove tests on external library 2. Trim the test --- src/format/scan.rs | 109 ++++++--------------------- src/offset/local/tz_info/parser.rs | 16 ---- src/offset/local/tz_info/rule.rs | 61 --------------- src/offset/local/tz_info/timezone.rs | 58 -------------- 4 files changed, 23 insertions(+), 221 deletions(-) diff --git a/src/format/scan.rs b/src/format/scan.rs index 53d8cb2dcd..16694ad5ed 100644 --- a/src/format/scan.rs +++ b/src/format/scan.rs @@ -421,6 +421,7 @@ mod tests { timezone_offset_2822, trim1, }; use crate::format::{INVALID, TOO_SHORT}; + use crate::Weekday; #[test] fn test_rfc2822_comments() { @@ -469,116 +470,52 @@ mod tests { #[test] fn test_timezone_name_skip() { - let s = "\r"; - let ans = timezone_name_skip(s); - assert!(ans.is_ok()); + assert!(timezone_name_skip("\r").is_ok()); } #[test] fn test_timezone_offset_2822() { - let s = "cSt"; - let ans = timezone_offset_2822(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-21600)))"); - - let s = "pSt"; - let ans = timezone_offset_2822(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-28800)))"); - - let s = "mSt"; - let ans = timezone_offset_2822(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-25200)))"); - - let s = "Gp"; - let ans = timezone_offset_2822(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", None))"); - - let s = "-1551"; - let ans = timezone_offset_2822(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", Some(-57060)))"); + assert_eq!(timezone_offset_2822("cSt").unwrap(), ("", Some(-21600))); + assert_eq!(timezone_offset_2822("pSt").unwrap(), ("", Some(-28800))); + assert_eq!(timezone_offset_2822("mSt").unwrap(), ("", Some(-25200))); + assert_eq!(timezone_offset_2822("-1551").unwrap(), ("", Some(-57060))); + assert_eq!(timezone_offset_2822("Gp").unwrap(), ("", None)); } #[test] fn test_short_or_long_month0() { - let s = "JUn"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 5))"); - - let s = "mAy"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 4))"); - - let s = "AuG"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 7))"); - - let s = "Aprâ"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"â\", 3))"); - - let s = "JUl"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 6))"); - - let s = "mAr"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 2))"); - - let s = "Jan"; - let ans = short_or_long_month0(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); + assert_eq!(short_or_long_month0("JUn").unwrap(), ("", 5)); + assert_eq!(short_or_long_month0("mAy").unwrap(), ("", 4)); + assert_eq!(short_or_long_month0("AuG").unwrap(), ("", 7)); + assert_eq!(short_or_long_month0("Aprâ").unwrap(), ("â", 3)); + assert_eq!(short_or_long_month0("JUl").unwrap(), ("", 6)); + assert_eq!(short_or_long_month0("mAr").unwrap(), ("", 2)); + assert_eq!(short_or_long_month0("Jan").unwrap(), ("", 0)); } #[test] fn test_short_or_long_weekday() { - let s = "sAtu"; - let ans = short_or_long_weekday(s); - assert_eq!(format!("{:?}", ans), "Ok((\"u\", Sat))"); - - let s = "thu"; - let ans = short_or_long_weekday(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", Thu))"); + assert_eq!(short_or_long_weekday("sAtu").unwrap(), ("u", Weekday::Sat)); + assert_eq!(short_or_long_weekday("thu").unwrap(), ("", Weekday::Thu)); } #[test] fn test_nanosecond_fixed() { - let s = ""; - let num = 0usize; - let ans = nanosecond_fixed(s, num); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 0))"); - - let s = ""; - let num = 1usize; - let ans = nanosecond_fixed(s, num); - assert_eq!(format!("{:?}", ans), "Err(ParseError(TooShort))"); + assert_eq!(nanosecond_fixed("", 0usize).unwrap(), ("", 0)); + assert!(nanosecond_fixed("", 1usize).is_err()); } #[test] fn test_nanosecond() { - let s = "2Ù"; - let ans = nanosecond(s); - assert_eq!(format!("{:?}", ans), "Ok((\"Ù\", 200000000))"); - - let s = "8"; - let ans = nanosecond(s); - assert_eq!(format!("{:?}", ans), "Ok((\"\", 800000000))"); + assert_eq!(nanosecond("2Ù").unwrap(), ("Ù", 200000000)); + assert_eq!(nanosecond("8").unwrap(), ("", 800000000)); } #[test] fn test_equals() { - let s = b"\x5b"; - let pattern = "["; - let ans = equals(s, pattern); - assert!(ans); - - let s = b"\x0a\x5b\x4b"; - let pattern = "[K"; - let ans = equals(s, pattern); - assert!(!ans); - - let s = b"\x00"; - let pattern = ""; - let ans = equals(s, pattern); - assert!(!ans); + assert!(equals(b"\x5b", "[")); + assert!(!equals(b"\x0a\x5b\x4b", "[K")); + assert!(!equals(b"\x00", "")); } #[test] diff --git a/src/offset/local/tz_info/parser.rs b/src/offset/local/tz_info/parser.rs index 87364d2bc9..47cc0377e4 100644 --- a/src/offset/local/tz_info/parser.rs +++ b/src/offset/local/tz_info/parser.rs @@ -331,19 +331,3 @@ enum Version { /// Version 3 V3, } - -#[cfg(test)] -mod tests { - use crate::offset::local::tz_info::parser::parse; - - #[test] - fn test_parse() { - let data = b"\x54\x5a\x69\x66\x3d"; - let ans = parse(data); - assert_eq!(format!("{:?}", ans), "Err(UnsupportedTzFile(\"unsupported TZif version\"))"); - - let data = b"\x0a\x0a\x0a\x0a"; - let ans = parse(data); - assert_eq!(format!("{:?}", ans), "Err(InvalidTzFile(\"invalid magic number\"))"); - } -} diff --git a/src/offset/local/tz_info/rule.rs b/src/offset/local/tz_info/rule.rs index d32b23c292..369e317a42 100644 --- a/src/offset/local/tz_info/rule.rs +++ b/src/offset/local/tz_info/rule.rs @@ -874,49 +874,6 @@ mod tests { Ok(()) } - #[test] - fn test_from_tz_string() { - let tz_string = b"hhh5hxx,5,1"; - let use_string_extensions = false; - assert_eq!(format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Ok(Alternate(AlternateTime { std: LocalTimeType { ut_offset: -18000, is_dst: false, name: Some(\"hhh\") }, dst: LocalTimeType { ut_offset: -14400, is_dst: true, name: Some(\"hxx\") }, dst_start: Julian0WithLeap(5), dst_start_time: 7200, dst_end: Julian0WithLeap(1), dst_end_time: 7200 }))"); - - let tz_string = b"BBf3"; - let use_string_extensions = false; - assert_eq!( - format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Ok(Fixed(LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"BBf\") }))" - ); - - let tz_string = b"V-1,1/1:62["; - let use_string_extensions = false; - assert_eq!( - format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(InvalidTzString(\"invalid day time minute\"))" - ); - - let tz_string = b"2,2212"; - let use_string_extensions = false; - assert_eq!( - format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(TransitionRule(\"invalid rule day julian day\"))" - ); - - let tz_string = b"hhh5,5,1"; - let use_string_extensions = false; - assert_eq!( - format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(LocalTimeType(\"time zone name must have between 3 and 7 characters\"))" - ); - - let tz_string = b"3,M7.4.8l"; - let use_string_extensions = true; - assert_eq!( - format!("{:?}", TransitionRule::from_tz_string(tz_string, use_string_extensions)), - "Err(TransitionRule(\"invalid rule day week day\"))" - ); - } - #[test] fn test_v3_file() -> Result<(), Error> { let bytes = b"TZif3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x04\0\0\x1c\x20\0\0IST\0TZif3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x04\0\0\0\0\x7f\xe8\x17\x80\0\0\0\x1c\x20\0\0IST\0\x01\x01\x0aIST-2IDT,M3.4.4/26,M10.5.0\x0a"; @@ -1051,24 +1008,6 @@ mod tests { Ok(()) } - #[test] - fn test_from_timespec() { - let unix_time = 8825501086245354106i64; - let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); - assert_eq!(format!("{:?}", ans), "Err(OutOfRange(\"i64 is out of range for i32\"))"); - - let unix_time = -9223372036846387200i64; - let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); - assert_eq!(format!("{:?}", ans), "Err(OutOfRange(\"out of range operation\"))"); - - let unix_time = 0; - let ans = crate::offset::local::tz_info::rule::UtcDateTime::from_timespec(unix_time); - assert_eq!( - format!("{:?}", ans), - "Ok(UtcDateTime { year: 1970, month: 1, month_day: 1, hour: 0, minute: 0, second: 0 })" - ); - } - #[test] fn test_transition_rule_overflow() -> Result<(), Error> { let transition_rule_1 = TransitionRule::from(AlternateTime::new( diff --git a/src/offset/local/tz_info/timezone.rs b/src/offset/local/tz_info/timezone.rs index 327777aaf3..d2de060237 100644 --- a/src/offset/local/tz_info/timezone.rs +++ b/src/offset/local/tz_info/timezone.rs @@ -740,25 +740,6 @@ mod tests { Ok(()) } - #[test] - fn test_from_tz_data() -> Result<(), Error> { - let bytes = b"\x54\x5a\x69\x66\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5\xb5"; - let time_zone = TimeZone::from_tz_data(bytes); - assert_eq!(format!("{:?}", time_zone), "Err(InvalidTzFile(\"invalid header\"))"); - - let bytes = b"\x0a\x0a\xae\x0a"; - let time_zone = TimeZone::from_tz_data(bytes); - assert_eq!(format!("{:?}", time_zone), "Err(InvalidTzFile(\"invalid magic number\"))"); - - let bytes = b"\x54\x5a\x69\x66\x0a"; - let time_zone = TimeZone::from_tz_data(bytes); - assert_eq!( - format!("{:?}", time_zone), - "Err(UnsupportedTzFile(\"unsupported TZif version\"))" - ); - Ok(()) - } - #[test] fn test_tz_ascii_str() -> Result<(), Error> { assert!(matches!(TimeZoneName::new(b""), Err(Error::LocalTimeType(_)))); @@ -842,45 +823,6 @@ mod tests { Ok(()) } - #[test] - fn test_time_zone_from_posix_tz_extra() -> Result<(), Error> { - //error cases - assert!(TimeZone::from_posix_tz("2,M2.2.").is_err()); - assert!(TimeZone::from_posix_tz("8T1").is_err()); - assert!(TimeZone::from_posix_tz("1,1,4").is_err()); - assert!(TimeZone::from_posix_tz("2,M2.·/").is_err()); - assert!(TimeZone::from_posix_tz("+1+").is_err()); - assert!(TimeZone::from_posix_tz("1J").is_err()); - assert!(TimeZone::from_posix_tz("1122").is_err()); - assert!(TimeZone::from_posix_tz("aaa2,2,2").is_err()); - assert!(TimeZone::from_posix_tz("2,M2.2.22÷").is_err()); - assert!(TimeZone::from_posix_tz("2,M2").is_err()); - assert!(TimeZone::from_posix_tz("/Ä").is_err()); - assert!(TimeZone::from_posix_tz("1:211").is_err()); - assert!(TimeZone::from_posix_tz("9:2:62").is_err()); - assert!(TimeZone::from_posix_tz("2,2/29").is_err()); - assert!(TimeZone::from_posix_tz("1,1,4$").is_err()); - //ok cases - if let Ok(tz) = TimeZone::from_posix_tz("aaa3aaa3,2,22") { - assert_eq!(format!("{:?}", tz), "TimeZone { \ - transitions: [], \ - local_time_types: [LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }], \ - leap_seconds: [], \ - extra_rule: Some(Alternate(AlternateTime { std: LocalTimeType { ut_offset: -10800, is_dst: false, name: Some(\"aaa\") }, dst: LocalTimeType { ut_offset: -10800, is_dst: true, name: Some(\"aaa\") }, dst_start: Julian0WithLeap(2), dst_start_time: 7200, dst_end: Julian0WithLeap(22), dst_end_time: 7200 })) \ - }"); - } - if let Ok(tz) = TimeZone::from_posix_tz("TTT8") { - assert_eq!(format!("{:?}", tz), "TimeZone { \ - transitions: [], \ - local_time_types: [LocalTimeType { ut_offset: -28800, is_dst: false, name: Some(\"TTT\") }], \ - leap_seconds: [], \ - extra_rule: Some(Fixed(LocalTimeType { ut_offset: -28800, is_dst: false, name: Some(\"TTT\") })) \ - }"); - } - - Ok(()) - } - #[test] fn test_leap_seconds() -> Result<(), Error> { let time_zone = TimeZone::new(