mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
add tests for leech handling
This commit is contained in:
parent
908dccc2c0
commit
a7ec356e0d
2 changed files with 21 additions and 7 deletions
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue