diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-10 16:36:47 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-10 16:36:47 -0500 |
| commit | 3c64dac1b98049d475be838294349326c32248ae (patch) | |
| tree | 626917ca3660d34b48195a77123b1def3d418282 /tests/test-chime-day-wide-time-matching.el | |
| parent | 0772736d2bca36472f623d5258784f41db9b4f9a (diff) | |
| download | chime-3c64dac1b98049d475be838294349326c32248ae.tar.gz chime-3c64dac1b98049d475be838294349326c32248ae.zip | |
feat: tighten chime runtime validation and tooltip behavior
Diffstat (limited to 'tests/test-chime-day-wide-time-matching.el')
| -rw-r--r-- | tests/test-chime-day-wide-time-matching.el | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/test-chime-day-wide-time-matching.el b/tests/test-chime-day-wide-time-matching.el index 7a7c7d4..88242e2 100644 --- a/tests/test-chime-day-wide-time-matching.el +++ b/tests/test-chime-day-wide-time-matching.el @@ -37,6 +37,80 @@ (require 'testutil-general (expand-file-name "testutil-general.el")) (require 'testutil-time (expand-file-name "testutil-time.el")) +(defmacro test-chime-with-restored-day-wide-alert-times (&rest body) + "Run BODY and restore default `chime-day-wide-alert-times' afterwards." + (declare (indent 0) (debug t)) + `(let ((original-value (default-value 'chime-day-wide-alert-times))) + (unwind-protect + (progn ,@body) + (set-default 'chime-day-wide-alert-times original-value)))) + +;;;; Tests for chime--validate-day-wide-alert-times + +(ert-deftest test-chime-validate-day-wide-alert-times-accepts-24-hour () + "Normal: 24-hour HH:MM entries are valid." + (should (equal '("08:00" "17:00") + (chime--validate-day-wide-alert-times + 'fake-symbol '("08:00" "17:00"))))) + +(ert-deftest test-chime-validate-day-wide-alert-times-accepts-12-hour () + "Normal: Org-supported 12-hour entries are valid." + (should (equal '("8:00am" "5:30pm") + (chime--validate-day-wide-alert-times + 'fake-symbol '("8:00am" "5:30pm"))))) + +(ert-deftest test-chime-validate-day-wide-alert-times-accepts-nil () + "Boundary: nil disables day-wide alerts." + (should (null (chime--validate-day-wide-alert-times 'fake-symbol nil)))) + +(ert-deftest test-chime-validate-day-wide-alert-times-accepts-empty-list () + "Boundary: an empty list disables day-wide alerts." + (should (equal '() + (chime--validate-day-wide-alert-times 'fake-symbol '())))) + +(ert-deftest test-chime-validate-day-wide-alert-times-rejects-invalid-string () + "Error: unparseable strings fail before timer matching." + (should-error (chime--validate-day-wide-alert-times + 'fake-symbol '("08:00" "not-a-time")) + :type 'user-error)) + +(ert-deftest test-chime-validate-day-wide-alert-times-rejects-non-list () + "Error: the value must be nil or a list." + (should-error (chime--validate-day-wide-alert-times + 'fake-symbol "08:00") + :type 'user-error)) + +(ert-deftest test-chime-validate-day-wide-alert-times-rejects-non-string-entry () + "Error: every configured alert time must be a string." + (should-error (chime--validate-day-wide-alert-times + 'fake-symbol '("08:00" 1700)) + :type 'user-error)) + +(ert-deftest test-chime-validate-day-wide-alert-times-rejects-out-of-day-time () + "Error: Org durations beyond 23:59 are not valid clock times." + (should-error (chime--validate-day-wide-alert-times + 'fake-symbol '("25:00")) + :type 'user-error)) + +(ert-deftest test-chime-day-wide-alert-times-setter-accepts-valid-list () + "Normal: customize-time setter accepts valid alert times." + (test-chime-with-restored-day-wide-alert-times + (customize-set-variable 'chime-day-wide-alert-times '("08:00" "5:30pm")) + (should (equal '("08:00" "5:30pm") chime-day-wide-alert-times)))) + +(ert-deftest test-chime-day-wide-alert-times-setter-accepts-nil () + "Boundary: customize-time setter accepts nil." + (test-chime-with-restored-day-wide-alert-times + (customize-set-variable 'chime-day-wide-alert-times nil) + (should (null chime-day-wide-alert-times)))) + +(ert-deftest test-chime-day-wide-alert-times-setter-rejects-invalid-list () + "Error: customize-time setter rejects invalid alert times." + (test-chime-with-restored-day-wide-alert-times + (should-error (customize-set-variable + 'chime-day-wide-alert-times '("08:00" "nope")) + :type 'user-error))) + ;;;; Tests for chime--current-time-matches-time-of-day-string ;;; Normal Cases |
