diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-05 14:32:33 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-05 14:32:33 -0500 |
| commit | 46bcf53e970e05f6c58b08040a72cc61cc476fb4 (patch) | |
| tree | f3639bcbdd3c7381645c5fb004729a678152d5b3 | |
| parent | 1cc6ae94ecef51f6d96649913c38b0aedd349c41 (diff) | |
| download | org-drill-46bcf53e970e05f6c58b08040a72cc61cc476fb4.tar.gz org-drill-46bcf53e970e05f6c58b08040a72cc61cc476fb4.zip | |
test: cover --route-rating-result quit/edit/skip/next branches
I added tests for `org-drill--route-rating-result' covering all four
return values: nil → 'quit (end-pos becomes :quit), 'edit → 'edit
(end-pos becomes a marker), 'skip → 'skip (current-item cleared),
quality 0 → 'next (pushes to again-entries) and quality 5 → 'next
(pushes to done-entries). Also a case where again-entries is non-empty
so the shuffle branch runs.
Coverage moved from 91.6% to 91.7%.
| -rw-r--r-- | tests/test-org-drill-route-rating-result.el | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/test-org-drill-route-rating-result.el b/tests/test-org-drill-route-rating-result.el new file mode 100644 index 0000000..5469bc8 --- /dev/null +++ b/tests/test-org-drill-route-rating-result.el @@ -0,0 +1,71 @@ +;;; test-org-drill-route-rating-result.el --- Tests for --route-rating-result -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests for `org-drill--route-rating-result', which translates the return +;; value of `org-drill-entry' into one of `quit', `edit', `skip', `next' +;; while updating the session queues. + +;;; Code: + +(require 'ert) +(require 'cl-lib) +(require 'org) +(require 'org-drill) + +(defun make-marker-for-test () + (let ((m (make-marker))) (set-marker m 1) m)) + +(ert-deftest test-route-rating-result-nil-returns-quit-and-stashes-end-pos () + "When the entry returned nil (user quit), result is `quit' and end-pos is :quit." + (let ((session (org-drill-session)) + (m (make-marker-for-test))) + (cl-letf (((symbol-function 'message) #'ignore)) + (should (eq 'quit (org-drill--route-rating-result session m nil)))) + (should (eq :quit (oref session end-pos))))) + +(ert-deftest test-route-rating-result-edit-stashes-marker-end-pos () + "When the entry returned `edit', end-pos becomes a marker and result is `edit'." + (let ((session (org-drill-session)) + (m (make-marker-for-test))) + (with-temp-buffer + (insert "x") + (goto-char (point-min)) + (should (eq 'edit (org-drill--route-rating-result session m 'edit)))) + (should (markerp (oref session end-pos))))) + +(ert-deftest test-route-rating-result-skip-clears-current-item () + "Skip result drops the current-item slot to nil and returns `skip'." + (let ((session (org-drill-session)) + (m (make-marker-for-test))) + (oset session current-item m) + (should (eq 'skip (org-drill--route-rating-result session m 'skip))) + (should (null (oref session current-item))))) + +(ert-deftest test-route-rating-result-failure-pushes-onto-again-entries () + "A failed-quality result puts the marker on again-entries and returns `next'." + (let ((session (org-drill-session)) + (m (make-marker-for-test))) + (should (eq 'next (org-drill--route-rating-result session m 0))) + (should (member m (oref session again-entries))))) + +(ert-deftest test-route-rating-result-success-pushes-onto-done-entries () + "A passing-quality result puts the marker on done-entries and returns `next'." + (let ((session (org-drill-session)) + (m (make-marker-for-test))) + (should (eq 'next (org-drill--route-rating-result session m 5))) + (should (member m (oref session done-entries))))) + +(ert-deftest test-route-rating-result-failure-with-existing-again-shuffles-it () + "When again-entries already has items, the failure path re-shuffles the list." + (let* ((session (org-drill-session)) + (m1 (let ((mk (make-marker))) (set-marker mk 1) mk)) + (m2 (let ((mk (make-marker))) (set-marker mk 2) mk)) + (shuffle-called nil)) + (oset session again-entries (list m1 m2)) + (cl-letf (((symbol-function 'org-drill-shuffle) + (lambda (lst) (setq shuffle-called t) lst))) + (org-drill--route-rating-result session m1 0)) + (should shuffle-called))) + +(provide 'test-org-drill-route-rating-result) +;;; test-org-drill-route-rating-result.el ends here |
