aboutsummaryrefslogtreecommitdiff
path: root/tests/test-ai-term--default-geometry.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-ai-term--default-geometry.el')
-rw-r--r--tests/test-ai-term--default-geometry.el56
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