From 662dbbd4caf8f3d9af0e8f7b7db9655b460cb421 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Sat, 18 Mar 2023 02:48:50 +0100 Subject: [PATCH] Fix new limit being decremented unduly (#2447) --- rslib/src/decks/limits.rs | 13 ++++++++----- rslib/src/scheduler/queue/builder/mod.rs | 10 ++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/rslib/src/decks/limits.rs b/rslib/src/decks/limits.rs index 54f0b8a96..7f6a93d50 100644 --- a/rslib/src/decks/limits.rs +++ b/rslib/src/decks/limits.rs @@ -155,11 +155,14 @@ impl RemainingLimits { /// True if some limit was decremented to 0. fn decrement(&mut self, kind: LimitKind) -> DecrementResult { let before = *self; - if matches!(kind, LimitKind::Review) { - self.review = self.review.saturating_sub(1); - } - if self.cap_new_to_review || matches!(kind, LimitKind::New) { - self.new = self.new.saturating_sub(1); + match kind { + LimitKind::Review => { + self.review = self.review.saturating_sub(1); + if self.cap_new_to_review { + self.new = self.new.min(self.review); + } + } + LimitKind::New => self.new = self.new.saturating_sub(1), } DecrementResult::new(&before, self) } diff --git a/rslib/src/scheduler/queue/builder/mod.rs b/rslib/src/scheduler/queue/builder/mod.rs index 63808e072..e35d87612 100644 --- a/rslib/src/scheduler/queue/builder/mod.rs +++ b/rslib/src/scheduler/queue/builder/mod.rs @@ -490,4 +490,14 @@ mod test { // review limit doesn't apply to new card assert_eq!(col.card_queue_len(), 1); } + + #[test] + fn reviews_dont_affect_new_limit_before_review_limit_is_reached() { + let mut col = Collection::new_v3(); + col.update_default_deck_config(|config| { + config.new_per_day = 1; + }); + CardAdder::new().siblings(2).due_dates(["0"]).add(&mut col); + assert_eq!(col.card_queue_len(), 2); + } }