From a7ec356e0dfd14a9e9b18787f4f7d4ccb7297828 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 18 Mar 2011 05:42:01 +0900 Subject: [PATCH] add tests for leech handling --- anki/sched.py | 12 +++++------- tests/test_sched.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/anki/sched.py b/anki/sched.py index af33bc72c..cdd561c56 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -9,6 +9,7 @@ from heapq import * from anki.utils import parseTags, ids2str, intTime from anki.lang import _ from anki.consts import * +from anki.hooks import runHook # the standard Anki scheduler class Scheduler(object): @@ -276,7 +277,7 @@ queue = 1 %s and due <= :lim limit %d)""" % ( self.revQueue = self.db.all(""" select id from cards where queue = 1 %s and due <= :lim order by %s limit %d""" % ( - self._groupLimit("rev"), self.revOrder(), self.queueLimit), + self._groupLimit("rev"), self._revOrder(), self.queueLimit), lim=self.today) if self.deck.qconf['revCardOrder'] == REV_CARDS_RANDOM: random.shuffle(self.revQueue) @@ -293,15 +294,11 @@ queue = 1 %s and due <= :lim order by %s limit %d""" % ( self._resetReview() return self.revQueue - def revOrder(self): + def _revOrder(self): return ("ivl desc", "ivl", "due")[self.deck.qconf['revCardOrder']] - # FIXME: rewrite - def showFailedLast(self): - return self.collapseTime or not self.delay0 - # Answering a review card ########################################################################## @@ -424,7 +421,8 @@ queue = 1 %s and due <= :lim order by %s limit %d""" % ( f.flush() # handle if conf['leechAction'][0] == "suspend": - self.deck.suspendCard(card) + self.suspendCards([card.id]) + card.queue = -1 # notify UI runHook("leech", card) diff --git a/tests/test_sched.py b/tests/test_sched.py index 0df7b43dc..c2cd4cb4f 100644 --- a/tests/test_sched.py +++ b/tests/test_sched.py @@ -4,6 +4,7 @@ import time from tests.shared import assertException, getEmptyDeck from anki.stdmodels import BasicModel from anki.utils import stripHTML, intTime +from anki.hooks import addHook def test_basics(): d = getEmptyDeck() @@ -199,3 +200,18 @@ def test_reviews(): assert c.due == d.sched.today + 351 # factor should have been increased assert c.factor == 2650 + # leech handling + ################################################## + c = copy.copy(cardcopy) + c.lapses = 15 + c.flush() + # steup hook + hooked = [] + def onLeech(card): + hooked.append(1) + addHook("leech", onLeech) + d.sched.answerCard(c, 1) + assert hooked + assert c.queue == -1 + c.load() + assert c.queue == -1