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.utils import parseTags, ids2str, intTime
from anki.lang import _ from anki.lang import _
from anki.consts import * from anki.consts import *
from anki.hooks import runHook
# the standard Anki scheduler # the standard Anki scheduler
class Scheduler(object): class Scheduler(object):
@ -276,7 +277,7 @@ queue = 1 %s and due <= :lim limit %d)""" % (
self.revQueue = self.db.all(""" self.revQueue = self.db.all("""
select id from cards where select id from cards where
queue = 1 %s and due <= :lim order by %s limit %d""" % ( 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) lim=self.today)
if self.deck.qconf['revCardOrder'] == REV_CARDS_RANDOM: if self.deck.qconf['revCardOrder'] == REV_CARDS_RANDOM:
random.shuffle(self.revQueue) random.shuffle(self.revQueue)
@ -293,15 +294,11 @@ queue = 1 %s and due <= :lim order by %s limit %d""" % (
self._resetReview() self._resetReview()
return self.revQueue return self.revQueue
def revOrder(self): def _revOrder(self):
return ("ivl desc", return ("ivl desc",
"ivl", "ivl",
"due")[self.deck.qconf['revCardOrder']] "due")[self.deck.qconf['revCardOrder']]
# FIXME: rewrite
def showFailedLast(self):
return self.collapseTime or not self.delay0
# Answering a review card # Answering a review card
########################################################################## ##########################################################################
@ -424,7 +421,8 @@ queue = 1 %s and due <= :lim order by %s limit %d""" % (
f.flush() f.flush()
# handle # handle
if conf['leechAction'][0] == "suspend": if conf['leechAction'][0] == "suspend":
self.deck.suspendCard(card) self.suspendCards([card.id])
card.queue = -1
# notify UI # notify UI
runHook("leech", card) runHook("leech", card)

View file

@ -4,6 +4,7 @@ import time
from tests.shared import assertException, getEmptyDeck from tests.shared import assertException, getEmptyDeck
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
from anki.utils import stripHTML, intTime from anki.utils import stripHTML, intTime
from anki.hooks import addHook
def test_basics(): def test_basics():
d = getEmptyDeck() d = getEmptyDeck()
@ -199,3 +200,18 @@ def test_reviews():
assert c.due == d.sched.today + 351 assert c.due == d.sched.today + 351
# factor should have been increased # factor should have been increased
assert c.factor == 2650 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