diff options
author | Fredrik Meringdal <fmeringdal@hotmail.com> | 2020-10-25 21:04:24 +0100 |
---|---|---|
committer | Fredrik Meringdal <fmeringdal@hotmail.com> | 2020-10-25 21:04:24 +0100 |
commit | 6a9c33a36255cf0f34f35446c22ea98434a566f0 (patch) | |
tree | 35241a0254a3abd2dd38ba73ad8e728cc5f8aee6 | |
parent | 9a1821ae33ad4535000d6790b690f8efa2d76d0f (diff) | |
download | rust_rrule-6a9c33a36255cf0f34f35446c22ea98434a566f0.zip |
Progress on timezone support
-rw-r--r-- | src/iter.rs | 45 | ||||
-rw-r--r-- | src/iter_set.rs | 19 | ||||
-rw-r--r-- | src/options.rs | 3 | ||||
-rw-r--r-- | src/parse_options.rs | 11 | ||||
-rw-r--r-- | src/poslist.rs | 9 | ||||
-rw-r--r-- | src/rrule.rs | 4 | ||||
-rw-r--r-- | src/rruleset.rs | 74 | ||||
-rw-r--r-- | src/rrulestr.rs | 13 | ||||
-rw-r--r-- | tests/rrule.rs | 310 |
9 files changed, 229 insertions, 259 deletions
diff --git a/src/iter.rs b/src/iter.rs index 738cc26..6922ed4 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -2,17 +2,16 @@ use crate::datetime::*; use crate::iter_set::IterResult; use crate::iterinfo::*; use crate::options::*; -use crate::poslist::*; use crate::yearinfo::*; use chrono::prelude::*; use chrono::Duration; use chrono_tz::Tz; pub enum QueryMethodTypes { - ALL, - BETWEEN, - BEFORE, - AFTER, + All, + Between, + Before, + After, } pub struct IterArgs { @@ -34,17 +33,17 @@ pub struct RRuleIterRes { impl RRuleIterRes { pub fn new(method: QueryMethodTypes, args: IterArgs) -> Self { let (max_date, min_date) = match method { - QueryMethodTypes::BETWEEN if args.inc => { + QueryMethodTypes::Between if args.inc => { (Some(args.before.unwrap()), Some(args.after.unwrap())) } - QueryMethodTypes::BETWEEN => ( + QueryMethodTypes::Between => ( Some(args.before.unwrap() - Duration::milliseconds(1)), Some(args.after.unwrap() + Duration::milliseconds(1)), ), - QueryMethodTypes::BEFORE if args.inc => (Some(args.dt.unwrap()), None), - QueryMethodTypes::BEFORE => (Some(args.dt.unwrap() - Duration::milliseconds(1)), None), - QueryMethodTypes::AFTER if args.inc => (None, Some(args.dt.unwrap())), - QueryMethodTypes::AFTER => (None, Some(args.dt.unwrap() + Duration::milliseconds(1))), + QueryMethodTypes::Before if args.inc => (Some(args.dt.unwrap()), None), + QueryMethodTypes::Before => (Some(args.dt.unwrap() - Duration::milliseconds(1)), None), + QueryMethodTypes::After if args.inc => (None, Some(args.dt.unwrap())), + QueryMethodTypes::After => (None, Some(args.dt.unwrap() + Duration::milliseconds(1))), _ => (None, None), }; @@ -71,11 +70,11 @@ impl IterResult for RRuleIterRes { let too_late = self.max_date.is_some() && date > self.max_date.unwrap(); match self.method { - QueryMethodTypes::BETWEEN if too_early => true, - QueryMethodTypes::BETWEEN if too_late => false, - QueryMethodTypes::BEFORE if too_late => false, - QueryMethodTypes::AFTER if too_early => true, - QueryMethodTypes::AFTER => { + QueryMethodTypes::Between if too_early => true, + QueryMethodTypes::Between if too_late => false, + QueryMethodTypes::Before if too_late => false, + QueryMethodTypes::After if too_early => true, + QueryMethodTypes::After => { self.add(date); false } @@ -86,7 +85,7 @@ impl IterResult for RRuleIterRes { // before and after returns only one date whereas all and between an array fn get_value(&self) -> Vec<DateTime<Tz>> { match self.method { - QueryMethodTypes::BETWEEN | QueryMethodTypes::ALL => self.result.clone(), + QueryMethodTypes::Between | QueryMethodTypes::All => self.result.clone(), _ => { if self.result.is_empty() { return vec![]; @@ -232,11 +231,7 @@ pub fn remove_filtered_days( pub fn build_timeset(options: &ParsedOptions) -> Vec<Time> { let millisecond_mod = (options.dtstart.timestamp_millis() & 1000) as usize; - if !(options.freq == Frequenzy::Daily - || options.freq == Frequenzy::Monthly - || options.freq == Frequenzy::Weekly - || options.freq == Frequenzy::Yearly) - { + if options.freq > Frequenzy::Daily { return vec![]; } @@ -257,11 +252,7 @@ pub fn make_timeset( counter_date: &DateTime<Utc>, options: &ParsedOptions, ) -> Vec<Time> { - if options.freq == Frequenzy::Daily - || options.freq == Frequenzy::Monthly - || options.freq == Frequenzy::Weekly - || options.freq == Frequenzy::Yearly - { + if options.freq < Frequenzy::Hourly { return build_timeset(options); } diff --git a/src/iter_set.rs b/src/iter_set.rs index e3c37db..3e96231 100644 --- a/src/iter_set.rs +++ b/src/iter_set.rs @@ -2,12 +2,10 @@ use crate::iter::*; use crate::iterinfo::*; use crate::options::*; use crate::poslist::*; -use crate::rrule::*; use chrono::offset::TimeZone; use chrono::prelude::*; -use chrono::{DateTime, Duration, Utc}; +use chrono::{DateTime, Utc}; use chrono_tz::*; -use std::collections::HashMap; pub trait IterResult { fn accept(&mut self, date: DateTime<Tz>) -> bool; @@ -18,6 +16,7 @@ pub fn iter_v2<T: IterResult>( iter_result: &mut T, options: &mut ParsedOptions, ) -> Vec<DateTime<Tz>> { + if (options.count.is_some() && options.count.unwrap() == 0) || options.interval == 0 { return iter_result.get_value(); } @@ -48,7 +47,7 @@ pub fn iter_v2<T: IterResult>( let filtered = remove_filtered_days(&mut dayset, start, end, &ii, options); if not_empty(&options.bysetpos) { - let poslist = build_poslist(&options.bysetpos, ×et, start, end, &ii, &dayset); + let poslist = build_poslist(&options.bysetpos, ×et, start, end, &ii, &dayset, &options.tzid); for j in 0..poslist.len() { let res = poslist[j]; @@ -58,9 +57,9 @@ pub fn iter_v2<T: IterResult>( if res >= options.dtstart { //let rezoned_date = rezone_if_needed(&res, &options); - let rezoned_date = UTC.timestamp(res.timestamp(), 0); + // let rezoned_date = UTC.timestamp(res.timestamp(), 0); - if !iter_result.accept(rezoned_date) { + if !iter_result.accept(res) { return iter_result.get_value(); } @@ -82,7 +81,7 @@ pub fn iter_v2<T: IterResult>( let current_day = current_day.unwrap(); let date = from_ordinal(ii.yearordinal().unwrap() + current_day); for k in 0..timeset.len() { - let res = Utc.ymd(date.year(), date.month(), date.day()).and_hms( + let res = options.tzid.ymd(date.year(), date.month(), date.day()).and_hms( timeset[k].hour as u32, timeset[k].minute as u32, timeset[k].second as u32, @@ -92,9 +91,11 @@ pub fn iter_v2<T: IterResult>( } if res >= options.dtstart { //let rezoned_date = rezone_if_needed(&res, &options); - let rezoned_date = UTC.timestamp(res.timestamp(), 0); + // let rezoned_date = UTC.timestamp(res.timestamp(), 0); + // let rezoned_date = tzid.from_utc_datetime(&res.naive_utc()); + // let rezoned_date = res.with_timezone(&options.tzid); - if !iter_result.accept(rezoned_date) { + if !iter_result.accept(res) { return iter_result.get_value(); } if count > 0 { diff --git a/src/options.rs b/src/options.rs index e29d8fe..2bface8 100644 --- a/src/options.rs +++ b/src/options.rs @@ -1,4 +1,5 @@ use chrono::prelude::*; +use chrono_tz::Tz; #[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Frequenzy { @@ -17,7 +18,7 @@ pub struct ParsedOptions { pub interval: usize, pub count: Option<u32>, pub until: Option<DateTime<Utc>>, - pub tzid: Option<String>, + pub tzid: Tz, pub dtstart: DateTime<Utc>, pub wkst: usize, pub bysetpos: Vec<isize>, diff --git a/src/parse_options.rs b/src/parse_options.rs index 4071cbc..2df90be 100644 --- a/src/parse_options.rs +++ b/src/parse_options.rs @@ -1,5 +1,6 @@ use chrono::prelude::*; use crate::options::{ParsedOptions, Frequenzy, PartialOptions}; +use chrono_tz::{Tz, UTC}; // TODO: make this method on partialoptions struct pub fn parse_options(options: &PartialOptions) -> ParsedOptions { @@ -8,6 +9,12 @@ pub fn parse_options(options: &PartialOptions) -> ParsedOptions { default_partial_options.freq = Some(Frequenzy::Yearly); default_partial_options.wkst = Some(0); + let tzid: Tz = if options.tzid.is_some() { + options.tzid.clone().unwrap().parse().unwrap() + } else { + UTC + }; + let mut partial_options = PartialOptions::concat(&default_partial_options, options); if partial_options.byeaster.is_some() { @@ -43,7 +50,7 @@ pub fn parse_options(options: &PartialOptions) -> ParsedOptions { ) { match &freq { Frequenzy::Yearly => { - if let Some(bymonth) = partial_options.bymonth { + if partial_options.bymonth.is_none() { partial_options.bymonth = Some(vec![partial_options.dtstart.unwrap().month() as usize]); } partial_options.bymonthday = Some(vec![partial_options.dtstart.unwrap().day() as isize]); @@ -103,7 +110,7 @@ pub fn parse_options(options: &PartialOptions) -> ParsedOptions { interval: partial_options.interval.unwrap(), count: partial_options.count, until: partial_options.until, - tzid: partial_options.tzid, + tzid, dtstart: partial_options.dtstart.unwrap(), wkst: partial_options.wkst.unwrap(), bysetpos: partial_options.bysetpos.unwrap_or(vec![]), diff --git a/src/poslist.rs b/src/poslist.rs index 1dfb04b..94ad6e9 100644 --- a/src/poslist.rs +++ b/src/poslist.rs @@ -2,6 +2,7 @@ use crate::datetime::*; use crate::iterinfo::*; use crate::yearinfo::*; use chrono::prelude::*; +use chrono_tz::Tz; pub fn from_ordinal(ordinal: isize) -> DateTime<Utc> { let timestamp = ordinal * 24 * 60 * 60; @@ -16,8 +17,9 @@ pub fn build_poslist( end: usize, ii: &IterInfo, dayset: &Vec<Option<isize>>, -) -> Vec<DateTime<Utc>> { - let mut poslist: Vec<DateTime<Utc>> = vec![]; + tz: &Tz +) -> Vec<DateTime<Tz>> { + let mut poslist = vec![]; for j in 0..bysetpost.len() { let daypos; @@ -48,8 +50,7 @@ pub fn build_poslist( } let date = from_ordinal(ii.yearordinal().unwrap() + i); - // const res = dateutil.combine(date, time) - let res = Utc.ymd(date.year(), date.month(), date.day()).and_hms( + let res = tz.ymd(date.year(), date.month(), date.day()).and_hms( timeset[timepos as usize].hour as u32, timeset[timepos as usize].minute as u32, timeset[timepos as usize].second as u32, diff --git a/src/rrule.rs b/src/rrule.rs index 8e8f192..08ebd7d 100644 --- a/src/rrule.rs +++ b/src/rrule.rs @@ -23,7 +23,7 @@ impl RRule { after: None, dt: None, }; - let mut iter_res = RRuleIterRes::new(QueryMethodTypes::ALL, iter_args); + let mut iter_res = RRuleIterRes::new(QueryMethodTypes::All, iter_args); let res = iter_v2(&mut iter_res, &mut self.options); res @@ -41,7 +41,7 @@ impl RRule { after: Some(after.clone()), dt: None, }; - let mut iter_res = RRuleIterRes::new(QueryMethodTypes::ALL, iter_args); + let mut iter_res = RRuleIterRes::new(QueryMethodTypes::All, iter_args); let res = iter_v2(&mut iter_res, &mut self.options); res diff --git a/src/rruleset.rs b/src/rruleset.rs index 63e3145..ab8437f 100644 --- a/src/rruleset.rs +++ b/src/rruleset.rs @@ -29,7 +29,7 @@ impl<'a> RRuleSetIter<'a> { after: None, dt: None, }; - let iter_res = RRuleIterRes::new(QueryMethodTypes::ALL, iter_args); + let iter_res = RRuleIterRes::new(QueryMethodTypes::All, iter_args); Self { exdate_hash: HashMap::new(), @@ -45,7 +45,7 @@ impl<'a> RRuleSetIter<'a> { after: None, dt: Some(dt), }; - let iter_res = RRuleIterRes::new(QueryMethodTypes::BEFORE, iter_args); + let iter_res = RRuleIterRes::new(QueryMethodTypes::Before, iter_args); Self { exdate_hash: HashMap::new(), @@ -61,7 +61,7 @@ impl<'a> RRuleSetIter<'a> { after: None, dt: Some(dt), }; - let iter_res = RRuleIterRes::new(QueryMethodTypes::AFTER, iter_args); + let iter_res = RRuleIterRes::new(QueryMethodTypes::After, iter_args); Self { exdate_hash: HashMap::new(), @@ -82,7 +82,7 @@ impl<'a> RRuleSetIter<'a> { after: Some(after), dt: None, }; - let iter_res = RRuleIterRes::new(QueryMethodTypes::BETWEEN, iter_args); + let iter_res = RRuleIterRes::new(QueryMethodTypes::Between, iter_args); Self { exdate_hash: HashMap::new(), @@ -133,7 +133,7 @@ impl<'a> RRuleSetIter<'a> { } match &self.iter_res.method { - QueryMethodTypes::BETWEEN => { + QueryMethodTypes::Between => { self.eval_exdate( &self.iter_res.args.after.unwrap().clone(), &self.iter_res.args.before.unwrap().clone(), @@ -162,7 +162,7 @@ impl<'a> RRuleSetIter<'a> { impl<'a> IterResult for RRuleSetIter<'a> { fn accept(&mut self, date: DateTime<Tz>) -> bool { match &self.iter_res.method { - QueryMethodTypes::BETWEEN => self.accept_1(date), + QueryMethodTypes::Between => self.accept_1(date), _ => self.accept_2(date), } } @@ -233,42 +233,6 @@ impl RRuleSet { let mut iter = RRuleSetIter::from_between(self, after, before, inc); iter.iter(None) } - - pub fn value_of(&mut self) -> Vec<String> { - let mut result = vec![]; - - if !self.rrule.is_empty() && self.dtstart.is_some() { - result.push(String::from("yeah")); - } - - for rrule in &self.rrule { - // result = result.concat(rrule.toString().split('\n')) - result.push(String::from("test")); - } - - for exrule in &self.exrule { - //result = result.concat( - //exrule.toString().split('\n') - //.map(line => line.replace(/^RRULE:/, 'EXRULE:')) - //.filter(line => !/^DTSTART/.test(line)) - //) - result.push(String::from("hi")); - } - - if !self.rdate.is_empty() { - //result.push( - //rdatesToString('RDATE', this._rdate, this.tzid()) - //) - } - - if !self.exdate.is_empty() { - //result.push( - //rdatesToString('EXDATE', this._exdate, this.tzid()) - //) - } - - result - } } #[cfg(test)] @@ -331,7 +295,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -354,7 +318,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -424,7 +388,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -462,7 +426,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -504,7 +468,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -528,7 +492,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -566,7 +530,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -590,7 +554,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -624,7 +588,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -648,7 +612,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -682,7 +646,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -706,7 +670,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -748,7 +712,7 @@ mod test_iter_set { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; diff --git a/src/rrulestr.rs b/src/rrulestr.rs index c1bfc67..1f90b4a 100644 --- a/src/rrulestr.rs +++ b/src/rrulestr.rs @@ -4,7 +4,7 @@ use crate::rrule::RRule; use crate::rruleset::RRuleSet; use chrono::prelude::*; use chrono::DateTime; -use chrono_tz::Tz; +use chrono_tz::{Tz, UTC}; use once_cell::sync::Lazy; use regex::Regex; @@ -13,7 +13,7 @@ static DATESTR_RE: Lazy<Regex> = static DTSTART_RE: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?m)DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)").unwrap()); -static RRUle_RE: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?m)^(?:RRULE|EXRULE):").unwrap()); +static RRULE_RE: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?m)^(?:RRULE|EXRULE):").unwrap()); @@ -75,7 +75,7 @@ fn parse_rrule(line: &str) -> PartialOptions { let mut options = parse_dtstart(stripped_line).unwrap_or(PartialOptions::new()); - let attrs = RRUle_RE.replace(line, ""); + let attrs = RRULE_RE.replace(line, ""); let attrs = attrs.split(";"); for attr in attrs { @@ -434,9 +434,14 @@ mod test { #[test] fn it_works_3() { - let options = build_rule("RRULE:UNTIL=19990404T110000Z;DTSTART;TZID=America/New_York:19990104T110000Z;FREQ=WEEKLY;BYDAY=TU,WE"); + let mut options = build_rule("RRULE:UNTIL=19990404T110000Z;DTSTART;TZID=America/Denver:19990104T110000Z;FREQ=WEEKLY;BYDAY=TU,WE"); println!("?????????????=================?????????????"); println!("{:?}", options); + let tzid: Tz = "America/Denver".parse().unwrap(); + println!("?????????????=== ALLL ==============?????????????"); + println!("{:?}", options.all().into_iter().take(2).collect::<Vec<DateTime<Tz>>>()); + println!("{:?}", options.all().iter().take(2).map(|d| d.with_timezone(&UTC)).collect::<Vec<DateTime<Tz>>>()); + println!("Diff : {:?}", options.all()[0].timestamp() - options.all()[0].with_timezone(&UTC).timestamp()); } #[test] diff --git a/tests/rrule.rs b/tests/rrule.rs index 6c5ffa3..fe8a814 100644 --- a/tests/rrule.rs +++ b/tests/rrule.rs @@ -56,7 +56,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -89,7 +89,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -122,7 +122,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 40, byeaster: None, }; @@ -155,7 +155,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(0), }; @@ -188,7 +188,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(1), }; @@ -221,7 +221,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(-2), }; @@ -254,7 +254,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -287,7 +287,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -320,7 +320,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -353,7 +353,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -386,7 +386,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -419,7 +419,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -452,7 +452,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -485,7 +485,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -518,7 +518,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -551,7 +551,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -584,7 +584,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -617,7 +617,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -651,7 +651,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -685,7 +685,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -719,7 +719,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -752,7 +752,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -785,7 +785,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -818,7 +818,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -851,7 +851,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -884,7 +884,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -917,7 +917,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -950,7 +950,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -983,7 +983,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1016,7 +1016,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1049,7 +1049,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1082,7 +1082,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1115,7 +1115,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1148,7 +1148,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1181,7 +1181,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -1214,7 +1214,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 18, byeaster: None, }; @@ -1247,7 +1247,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(0), }; @@ -1280,7 +1280,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(1), }; @@ -1313,7 +1313,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: Some(-2), }; @@ -1346,7 +1346,7 @@ mod test { bynmonthday: vec![-1], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1380,7 +1380,7 @@ mod test { bynmonthday: vec![-1], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1414,7 +1414,7 @@ mod test { bynmonthday: vec![-1, -3], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1450,7 +1450,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1483,7 +1483,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1516,7 +1516,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1549,7 +1549,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1582,7 +1582,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1615,7 +1615,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1648,7 +1648,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1681,7 +1681,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1714,7 +1714,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1747,7 +1747,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1780,7 +1780,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1813,7 +1813,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1847,7 +1847,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1881,7 +1881,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1915,7 +1915,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1950,7 +1950,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -1985,7 +1985,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2018,7 +2018,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2051,7 +2051,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2084,7 +2084,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2117,7 +2117,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2150,7 +2150,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2183,7 +2183,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2216,7 +2216,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2249,7 +2249,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2282,7 +2282,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2315,7 +2315,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2348,7 +2348,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2381,7 +2381,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -2414,7 +2414,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 20, byeaster: None, }; @@ -2447,7 +2447,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2483,7 +2483,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2516,7 +2516,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2549,7 +2549,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2583,7 +2583,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2616,7 +2616,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2649,7 +2649,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2682,7 +2682,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2715,7 +2715,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2749,7 +2749,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2783,7 +2783,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2817,7 +2817,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2850,7 +2850,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2883,7 +2883,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2916,7 +2916,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2949,7 +2949,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -2982,7 +2982,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3015,7 +3015,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3048,7 +3048,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3081,7 +3081,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3114,7 +3114,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3147,7 +3147,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3180,7 +3180,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3215,7 +3215,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3248,7 +3248,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3281,7 +3281,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -3314,7 +3314,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 92, byeaster: None, }; @@ -3347,7 +3347,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3380,7 +3380,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3413,7 +3413,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3446,7 +3446,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3479,7 +3479,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3512,7 +3512,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3545,7 +3545,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3578,7 +3578,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3612,7 +3612,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3646,7 +3646,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3680,7 +3680,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3715,7 +3715,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3750,7 +3750,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3783,7 +3783,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3816,7 +3816,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3849,7 +3849,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3882,7 +3882,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3915,7 +3915,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3948,7 +3948,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -3981,7 +3981,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4014,7 +4014,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4047,7 +4047,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4080,7 +4080,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4113,7 +4113,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4146,7 +4146,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -4179,7 +4179,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 769, byeaster: None, }; @@ -4212,7 +4212,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4245,7 +4245,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4278,7 +4278,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4311,7 +4311,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 5, byeaster: None, }; @@ -4346,7 +4346,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4379,7 +4379,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4412,7 +4412,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4445,7 +4445,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 12, byeaster: None, }; @@ -4483,7 +4483,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 12, byeaster: None, }; @@ -4521,7 +4521,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4555,7 +4555,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4588,7 +4588,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4621,7 +4621,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4654,7 +4654,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4687,7 +4687,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4720,7 +4720,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4753,7 +4753,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4786,7 +4786,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4819,7 +4819,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4852,7 +4852,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4885,7 +4885,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4918,7 +4918,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4953,7 +4953,7 @@ mod test { bynmonthday: vec![], until: None, wkst: 0, - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -4986,7 +4986,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -5019,7 +5019,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -5052,7 +5052,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -5078,7 +5078,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -5104,7 +5104,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 1, byeaster: None, }; @@ -5137,7 +5137,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; @@ -5170,7 +5170,7 @@ mod test { bymonthday: vec![], bynweekday: vec![], bynmonthday: vec![], - tzid: None, + tzid: UTC, interval: 2, byeaster: None, }; |