(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")))))