aboutsummaryrefslogtreecommitdiff
path: root/tests/test-card-type-multicloze.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-11-13 12:00:45 -0600
committerCraig Jennings <c@cjennings.net>2025-11-13 12:00:45 -0600
commitc4c64e2762d7b75f588c20bc7d43ddf8ba30c97e (patch)
treecad831f6f02da8b87603919776b0caff6540b2bc /tests/test-card-type-multicloze.el
parent1618ff6b2cfe463ee225f11c2772712f8243c6d3 (diff)
downloadorg-drill-c4c64e2762d7b75f588c20bc7d43ddf8ba30c97e.tar.gz
org-drill-c4c64e2762d7b75f588c20bc7d43ddf8ba30c97e.zip
test: Complete Phase 2 card type tests
- Add unit tests for show1cloze card type (6 tests) - Add unit tests for multicloze variants (12 tests) - Add integration test for card type system (5 tests) Phase 2 complete: All major card types tested Total: 114 tests (98 unit + 16 integration), all passing
Diffstat (limited to 'tests/test-card-type-multicloze.el')
-rw-r--r--tests/test-card-type-multicloze.el119
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/test-card-type-multicloze.el b/tests/test-card-type-multicloze.el
new file mode 100644
index 0000000..9aaa58f
--- /dev/null
+++ b/tests/test-card-type-multicloze.el
@@ -0,0 +1,119 @@
+;;; test-card-type-multicloze.el --- Tests for multicloze card type variants
+
+;;; Commentary:
+;; Tests for various multicloze card type variants in org-drill.
+;;
+;; Multicloze variants:
+;; - multicloze (alias for hide1cloze)
+;; - hide1cloze, hide2cloze (hide N clozes)
+;; - show1cloze, show2cloze (show N clozes, hide rest)
+;; - hidefirst, hidelast (hide specific positions)
+;; - hide1_firstmore, show1_lastmore, show1_firstless (weighted variants)
+
+;;; Code:
+
+(require 'ert)
+(require 'assess)
+(require 'org-drill)
+
+;;; Normal Cases - Multicloze Variants
+
+(ert-deftest test-card-type-multicloze-normal-hide2cloze-exists ()
+ "Test that hide2cloze variant exists."
+ (let ((entry (assoc "hide2cloze" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-hide2))))
+
+(ert-deftest test-card-type-multicloze-normal-show2cloze-exists ()
+ "Test that show2cloze variant exists."
+ (let ((entry (assoc "show2cloze" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-show2))))
+
+(ert-deftest test-card-type-multicloze-normal-hidefirst-exists ()
+ "Test that hidefirst variant exists."
+ (let ((entry (assoc "hidefirst" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-hide-first))))
+
+(ert-deftest test-card-type-multicloze-normal-hidelast-exists ()
+ "Test that hidelast variant exists."
+ (let ((entry (assoc "hidelast" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-hide-last))))
+
+;;; Normal Cases - Weighted Variants
+
+(ert-deftest test-card-type-multicloze-normal-hide1-firstmore-exists ()
+ "Test that hide1_firstmore variant exists."
+ (let ((entry (assoc "hide1_firstmore" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-hide1-firstmore))))
+
+(ert-deftest test-card-type-multicloze-normal-show1-lastmore-exists ()
+ "Test that show1_lastmore variant exists."
+ (let ((entry (assoc "show1_lastmore" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-show1-lastmore))))
+
+(ert-deftest test-card-type-multicloze-normal-show1-firstless-exists ()
+ "Test that show1_firstless variant exists."
+ (let ((entry (assoc "show1_firstless" org-drill-card-type-alist)))
+ (should entry)
+ (should (eq (cadr entry) 'org-drill-present-multicloze-show1-firstless))))
+
+;;; Boundary Cases - Hide vs Show Counts
+
+(ert-deftest test-card-type-multicloze-boundary-hide1-vs-hide2 ()
+ "Test that hide1cloze and hide2cloze use different functions."
+ (let ((hide1-fn (cadr (assoc "hide1cloze" org-drill-card-type-alist)))
+ (hide2-fn (cadr (assoc "hide2cloze" org-drill-card-type-alist))))
+ (should-not (eq hide1-fn hide2-fn))
+ (should (eq hide1-fn 'org-drill-present-multicloze-hide1))
+ (should (eq hide2-fn 'org-drill-present-multicloze-hide2))))
+
+(ert-deftest test-card-type-multicloze-boundary-show1-vs-show2 ()
+ "Test that show1cloze and show2cloze use different functions."
+ (let ((show1-fn (cadr (assoc "show1cloze" org-drill-card-type-alist)))
+ (show2-fn (cadr (assoc "show2cloze" org-drill-card-type-alist))))
+ (should-not (eq show1-fn show2-fn))
+ (should (eq show1-fn 'org-drill-present-multicloze-show1))
+ (should (eq show2-fn 'org-drill-present-multicloze-show2))))
+
+;;; Boundary Cases - Position-based Variants
+
+(ert-deftest test-card-type-multicloze-boundary-hidefirst-vs-hidelast ()
+ "Test that hidefirst and hidelast use different functions."
+ (let ((first-fn (cadr (assoc "hidefirst" org-drill-card-type-alist)))
+ (last-fn (cadr (assoc "hidelast" org-drill-card-type-alist))))
+ (should-not (eq first-fn last-fn))
+ (should (eq first-fn 'org-drill-present-multicloze-hide-first))
+ (should (eq last-fn 'org-drill-present-multicloze-hide-last))))
+
+;;; Semantics - Variant Coverage
+
+(ert-deftest test-card-type-multicloze-normal-all-variants-registered ()
+ "Test that all documented multicloze variants are registered.
+This ensures the card type system is complete."
+ (let ((variants '("multicloze" "hide1cloze" "hide2cloze"
+ "show1cloze" "show2cloze"
+ "hidefirst" "hidelast"
+ "hide1_firstmore" "show1_lastmore" "show1_firstless")))
+ (dolist (variant variants)
+ (let ((entry (assoc variant org-drill-card-type-alist)))
+ (should entry)
+ (should (cadr entry))))))
+
+(ert-deftest test-card-type-multicloze-normal-function-naming-convention ()
+ "Test that multicloze functions follow naming convention.
+All should start with org-drill-present-multicloze-"
+ (let ((multicloze-types '("hide1cloze" "hide2cloze" "show1cloze" "show2cloze"
+ "hidefirst" "hidelast")))
+ (dolist (type multicloze-types)
+ (let* ((entry (assoc type org-drill-card-type-alist))
+ (fn (cadr entry))
+ (fn-name (symbol-name fn)))
+ (should (string-prefix-p "org-drill-present-multicloze-" fn-name))))))
+
+(provide 'test-card-type-multicloze)
+;;; test-card-type-multicloze.el ends here