mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 06:52:21 -04:00

As per the forum thread, the current due counts are really demotivating when there's a backlog of cards. In attempt to solve this, I'm trying out a new behaviour as the default: instead of reporting all the due cards including the backlog, the status bar will show an increasing count of cards studied that day. Theoretically this should allow users to focus on what they've done rather than what they have to do. The old behaviour is still there as an option.
89 lines
2.2 KiB
Python
89 lines
2.2 KiB
Python
# coding: utf-8
|
|
|
|
import time
|
|
from tests.shared import assertException, getEmptyDeck
|
|
from anki.consts import *
|
|
|
|
def test_op():
|
|
d = getEmptyDeck()
|
|
# should have no undo by default
|
|
assert not d.undoName()
|
|
# let's adjust a study option
|
|
d.save("studyopts")
|
|
d.conf['revOrder'] = 5
|
|
# it should be listed as undoable
|
|
assert d.undoName() == "studyopts"
|
|
# with about 5 minutes until it's clobbered
|
|
assert time.time() - d._lastSave < 1
|
|
# undoing should restore the old value
|
|
d.undo()
|
|
assert not d.undoName()
|
|
assert d.conf['revOrder'] != 5
|
|
# an (auto)save will clear the undo
|
|
d.save("foo")
|
|
assert d.undoName() == "foo"
|
|
d.save()
|
|
assert not d.undoName()
|
|
# and a review will, too
|
|
d.save("add")
|
|
f = d.newFact()
|
|
f['Front'] = u"one"
|
|
d.addFact(f)
|
|
d.reset()
|
|
assert d.undoName() == "add"
|
|
c = d.sched.getCard()
|
|
d.sched.answerCard(c, 2)
|
|
assert d.undoName() == "Review"
|
|
|
|
def test_review():
|
|
d = getEmptyDeck()
|
|
d.conf['counts'] = COUNT_REMAINING
|
|
f = d.newFact()
|
|
f['Front'] = u"one"
|
|
d.addFact(f)
|
|
d.reset()
|
|
assert not d.undoName()
|
|
# answer
|
|
assert d.sched.counts() == (1, 0, 0)
|
|
c = d.sched.getCard()
|
|
assert c.queue == 0
|
|
assert c.grade == 0
|
|
d.sched.answerCard(c, 2)
|
|
assert d.sched.counts() == (0, 1, 0)
|
|
assert c.queue == 1
|
|
assert c.grade == 1
|
|
# undo
|
|
assert d.undoName()
|
|
d.undo()
|
|
d.reset()
|
|
assert d.sched.counts() == (1, 0, 0)
|
|
c.load()
|
|
assert c.queue == 0
|
|
assert c.grade == 0
|
|
assert not d.undoName()
|
|
# we should be able to undo multiple answers too
|
|
f['Front'] = u"two"
|
|
d.addFact(f)
|
|
d.reset()
|
|
assert d.sched.counts() == (2, 0, 0)
|
|
c = d.sched.getCard()
|
|
d.sched.answerCard(c, 2)
|
|
c = d.sched.getCard()
|
|
d.sched.answerCard(c, 2)
|
|
assert d.sched.counts() == (0, 2, 0)
|
|
d.undo()
|
|
d.reset()
|
|
assert d.sched.counts() == (1, 1, 0)
|
|
d.undo()
|
|
d.reset()
|
|
assert d.sched.counts() == (2, 0, 0)
|
|
# performing a normal op will clear the review queue
|
|
c = d.sched.getCard()
|
|
d.sched.answerCard(c, 2)
|
|
assert d.undoName() == "Review"
|
|
d.save("foo")
|
|
assert d.undoName() == "foo"
|
|
d.undo()
|
|
assert not d.undoName()
|
|
|
|
|