add tests for leech handling

This commit is contained in:
Damien Elmes 2011-03-18 05:42:01 +09:00
parent 908dccc2c0
commit a7ec356e0d
2 changed files with 21 additions and 7 deletions

View file

@ -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)

View file

@ -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