(defpackage :cl-tty-slot-test (:use :cl :cl-tty.slot :fiveam)) (in-package :cl-tty-slot-test) (def-suite slot-suite :description "Slot system tests") (in-suite slot-suite) (def-test defslot-register () (clear-slot :test-slot) (defslot :test-slot :order 1 :render-fn (lambda () "hello")) (is-true (slot-p :test-slot))) (def-test slot-render-calls () (clear-slot :test-slot) (defslot :test-slot :order 1 :render-fn (lambda () "a")) (defslot :test-slot :order 2 :render-fn (lambda () "b")) (is (equal '("a" "b") (slot-render :test-slot)))) (def-test slot-render-empty () (clear-slot :ghost) (is-false (slot-render :ghost))) (def-test clear-slot-removes () (clear-slot :test-slot) (defslot :test-slot :order 1 :render-fn (lambda () "x")) (clear-slot :test-slot) (is-false (slot-p :test-slot))) (def-test stack-mode-multiple-entries () (clear-slot :stack-test) (defslot :stack-test :order 1 :render-fn (lambda () "first")) (defslot :stack-test :order 2 :render-fn (lambda () "second")) (defslot :stack-test :order 3 :render-fn (lambda () "third")) (is (equal '("first" "second" "third") (slot-render :stack-test)))) (def-test replace-mode-last-wins () (clear-slot :replace-test) (defslot :replace-test :mode :replace :order 1 :render-fn (lambda () "old")) (defslot :replace-test :mode :replace :order 2 :render-fn (lambda () "new")) (is (equal "new" (slot-render :replace-test)))) (def-test single-winner-mode-first-wins () (clear-slot :winner-test) (defslot :winner-test :mode :single-winner :order 1 :render-fn (lambda () "alpha")) (defslot :winner-test :mode :single-winner :order 2 :render-fn (lambda () "beta")) (is (equal "alpha" (slot-render :winner-test)))) (def-test clear-slot-removes-mode () (clear-slot :mode-test) (defslot :mode-test :mode :replace :render-fn (lambda () "only")) (clear-slot :mode-test) (defslot :mode-test :mode :stack :render-fn (lambda () "fresh")) (is-true (slot-p :mode-test)) (is (equal '("fresh") (slot-render :mode-test))))