Files
lime/test/x11-cursor.lisp
2026-10-02 16:35:17 -05:00

37 lines
2.4 KiB
Common Lisp

(in-package #:lime.x11.test)
(in-suite lime-x11-suite)
(test cursor-configuration-validates-before-touching-x
(let ((config (make-lime-configuration)))
(is (typep (lime-configuration-cursor config) 'ui-cursor-style))
(dolist (theme '(nil :core "Adwaita" "Bibata-Original-Ice"))
(setf (lime-configuration-cursor config) (make-ui-cursor-style :theme theme :size 24))
(is (eq config (lime.x11::%validate-lime-configuration config))))
(dolist (theme (list "" " " :unknown 4 (string #\Null)))
(setf (lime-configuration-cursor config) (make-ui-cursor-style :theme theme))
(signals invalid-transition (lime.x11::%validate-lime-configuration config)))
(dolist (size '(0 -1 7 257 24.0 "24"))
(setf (lime-configuration-cursor config) (make-ui-cursor-style :size size))
(signals invalid-transition (lime.x11::%validate-lime-configuration config)))
(let ((dsl (find-lime-configuration
(eval '(lime.config:defconfiguration cursor-fixture
(:cursor :theme "Adwaita" :size (+ 16 8)))))))
(is (string= "Adwaita" (ui-cursor-style-theme (lime-configuration-cursor dsl))))
(is (= 24 (ui-cursor-style-size (lime-configuration-cursor dsl)))))
(signals error (macroexpand-1 '(lime.config:defconfiguration duplicate (:cursor) (:cursor))))
(signals error (macroexpand-1 '(lime.config:defconfiguration unknown (:cursor :unknown 2))))))
(test cursor-system-defaults-and-explicit-overrides
(flet ((resolve (style &rest defaults)
(multiple-value-list (apply #'lime.x11::%resolve-cursor-settings style defaults))))
(is (equal '("default" 24) (resolve (make-ui-cursor-style) nil nil nil nil nil)))
(is (equal '("Adwaita" 32) (resolve (make-ui-cursor-style) nil nil "Adwaita" "32" nil)))
(is (equal '("env-theme" 48) (resolve (make-ui-cursor-style) "env-theme" "48" "resource-theme" "32" nil)))
(is (equal '("explicit" 24) (resolve (make-ui-cursor-style :theme "explicit" :size 24)
"env-theme" "48" "resource-theme" "32" "192")))
(is (equal '(:core 24) (resolve (make-ui-cursor-style :theme :core :size 24)
"env-theme" "48" "resource-theme" "32" nil)))
(is (equal '("default" 43) (resolve (make-ui-cursor-style) "" "bad" nil "0" "192")))
(is (equal '("default" 24) (resolve (make-ui-cursor-style) nil "999999" nil "-32" "bad")))))