summaryrefslogtreecommitdiff
path: root/models/models_test.go
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2026-02-28 07:57:49 +0300
committerGrail Finder <wohilas@gmail.com>2026-02-28 07:57:49 +0300
commite52143407367e54f5b04177957f5f0436e28718b (patch)
tree9a1abc47cb7f07a924179e66925d3bfc7c1d9ac3 /models/models_test.go
parent916c5d3904b366e9f7f6f12867f7f0b71791bb6f (diff)
Refactor: move msg totext method to main package
logic requires reference to config
Diffstat (limited to 'models/models_test.go')
-rw-r--r--models/models_test.go161
1 files changed, 0 insertions, 161 deletions
diff --git a/models/models_test.go b/models/models_test.go
deleted file mode 100644
index 3b6476a..0000000
--- a/models/models_test.go
+++ /dev/null
@@ -1,161 +0,0 @@
-package models
-import (
- "strings"
- "testing"
-)
-func TestRoleMsgToTextWithImages(t *testing.T) {
- tests := []struct {
- name string
- msg RoleMsg
- index int
- expected string // substring to check
- }{
- {
- name: "text and image",
- index: 0,
- msg: func() RoleMsg {
- msg := NewMultimodalMsg("user", []interface{}{})
- msg.AddTextPart("Look at this picture")
- msg.AddImagePart("data:image/jpeg;base64,abc123", "/home/user/Pictures/cat.jpg")
- return msg
- }(),
- expected: "[orange::i][image: /home/user/Pictures/cat.jpg][-:-:-]",
- },
- {
- name: "image only",
- index: 1,
- msg: func() RoleMsg {
- msg := NewMultimodalMsg("user", []interface{}{})
- msg.AddImagePart("data:image/png;base64,xyz789", "/tmp/screenshot_20250217_123456.png")
- return msg
- }(),
- expected: "[orange::i][image: /tmp/screenshot_20250217_123456.png][-:-:-]",
- },
- {
- name: "long filename truncated",
- index: 2,
- msg: func() RoleMsg {
- msg := NewMultimodalMsg("user", []interface{}{})
- msg.AddTextPart("Check this")
- msg.AddImagePart("data:image/jpeg;base64,foo", "/very/long/path/to/a/really_long_filename_that_exceeds_forty_characters.jpg")
- return msg
- }(),
- expected: "[orange::i][image: .../to/a/really_long_filename_that_exceeds_forty_characters.jpg][-:-:-]",
- },
- {
- name: "multiple images",
- index: 3,
- msg: func() RoleMsg {
- msg := NewMultimodalMsg("user", []interface{}{})
- msg.AddTextPart("Multiple images")
- msg.AddImagePart("data:image/jpeg;base64,a", "/path/img1.jpg")
- msg.AddImagePart("data:image/png;base64,b", "/path/img2.png")
- return msg
- }(),
- expected: "[orange::i][image: /path/img1.jpg][-:-:-]\n[orange::i][image: /path/img2.png][-:-:-]",
- },
- {
- name: "old format without path",
- index: 4,
- msg: RoleMsg{
- Role: "user",
- hasContentParts: true,
- ContentParts: []interface{}{
- map[string]interface{}{
- "type": "image_url",
- "image_url": map[string]interface{}{
- "url": "data:image/jpeg;base64,old",
- },
- },
- },
- },
- expected: "[orange::i][image: image][-:-:-]",
- },
- {
- name: "old format with path",
- index: 5,
- msg: RoleMsg{
- Role: "user",
- hasContentParts: true,
- ContentParts: []interface{}{
- map[string]interface{}{
- "type": "image_url",
- "path": "/old/path/photo.jpg",
- "image_url": map[string]interface{}{
- "url": "data:image/jpeg;base64,old",
- },
- },
- },
- },
- expected: "[orange::i][image: /old/path/photo.jpg][-:-:-]",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- result := tt.msg.ToText(tt.index)
- if !strings.Contains(result, tt.expected) {
- t.Errorf("ToText() result does not contain expected indicator\ngot: %s\nwant substring: %s", result, tt.expected)
- }
- // Ensure the indicator appears before text content
- if strings.Contains(tt.expected, "cat.jpg") && strings.Contains(result, "Look at this picture") {
- indicatorPos := strings.Index(result, "[orange::i][image: /home/user/Pictures/cat.jpg][-:-:-]")
- textPos := strings.Index(result, "Look at this picture")
- if indicatorPos == -1 || textPos == -1 || indicatorPos >= textPos {
- t.Errorf("image indicator should appear before text")
- }
- }
- })
- }
-}
-func TestExtractDisplayPath(t *testing.T) {
- // Save original base dir
- originalBaseDir := imageBaseDir
- defer func() { imageBaseDir = originalBaseDir }()
- tests := []struct {
- name string
- baseDir string
- path string
- expected string
- }{
- {
- name: "no base dir shows full path",
- baseDir: "",
- path: "/home/user/images/cat.jpg",
- expected: "/home/user/images/cat.jpg",
- },
- {
- name: "relative path within base dir",
- baseDir: "/home/user",
- path: "/home/user/images/cat.jpg",
- expected: "images/cat.jpg",
- },
- {
- name: "path outside base dir shows full path",
- baseDir: "/home/user",
- path: "/tmp/test.jpg",
- expected: "/tmp/test.jpg",
- },
- {
- name: "same directory",
- baseDir: "/home/user/images",
- path: "/home/user/images/cat.jpg",
- expected: "cat.jpg",
- },
- {
- name: "long path truncated",
- baseDir: "",
- path: "/very/long/path/to/a/really_long_filename_that_exceeds_sixty_characters_limit_yes_it_is_very_long.jpg",
- expected: "..._that_exceeds_sixty_characters_limit_yes_it_is_very_long.jpg",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- imageBaseDir = tt.baseDir
- result := extractDisplayPath(tt.path)
- if result != tt.expected {
- t.Errorf("extractDisplayPath(%q) with baseDir=%q = %q, want %q",
- tt.path, tt.baseDir, result, tt.expected)
- }
- })
- }
-}