summaryrefslogtreecommitdiff
path: root/tests/test-ai-config-model-to-string.el
blob: aa11492720c88087960d1cc8cc1259d0d6ec0677 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
;;; test-ai-config-model-to-string.el --- Tests for cj/gptel--model-to-string -*- lexical-binding: t; -*-

;;; Commentary:
;; Tests for cj/gptel--model-to-string from ai-config.el.
;;
;; Pure function that converts a model identifier (string, symbol, or
;; other type) to a string representation.  Branches on input type:
;; string (identity), symbol (symbol-name), fallback (format).

;;; Code:

(require 'ert)

(add-to-list 'load-path (expand-file-name "tests" user-emacs-directory))
(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
(require 'testutil-ai-config)
(require 'ai-config)

;;; Normal Cases

(ert-deftest test-ai-config-model-to-string-normal-string-returns-string ()
  "String model name should be returned unchanged."
  (should (equal (cj/gptel--model-to-string "claude-opus-4-6") "claude-opus-4-6")))

(ert-deftest test-ai-config-model-to-string-normal-symbol-returns-symbol-name ()
  "Symbol model name should return its symbol-name."
  (should (equal (cj/gptel--model-to-string 'gpt-4o) "gpt-4o")))

(ert-deftest test-ai-config-model-to-string-normal-number-returns-formatted ()
  "Numeric input should be formatted as a string."
  (should (equal (cj/gptel--model-to-string 42) "42")))

;;; Boundary Cases

(ert-deftest test-ai-config-model-to-string-boundary-empty-string-returns-empty ()
  "Empty string should be returned as empty string."
  (should (equal (cj/gptel--model-to-string "") "")))

(ert-deftest test-ai-config-model-to-string-boundary-nil-returns-nil-string ()
  "Nil is a symbol, so should return \"nil\"."
  (should (equal (cj/gptel--model-to-string nil) "nil")))

(ert-deftest test-ai-config-model-to-string-boundary-keyword-symbol-includes-colon ()
  "Keyword symbol should return its name including the colon."
  (should (equal (cj/gptel--model-to-string :some-model) ":some-model")))

(ert-deftest test-ai-config-model-to-string-boundary-list-uses-format-fallback ()
  "List input should hit the fallback format branch."
  (should (equal (cj/gptel--model-to-string '(a b)) "(a b)")))

(ert-deftest test-ai-config-model-to-string-boundary-vector-uses-format-fallback ()
  "Vector input should hit the fallback format branch."
  (should (equal (cj/gptel--model-to-string [1 2]) "[1 2]")))

(ert-deftest test-ai-config-model-to-string-boundary-string-with-spaces-unchanged ()
  "String with spaces should be returned unchanged."
  (should (equal (cj/gptel--model-to-string "model with spaces") "model with spaces")))

(provide 'test-ai-config-model-to-string)
;;; test-ai-config-model-to-string.el ends here