aboutsummaryrefslogtreecommitdiff
path: root/tests/test-nerd-icons-config--apply-tint.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-nerd-icons-config--apply-tint.el')
-rw-r--r--tests/test-nerd-icons-config--apply-tint.el63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/test-nerd-icons-config--apply-tint.el b/tests/test-nerd-icons-config--apply-tint.el
new file mode 100644
index 00000000..ef723352
--- /dev/null
+++ b/tests/test-nerd-icons-config--apply-tint.el
@@ -0,0 +1,63 @@
+;;; test-nerd-icons-config--apply-tint.el --- Tests for cj/nerd-icons-apply-tint -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; Tests for the bulk-tint helper. Mocks `set-face-foreground' and `facep'
+;; at the framework boundary so the tests don't depend on nerd-icons being
+;; loaded — only on the symbol list and the dispatch logic.
+
+;;; Code:
+
+(require 'ert)
+(require 'cl-lib)
+
+(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
+(require 'nerd-icons-config)
+
+(defmacro test-nerd-icons-config--capture-set-face-foreground (calls-var &rest body)
+ "Run BODY with `set-face-foreground' and `facep' stubbed.
+Each (face color) pair gets pushed onto CALLS-VAR. `facep' returns t
+for every symbol so all faces in the list count as defined."
+ (declare (indent 1) (debug t))
+ `(cl-letf (((symbol-function 'set-face-foreground)
+ (lambda (face color &rest _) (push (cons face color) ,calls-var)))
+ ((symbol-function 'facep)
+ (lambda (_) t)))
+ ,@body))
+
+(ert-deftest test-nerd-icons-config--apply-tint-covers-every-face ()
+ "Normal: apply-tint calls set-face-foreground once per face in the list."
+ (let ((calls nil))
+ (test-nerd-icons-config--capture-set-face-foreground calls
+ (cj/nerd-icons-apply-tint "test-color"))
+ (should (= (length calls) (length cj/--nerd-icons-color-faces)))
+ (dolist (face cj/--nerd-icons-color-faces)
+ (should (assq face calls)))))
+
+(ert-deftest test-nerd-icons-config--apply-tint-passes-color-arg ()
+ "Normal: apply-tint forwards COLOR to every set-face-foreground call."
+ (let ((calls nil))
+ (test-nerd-icons-config--capture-set-face-foreground calls
+ (cj/nerd-icons-apply-tint "rebeccapurple"))
+ (dolist (call calls)
+ (should (equal (cdr call) "rebeccapurple")))))
+
+(ert-deftest test-nerd-icons-config--apply-tint-defaults-to-customvar ()
+ "Normal: with no COLOR arg, uses `cj/nerd-icons-tint-color'."
+ (let ((calls nil))
+ (test-nerd-icons-config--capture-set-face-foreground calls
+ (let ((cj/nerd-icons-tint-color "default-test-color"))
+ (cj/nerd-icons-apply-tint)))
+ (should (cl-every (lambda (call) (equal (cdr call) "default-test-color")) calls))))
+
+(ert-deftest test-nerd-icons-config--apply-tint-skips-undefined-faces ()
+ "Boundary: faces that fail `facep' are silently skipped, not errored."
+ (let ((calls nil))
+ (cl-letf (((symbol-function 'set-face-foreground)
+ (lambda (face color &rest _) (push (cons face color) calls)))
+ ((symbol-function 'facep)
+ (lambda (_) nil)))
+ (cj/nerd-icons-apply-tint "any"))
+ (should (null calls))))
+
+(provide 'test-nerd-icons-config--apply-tint)
+;;; test-nerd-icons-config--apply-tint.el ends here