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 | |
parent | fc5d0bcd25059e45064478710aa2943d8369dcd0 (diff) |
Fix until being considered before end getting reps
Diffstat (limited to 'src')
-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) } |