diff options
-rw-r--r-- | src/icalwrap/icaltime.rs | 21 | ||||
-rw-r--r-- | src/icalwrap/icalvcalendar.rs | 6 | ||||
-rw-r--r-- | src/icalwrap/icalvevent.rs | 14 | ||||
-rw-r--r-- | src/khline.rs | 2 | ||||
-rw-r--r-- | testdata/testdir/cal/twodaysacrossbuckets.ics | 7 |
5 files changed, 23 insertions, 27 deletions
diff --git a/src/icalwrap/icaltime.rs b/src/icalwrap/icaltime.rs index 632c673..63e55e7 100644 --- a/src/icalwrap/icaltime.rs +++ b/src/icalwrap/icaltime.rs @@ -22,27 +22,24 @@ impl IcalTime { dateutil::now().with_timezone(&Local).into() } - pub fn from_ymd(year: i32, month: i32, day: i32) -> Self { - let utc = IcalTimeZone::utc(); + pub fn floating_ymd(year: i32, month: i32, day: i32) -> Self { let time = ical::icaltimetype{ year, month, day, hour: 0, minute: 0, second: 0, is_date: 1, is_daylight: 0, - zone: *utc + zone: ::std::ptr::null(), }; IcalTime{ time } } - pub fn from_ymdhms(year: i32, month: i32, day: i32, hour: i32, minute: i32, second: i32) -> Self { - let utc = IcalTimeZone::utc(); - let time = ical::icaltimetype{ - year, month, day, - hour, minute, second, - is_date: 0, - is_daylight: 0, - zone: *utc - }; + pub fn and_hms(&self, hour: i32, minute: i32, second: i32) -> Self { + let mut time = self.time; + time.hour = hour; + time.minute = minute; + time.second = second; + time.is_date = 0; + IcalTime{ time } } diff --git a/src/icalwrap/icalvcalendar.rs b/src/icalwrap/icalvcalendar.rs index 36eafc1..0dd0b49 100644 --- a/src/icalwrap/icalvcalendar.rs +++ b/src/icalwrap/icalvcalendar.rs @@ -507,7 +507,7 @@ mod tests { testdata::setup(); let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); - let timestamp = IcalTime::from_ymdhms(2018, 1, 1, 11, 30, 20); + let timestamp = IcalTime::floating_ymd(2018, 1, 1).and_hms(11, 30, 20); let new_cal = cal.with_dtend(×tamp); let event = new_cal.get_principal_event(); @@ -519,7 +519,7 @@ mod tests { testdata::setup(); let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); - let timestamp = IcalTime::from_ymdhms(2018, 1, 1, 11, 30, 20); + let timestamp = IcalTime::floating_ymd(2018, 1, 1).and_hms(11, 30, 20); let new_cal = cal.with_dtstart(×tamp); let event = new_cal.get_principal_event(); @@ -530,7 +530,7 @@ mod tests { fn test_with_internal_timestamp() { let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); - let timestamp = IcalTime::from_ymdhms(2018, 1, 1, 11, 30, 20); + let timestamp = IcalTime::floating_ymd(2018, 1, 1).and_hms(11, 30, 20); let new_cal = cal.with_internal_timestamp(×tamp); let event = new_cal.get_principal_event(); diff --git a/src/icalwrap/icalvevent.rs b/src/icalwrap/icalvevent.rs index 0e13718..f4adf0f 100644 --- a/src/icalwrap/icalvevent.rs +++ b/src/icalwrap/icalvevent.rs @@ -215,8 +215,8 @@ mod tests { testdata::setup(); let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_RECUR, None).unwrap(); let event = cal.get_principal_event(); - assert_eq!(IcalTime::from_ymd(2018, 10, 11), event.get_dtstart().unwrap()); - assert_eq!(IcalTime::from_ymd(2018, 10, 13), event.get_dtend().unwrap()); + assert_eq!(IcalTime::floating_ymd(2018, 10, 11), event.get_dtstart().unwrap()); + assert_eq!(IcalTime::floating_ymd(2018, 10, 13), event.get_dtend().unwrap()); assert_eq!("RRULE:FREQ=WEEKLY;COUNT=10", event.get_property(ical::icalproperty_kind_ICAL_RRULE_PROPERTY).unwrap().as_ical_string()); assert_eq!(10, event.get_recur_datetimes().len()); assert_eq!(10, event.get_recur_instances().count()); @@ -311,7 +311,7 @@ mod tests { fn test_is_recur_master_instance() { let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_RECUR, None).unwrap(); let event = cal.get_principal_event(); - let event = event.with_internal_timestamp(&IcalTime::from_ymd(2018, 01, 01)); + let event = event.with_internal_timestamp(&IcalTime::floating_ymd(2018, 01, 01)); assert!(!event.is_recur_master()); } @@ -328,8 +328,8 @@ mod tests { let event = cal.get_principal_event(); let mut recur_instances = event.get_recur_instances(); let local = IcalTimeZone::local(); - assert_eq!(IcalTime::from_ymd(2018, 10, 11).with_timezone(&local), recur_instances.next().unwrap().get_dtstart().unwrap()); - assert_eq!(IcalTime::from_ymd(2018, 10, 18).with_timezone(&local), recur_instances.next().unwrap().get_dtstart().unwrap()); + assert_eq!(IcalTime::floating_ymd(2018, 10, 11).with_timezone(&local), recur_instances.next().unwrap().get_dtstart().unwrap()); + assert_eq!(IcalTime::floating_ymd(2018, 10, 18).with_timezone(&local), recur_instances.next().unwrap().get_dtstart().unwrap()); } #[test] @@ -355,7 +355,7 @@ mod tests { let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_RECUR, None).unwrap(); let event = cal.get_principal_event(); - let event = event.with_internal_timestamp(&IcalTime::from_ymd(2010, 01, 01)); + let event = event.with_internal_timestamp(&IcalTime::floating_ymd(2010, 01, 01)); assert!(!event.is_recur_valid()); } @@ -365,7 +365,7 @@ mod tests { let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_RECUR, None).unwrap(); let event = cal.get_principal_event(); - let event = event.with_internal_timestamp(&IcalTime::from_ymd(2018, 10, 25)); + let event = event.with_internal_timestamp(&IcalTime::floating_ymd(2018, 10, 25)); assert!(event.is_recur_valid()); } diff --git a/src/khline.rs b/src/khline.rs index 24cd052..a1fb825 100644 --- a/src/khline.rs +++ b/src/khline.rs @@ -212,7 +212,7 @@ mod tests { event.get_parent().unwrap().get_path().unwrap() ); assert_eq!( - IcalTime::from_ymdhms(2018, 12, 13, 22, 30, 00), + IcalTime::floating_ymd(2018, 12, 13).and_hms(23, 30, 00), event.get_dtstart().unwrap() ); } diff --git a/testdata/testdir/cal/twodaysacrossbuckets.ics b/testdata/testdir/cal/twodaysacrossbuckets.ics index ff238b2..c7843f0 100644 --- a/testdata/testdir/cal/twodaysacrossbuckets.ics +++ b/testdata/testdir/cal/twodaysacrossbuckets.ics @@ -3,8 +3,7 @@ VERSION:2.0 CALSCALE:GREGORIAN PRODID:-//Ximian//NONSGML Evolution Calendar//EN BEGIN:VTIMEZONE -TZID:/freeassociation.sourceforge.net/Europe/Berlin -X-LIC-LOCATION:Europe/Berlin +TZID:mytestzone BEGIN:STANDARD TZNAME:CET DTSTART:19701028T030000 @@ -23,8 +22,8 @@ END:VTIMEZONE BEGIN:VEVENT UID:20181129T142636Z-11617-1000-1-0@pool-4-4 DTSTAMP:20181129T092002Z -DTSTART;TZID=/freeassociation.sourceforge.net/Europe/Berlin:20181213T233000 -DTEND;TZID=/freeassociation.sourceforge.net/Europe/Berlin:20181217T193000 +DTSTART;TZID=mytestzone:20181213T233000 +DTEND;TZID=mytestzone:20181217T193000 SEQUENCE:2 SUMMARY:shows up on two days END:VEVENT |