blob: baad0a3410632759cd9333ee5a4990d3d72cc83c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
;;; test-org-drill-display-state.el --- Tests for display-state save/restore -*- lexical-binding: t; -*-
;;; Commentary:
;; Tests for `org-drill--setup-display' and `org-drill--restore-display',
;; which save the user's text scale, variable-pitch mode, and modeline at
;; session start and put them back at session end. Also covers the
;; `directory' branch of `org-drill-current-scope'.
;;; Code:
(require 'ert)
(require 'cl-lib)
(require 'org)
(require 'org-drill)
;;;; --save-display-state / --restore-display
(ert-deftest test-save-display-state-records-current-buffer ()
"After save, `org-drill--saved-display-buffer' holds the buffer."
(with-temp-buffer
(let ((org-drill-text-size-during-session nil)
(org-drill-use-variable-pitch nil)
(org-drill-hide-modeline-during-session nil)
(org-drill--saved-display-buffer nil))
(org-drill--setup-display)
(should (eq (current-buffer) org-drill--saved-display-buffer)))))
(ert-deftest test-save-display-state-skips-when-flags-nil ()
"With every flag nil, save records buffer but doesn't capture face/mode state."
(with-temp-buffer
(let ((org-drill-text-size-during-session nil)
(org-drill-use-variable-pitch nil)
(org-drill-hide-modeline-during-session nil)
(org-drill--saved-display-buffer nil)
(org-drill--saved-text-scale 'sentinel)
(org-drill--saved-variable-pitch-mode 'unbound)
(org-drill--saved-modeline-format 'sentinel))
(org-drill--setup-display)
;; Saved-text-scale is left untouched because the flag was nil.
(should (eq 'sentinel org-drill--saved-text-scale))
(should (eq 'unbound org-drill--saved-variable-pitch-mode))
(should (eq 'sentinel org-drill--saved-modeline-format)))))
(ert-deftest test-save-display-state-captures-modeline-when-hide-flag-set ()
"With `org-drill-hide-modeline-during-session' t, the modeline is saved and cleared."
(with-temp-buffer
(let ((org-drill-text-size-during-session nil)
(org-drill-use-variable-pitch nil)
(org-drill-hide-modeline-during-session t)
(org-drill--saved-display-buffer nil)
(org-drill--saved-modeline-format nil))
(setq-local mode-line-format "marker-mode-line")
(org-drill--setup-display)
(should (equal "marker-mode-line" org-drill--saved-modeline-format))
(should (null mode-line-format)))))
(ert-deftest test-restore-display-puts-modeline-back ()
"Restore sets mode-line-format on the saved-display-buffer back to its prior value."
(with-temp-buffer
(let ((org-drill-text-size-during-session nil)
(org-drill-use-variable-pitch nil)
(org-drill-hide-modeline-during-session t)
(org-drill--saved-display-buffer (current-buffer))
(org-drill--saved-text-scale nil)
(org-drill--saved-variable-pitch-mode 'unbound)
(org-drill--saved-modeline-format "saved-modeline"))
(setq-local mode-line-format nil)
(org-drill--restore-display)
(should (equal "saved-modeline" mode-line-format))
(should (null org-drill--saved-modeline-format))
(should (null org-drill--saved-display-buffer)))))
(ert-deftest test-restore-display-handles-killed-buffer-target ()
"If the saved-display-buffer was killed, restore must not crash."
(let ((tmp (generate-new-buffer " *drill-display-tmp*")))
(let ((org-drill-text-size-during-session nil)
(org-drill-use-variable-pitch nil)
(org-drill-hide-modeline-during-session t)
(org-drill--saved-display-buffer tmp)
(org-drill--saved-text-scale nil)
(org-drill--saved-variable-pitch-mode 'unbound)
(org-drill--saved-modeline-format "saved-modeline"))
(kill-buffer tmp)
(org-drill--restore-display)
(should (null org-drill--saved-display-buffer)))))
;;;; org-drill-current-scope (directory branch)
(ert-deftest test-org-drill-current-scope-directory-returns-org-files-list ()
"The `directory' scope expands to a list of .org files in the buffer's directory."
(let* ((tmpdir (make-temp-file "org-drill-scope-" t))
(a (expand-file-name "a.org" tmpdir))
(b (expand-file-name "b.org" tmpdir))
(skip (expand-file-name ".hidden.org" tmpdir))
(other (expand-file-name "c.txt" tmpdir)))
(unwind-protect
(progn
(write-region "" nil a)
(write-region "" nil b)
(write-region "" nil skip)
(write-region "" nil other)
(with-current-buffer (find-file-noselect a)
(let ((files (org-drill-current-scope 'directory)))
(should (member a files))
(should (member b files))
(should-not (member skip files))
(should-not (member other files)))))
(when (file-exists-p a) (delete-file a))
(when (file-exists-p b) (delete-file b))
(when (file-exists-p skip) (delete-file skip))
(when (file-exists-p other) (delete-file other))
(delete-directory tmpdir))))
(provide 'test-org-drill-display-state)
;;; test-org-drill-display-state.el ends here
|