From e407697fb98ebad89593e0274b3fe2efddc2d35a Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 23 Mar 2011 10:17:39 +0900 Subject: [PATCH] fix interval calculation for lapsed cards in learning queue --- anki/sched.py | 4 +++- tests/test_sched.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/anki/sched.py b/anki/sched.py index 6efc452ee..4a2143588 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -245,6 +245,9 @@ limit %d""" % self.reportLimit, lim=self.dayCutoff) card.type = 2 def _graduatingIvl(self, card, conf, early): + if card.type == 2: + # lapsed card being relearnt + return card.ivl if not early: # graduate ideal = conf['ints'][0] @@ -557,7 +560,6 @@ queue = 2 %s and due <= :lim order by %s limit %d""" % ( def nextIvl(self, card, ease): "Return the next interval for CARD, in seconds." if card.queue in (0,1): - # in learning return self._nextLrnIvl(card, ease) elif ease == 1: # lapsed diff --git a/tests/test_sched.py b/tests/test_sched.py index 8810d8f88..71a05cd14 100644 --- a/tests/test_sched.py +++ b/tests/test_sched.py @@ -256,6 +256,14 @@ def test_nextIvl(): # normal graduation is tomorrow assert ni(c, 2) == 1*86400 assert ni(c, 3) == 4*86400 + # lapsed cards + ################################################## + c.type = 2 + c.ivl = 100 + c.factor = 2500 + assert ni(c, 1) == 30 + assert ni(c, 2) == 100*86400 + assert ni(c, 3) == 100*86400 # review cards ################################################## c.queue = 2 @@ -356,6 +364,7 @@ def test_cram(): d.sched.answerCard(c, 1) # graduating the card will keep the same interval, but shift the card # forward the number of days it had been waiting (75) + print d.sched.nextIvl(c, 3) assert d.sched.nextIvl(c, 3) == 75*86400 d.sched.answerCard(c, 3) assert c.ivl == 100