diff options
Diffstat (limited to 'tests/test-ai-term--default-geometry.el')
| -rw-r--r-- | tests/test-ai-term--default-geometry.el | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/test-ai-term--default-geometry.el b/tests/test-ai-term--default-geometry.el new file mode 100644 index 00000000..833f2ef4 --- /dev/null +++ b/tests/test-ai-term--default-geometry.el @@ -0,0 +1,56 @@ +;;; test-ai-term--default-geometry.el --- Tests for host-aware display defaults -*- lexical-binding: t; -*- + +;;; Commentary: +;; ai-term's default display geometry is host-aware: a laptop opens the +;; agent from the bottom (75% height), a desktop opens it from the right +;; (50% width). `cj/--ai-term-default-direction' and +;; `cj/--ai-term-default-size' encapsulate the `env-laptop-p' branch; +;; they feed the default fallbacks in `cj/--ai-term-capture-state' and +;; `cj/--ai-term-display-saved'. +;; +;; `env-laptop-p' is stubbed per-test so the assertions are deterministic +;; regardless of the host the suite runs on. + +;;; Code: + +(require 'ert) +(require 'cl-lib) + +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'ai-term) + +(ert-deftest test-ai-term--default-direction-laptop () + "Normal: on a laptop the default direction is `below'." + (cl-letf (((symbol-function 'env-laptop-p) (lambda () t))) + (should (eq (cj/--ai-term-default-direction) 'below)))) + +(ert-deftest test-ai-term--default-direction-desktop () + "Normal: on a desktop the default direction is `right'." + (cl-letf (((symbol-function 'env-laptop-p) (lambda () nil))) + (should (eq (cj/--ai-term-default-direction) 'right)))) + +(ert-deftest test-ai-term--default-size-laptop () + "Normal: on a laptop the default size is `cj/ai-term-laptop-height'." + (let ((cj/ai-term-laptop-height 0.75) + (cj/ai-term-desktop-width 0.5)) + (cl-letf (((symbol-function 'env-laptop-p) (lambda () t))) + (should (= (cj/--ai-term-default-size) 0.75))))) + +(ert-deftest test-ai-term--default-size-desktop () + "Normal: on a desktop the default size is `cj/ai-term-desktop-width'." + (let ((cj/ai-term-laptop-height 0.75) + (cj/ai-term-desktop-width 0.5)) + (cl-letf (((symbol-function 'env-laptop-p) (lambda () nil))) + (should (= (cj/--ai-term-default-size) 0.5))))) + +(ert-deftest test-ai-term--default-size-respects-custom-values () + "Boundary: the helper returns the customized values, not the literals." + (let ((cj/ai-term-laptop-height 0.6) + (cj/ai-term-desktop-width 0.33)) + (cl-letf (((symbol-function 'env-laptop-p) (lambda () t))) + (should (= (cj/--ai-term-default-size) 0.6))) + (cl-letf (((symbol-function 'env-laptop-p) (lambda () nil))) + (should (= (cj/--ai-term-default-size) 0.33))))) + +(provide 'test-ai-term--default-geometry) +;;; test-ai-term--default-geometry.el ends here |
