Rename: cl-tty avoids naming collision with Quicklisp's cl-tui (naryl/cl-tui, a cl-charms-based ncurses library). Our project is pure escape-sequence CL. v0.9.0 adds: - Dialog base class: modal overlay with backdrop, centered panel, size variants (:small/:medium/:large), stack-based management - Dialog subclasses: alert, confirm, select-dialog, prompt-dialog - Toast notifications: transient, top-right corner, auto-dismiss, colored variants (info/success/warning/error) - 78 tests total, 100% passing ASDF: read-time package references (+fiveam:+) replaced with find-symbol so .asd loads without FiveAM pre-loaded
44 lines
1.3 KiB
Common Lisp
44 lines
1.3 KiB
Common Lisp
;;; dialog-tests.lisp — Tests for cl-tty.dialog
|
|
|
|
(defpackage :cl-tty-dialog-test
|
|
(:use :cl :cl-tty.dialog :fiveam))
|
|
|
|
(in-package :cl-tty-dialog-test)
|
|
|
|
(def-suite dialog-suite :description "Dialog + Toast tests for cl-tty.dialog")
|
|
(in-suite dialog-suite)
|
|
|
|
(def-test dialog-create ()
|
|
(let ((d (make-instance 'dialog :title "Test")))
|
|
(is-true (typep d 'dialog))
|
|
(is (equal "Test" (dialog-title d)))))
|
|
|
|
(def-test dialog-size-small ()
|
|
(multiple-value-bind (w h) (dialog-size-pixels :small)
|
|
(is (= 40 w))
|
|
(is (= 8 h))))
|
|
|
|
(def-test dialog-size-medium ()
|
|
(multiple-value-bind (w h) (dialog-size-pixels :medium)
|
|
(is (= 60 w))
|
|
(is (= 16 h))))
|
|
|
|
(def-test dialog-push-pop ()
|
|
(let ((*dialog-stack* nil))
|
|
(push-dialog (make-instance 'dialog :title "D1"))
|
|
(is (= 1 (length *dialog-stack*)))
|
|
(push-dialog (make-instance 'dialog :title "D2"))
|
|
(is (= 2 (length *dialog-stack*)))
|
|
(pop-dialog)
|
|
(is (= 1 (length *dialog-stack*)))))
|
|
|
|
(def-test toast-create ()
|
|
(let ((*toasts* nil))
|
|
(toast "Hello" :variant :info :duration 0)
|
|
(is (= 1 (length *toasts*)))))
|
|
|
|
(def-test toast-dismiss ()
|
|
(let ((*toasts* (list (make-instance 'toast :message "T" :variant :info))))
|
|
(dismiss-toast (first *toasts*))
|
|
(is (= 0 (length *toasts*)))))
|