summaryrefslogtreecommitdiff
path: root/src/rrulestr.rs
diff options
context:
space:
mode:
authorFredrik Meringdal <fmeringdal@hotmail.com>2020-12-16 16:32:26 +0100
committerFredrik Meringdal <fmeringdal@hotmail.com>2020-12-16 16:32:26 +0100
commit2c70b134b5d6bd8a49749fed348ae0e6958f8455 (patch)
tree4b6024c8795071f5984e59287cdd65169a4ce1b5 /src/rrulestr.rs
parent0060c162120c96dabbd78113c29d516d83828f14 (diff)
downloadrust_rrule-2c70b134b5d6bd8a49749fed348ae0e6958f8455.zip
numeric identifier when n=1 bug
Diffstat (limited to 'src/rrulestr.rs')
-rw-r--r--src/rrulestr.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/rrulestr.rs b/src/rrulestr.rs
index 756a5ae..0ca4451 100644
--- a/src/rrulestr.rs
+++ b/src/rrulestr.rs
@@ -270,7 +270,7 @@ fn parse_weekday(val: &str) -> Result<Vec<NWeekday>, RRuleParseError> {
if day.len() == 2 {
// MO, TU, ...
let wday = str_to_weekday(day)?;
- wdays.push(NWeekday::new(wday, 1));
+ wdays.push(NWeekday::new(wday, NWeekdayIdentifier::Every));
continue;
}
@@ -278,7 +278,7 @@ fn parse_weekday(val: &str) -> Result<Vec<NWeekday>, RRuleParseError> {
let n = parts.get(1).unwrap().as_str().parse().unwrap();
let wdaypart = parts.get(2).unwrap();
let wday = str_to_weekday(wdaypart.as_str())?;
- wdays.push(NWeekday::new(wday, n));
+ wdays.push(NWeekday::new(wday, NWeekdayIdentifier::Identifier(n)));
}
Ok(wdays)
}
@@ -568,6 +568,7 @@ pub fn build_rrule(s: &str) -> Result<RRule, RRuleParseError> {
#[cfg(test)]
mod test {
use super::*;
+ use super::NWeekdayIdentifier;
use chrono_tz::{Tz, UTC};
#[test]
@@ -674,6 +675,12 @@ mod test {
}
#[test]
+ fn parses_byday_as_nweekday_when_n_is_first() {
+ let res = build_rrule("DTSTART;VALUE=DATE:20200701\nRRULE:FREQ=MONTHLY;UNTIL=20210303T090000Z;INTERVAL=1;BYDAY=1WE").unwrap();
+ assert_eq!(res.options.bynweekday, vec![vec![2,1]]);
+ }
+
+ #[test]
fn parses_byday_with_n() {
let cases = vec![
"DTSTART:20200901T174500\nRRULE:FREQ=MONTHLY;UNTIL=20210504T154500Z;INTERVAL=1;BYDAY=1TU",
@@ -693,11 +700,11 @@ mod test {
"RRULE:FREQ=MONTHLY;UNTIL=20210524T090000Z;INTERVAL=1;BYDAY=4MO",
];
let opts = vec![
- vec![NWeekday::new(1,1)],
- vec![NWeekday::new(2,1)],
- vec![NWeekday::new(2,-1)],
- vec![NWeekday::new(6, 12)],
- vec![NWeekday::new(0,4)]
+ vec![NWeekday::new(1, NWeekdayIdentifier::Identifier(1))],
+ vec![NWeekday::new(2, NWeekdayIdentifier::Identifier(1))],
+ vec![NWeekday::new(2,NWeekdayIdentifier::Identifier(-1))],
+ vec![NWeekday::new(6, NWeekdayIdentifier::Identifier(12))],
+ vec![NWeekday::new(0,NWeekdayIdentifier::Identifier(4))]
];
for i in 0..cases.len() {
let opts_or_err = parse_string(cases[i]);