diff options
Diffstat (limited to 'tests/test-auto-dim-config.el')
| -rw-r--r-- | tests/test-auto-dim-config.el | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/test-auto-dim-config.el b/tests/test-auto-dim-config.el index 45e1db5f..f33a475a 100644 --- a/tests/test-auto-dim-config.el +++ b/tests/test-auto-dim-config.el @@ -10,6 +10,7 @@ ;;; Code: (require 'ert) +(require 'cl-lib) (add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) (defconst test-auto-dim--fork @@ -29,5 +30,107 @@ (when (fboundp 'auto-dim-other-buffers-mode) (auto-dim-other-buffers-mode -1)))) +(ert-deftest test-auto-dim-config-vterm-dimmed-p-all-windows-dimmed () + "Normal: a vterm buffer is dimmed when all displayed windows are dimmed." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let ((major-mode 'vterm-mode)) + (cl-letf (((symbol-function 'get-buffer-window-list) + (lambda (&rest _) '(left right))) + ((symbol-function 'window-parameter) + (lambda (window parameter) + (and (eq parameter 'adob--dim) + (memq window '(left right)))))) + (should (cj/auto-dim--vterm-buffer-dimmed-p))))) + +(ert-deftest test-auto-dim-config-vterm-dimmed-p-undimmed-window-keeps-buffer-bright () + "Normal: a selected/undimmed vterm window keeps the buffer bright." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let ((major-mode 'vterm-mode)) + (cl-letf (((symbol-function 'get-buffer-window-list) + (lambda (&rest _) '(left right))) + ((symbol-function 'window-parameter) + (lambda (window parameter) + (and (eq parameter 'adob--dim) + (eq window 'right))))) + (should-not (cj/auto-dim--vterm-buffer-dimmed-p))))) + +(ert-deftest test-auto-dim-config-vterm-get-color-dims-only-dimmed-vterm-buffers () + "Normal: vterm color advice dims only buffers marked dimmed." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let ((major-mode 'vterm-mode) + (cj/auto-dim-vterm-foreground-blend 1.0)) + (cl-letf (((symbol-function 'cj/auto-dim--vterm-buffer-dimmed-p) + (lambda () t)) + ((symbol-function 'cj/auto-dim--face-color) + (lambda (&rest _) "#555555"))) + (should (equal "#555555" + (cj/auto-dim--vterm-get-color + (lambda (&rest _) "#ffffff") 7 :foreground)))) + (cl-letf (((symbol-function 'cj/auto-dim--vterm-buffer-dimmed-p) + (lambda () nil))) + (should (equal "#ffffff" + (cj/auto-dim--vterm-get-color + (lambda (&rest _) "#ffffff") 7 :foreground)))))) + +(ert-deftest test-auto-dim-config-vterm-post-command-schedules-refresh-on-window-change () + "Normal: post-command vterm refresh schedules only after selection changes." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let ((cj/auto-dim--last-selected-window 'old) + (calls 0)) + (cl-letf (((symbol-function 'selected-window) + (lambda () 'new)) + ((symbol-function 'cj/auto-dim--schedule-vterm-refresh) + (lambda (&optional _) (setq calls (1+ calls))))) + (cj/auto-dim--refresh-vterm-on-command) + (cj/auto-dim--refresh-vterm-on-command)) + (should (eq cj/auto-dim--last-selected-window 'new)) + (should (= calls 1)))) + +(ert-deftest test-auto-dim-config-vterm-refresh-runs-auto-dim-before-invalidate () + "Normal: deferred vterm refresh updates auto-dim before invalidating vterm." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let (events) + (cl-letf (((symbol-function 'adob--update) + (lambda () (push 'adob events))) + ((symbol-function 'cj/auto-dim--refresh-vterm-windows) + (lambda (&optional _) (push 'vterm events)))) + (cj/auto-dim--refresh-vterm-after-auto-dim)) + (should (equal events '(vterm adob))))) + +(ert-deftest test-auto-dim-config-vterm-refresh-nudges-size-for-full-redraw () + "Normal: vterm refresh nudges size to force full-grid redraw." + (skip-unless (file-directory-p test-auto-dim--fork)) + (require 'auto-dim-config) + (let ((calls nil) + (vterm-min-window-width 80)) + (with-temp-buffer + (setq major-mode 'vterm-mode) + (setq-local vterm--term 'term) + (let ((buffer (current-buffer))) + (cl-letf (((symbol-function 'window-list) + (lambda (&rest _) '(vterm-window))) + ((symbol-function 'window-buffer) + (lambda (_) buffer)) + ((symbol-function 'window-live-p) + (lambda (_) t)) + ((symbol-function 'window-body-height) + (lambda (_) 24)) + ((symbol-function 'window-body-width) + (lambda (_) 100)) + ((symbol-function 'vterm--get-margin-width) + (lambda () 3)) + ((symbol-function 'vterm--set-size) + (lambda (term height width) + (push (list term height width) calls)))) + (cj/auto-dim--refresh-vterm-windows)))) + (should (equal (nreverse calls) + '((term 25 97) + (term 24 97)))))) + (provide 'test-auto-dim-config) ;;; test-auto-dim-config.el ends here |
