package vision

import (
	"os"
	"path/filepath"
	"testing"
)

func TestResolveImagePath_underCWD(t *testing.T) {
	dir := t.TempDir()
	img := filepath.Join(dir, "shot.png")
	if err := os.WriteFile(img, []byte{0x89, 0x50, 0x4e, 0x47}, 0o644); err != nil {
		t.Fatal(err)
	}
	got, err := ResolveImagePath(img, dir)
	if err != nil {
		t.Fatal(err)
	}
	want := normalizeAbsPath(img)
	if got != want {
		t.Fatalf("got %q want %q", got, want)
	}
}

func TestResolveImagePath_absoluteOutsideCWD(t *testing.T) {
	dir := t.TempDir()
	cwd := t.TempDir()
	img := filepath.Join(dir, "remote.png")
	if err := os.WriteFile(img, []byte{0x89, 0x50, 0x4e, 0x47}, 0o644); err != nil {
		t.Fatal(err)
	}
	got, err := ResolveImagePath(img, cwd)
	if err != nil {
		t.Fatalf("expected absolute path outside cwd to be allowed: %v", err)
	}
	want := normalizeAbsPath(img)
	if got != want {
		t.Fatalf("got %q want %q", got, want)
	}
}

func TestResolveImagePath_rejectsNonImageExt(t *testing.T) {
	dir := t.TempDir()
	f := filepath.Join(dir, "notes.txt")
	if err := os.WriteFile(f, []byte("x"), 0o644); err != nil {
		t.Fatal(err)
	}
	_, err := ResolveImagePath(f, dir)
	if err == nil {
		t.Fatal("expected error for non-image extension")
	}
}
