diff options
| author | Joris | 2022-03-20 12:56:16 +0100 | 
|---|---|---|
| committer | Joris | 2022-03-20 12:56:16 +0100 | 
| commit | 6277be699e613756fb786a524f71ddbe509ab81e (patch) | |
| tree | fa78cb941f2d66c212825d67758766cbf45d1310 /src/model | |
| parent | fc5d0bcd25059e45064478710aa2943d8369dcd0 (diff) | |
Fix until being considered before end getting reps
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/repetition.rs | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/src/model/repetition.rs b/src/model/repetition.rs index eb8cb6d..155545f 100644 --- a/src/model/repetition.rs +++ b/src/model/repetition.rs @@ -49,7 +49,7 @@ impl Repetition {          let repeat = |mut date, next: Box<dyn Fn(NaiveDate) -> NaiveDate>| {              let mut repetitions = vec![];              let mut iteration: usize = 0; -            let end = self.until.unwrap_or(end); +            let end = self.until.map(|u| u.min(end)).unwrap_or(end);              while date <= end {                  if date >= event {                      if date >= start && !self.removed_occurences.contains(&iteration) { @@ -276,6 +276,19 @@ mod tests {          )      } +    #[test] +    fn repetition_daily_after_day() { +        let repetition = Repetition { +            frequency: Frequency::Daily { period: 1 }, +            removed_occurences: HashSet::new(), +            until: Some(d(2022, 4, 17)), +        }; +        assert_eq!( +            repetition.between(d(2022, 4, 4), d(2022, 3, 20), d(2022, 3, 20)), +            vec!() +        ) +    } +      fn d(y: i32, m: u32, d: u32) -> NaiveDate {          NaiveDate::from_ymd(y, m, d)      } | 
