From 814a3ee894f6458ae43610ca7cc4058087c4b686 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 11:41:20 +0100 Subject: Add test for invalid month or day date Signed-off-by: Matthias Beyer --- src/time.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/time.rs b/src/time.rs index 2fe4a33..27ad2f8 100644 --- a/src/time.rs +++ b/src/time.rs @@ -299,4 +299,16 @@ mod tests { let time = IcalTime::utc(); assert_eq!("20130102T010203Z", time.succ().to_string()); } + + #[test] + fn test_invalid_month() { + let time = IcalTime::floating_ymd(2000, 13, 1); + assert_eq!("20010101", time.to_string()); + } + + #[test] + fn test_invalid_day() { + let time = IcalTime::floating_ymd(2000, 12, 32); + assert_eq!("20010101", time.to_string()); + } } -- cgit v1.2.3 From bcd54934a707e8bdc3a125d56307d19856252d7f Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 11:42:28 +0100 Subject: Fix: Normalize time before instantiating object Signed-off-by: Matthias Beyer --- src/time.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/time.rs b/src/time.rs index 27ad2f8..4c32785 100644 --- a/src/time.rs +++ b/src/time.rs @@ -35,6 +35,7 @@ impl IcalTime { is_daylight: 0, zone: ::std::ptr::null(), }; + let time = unsafe { ical::icaltime_normalize(time) }; IcalTime { time } } -- cgit v1.2.3 From ed93f2e071d82f49efa5434468bbc3271c49627b Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 11:46:02 +0100 Subject: Add tests for invalid hour, minute and second Signed-off-by: Matthias Beyer --- src/time.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/time.rs b/src/time.rs index 4c32785..0d1f190 100644 --- a/src/time.rs +++ b/src/time.rs @@ -312,4 +312,22 @@ mod tests { let time = IcalTime::floating_ymd(2000, 12, 32); assert_eq!("20010101", time.to_string()); } + + #[test] + fn test_invalid_hour() { + let time = IcalTime::floating_ymd(2000, 12, 31).and_hms(25, 0, 0); + assert_eq!("20010101T010000", time.to_string()); + } + + #[test] + fn test_invalid_minute() { + let time = IcalTime::floating_ymd(2000, 12, 31).and_hms(24, 61, 0); + assert_eq!("20010101T010100", time.to_string()); + } + + #[test] + fn test_invalid_second() { + let time = IcalTime::floating_ymd(2000, 12, 31).and_hms(24, 60, 61); + assert_eq!("20010101T010101", time.to_string()); + } } -- cgit v1.2.3 From 4bbae9b4340c273405023b9a4016211c5fce1576 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 11:46:20 +0100 Subject: Fix: Normalize time before instantiating new IcalTime object in and_hms() Signed-off-by: Matthias Beyer --- src/time.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/time.rs b/src/time.rs index 0d1f190..28a94a1 100644 --- a/src/time.rs +++ b/src/time.rs @@ -46,6 +46,8 @@ impl IcalTime { time.second = second; time.is_date = 0; + let time = unsafe { ical::icaltime_normalize(time) }; + IcalTime { time } } -- cgit v1.2.3