package paths

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

func TestDataDir(t *testing.T) {
	tmpDir := t.TempDir()

	// 1. $CHIRAMI_DATA override
	customData := filepath.Join(tmpDir, "custom-data")
	t.Setenv("CHIRAMI_DATA", customData)
	if got := DataDir(); got != customData {
		t.Errorf("DataDir with CHIRAMI_DATA = %q, want %q", got, customData)
	}

	t.Setenv("CHIRAMI_DATA", "")
	fakeHome := filepath.Join(tmpDir, "fakehome")
	t.Setenv("HOME", fakeHome)

	if runtime.GOOS == "darwin" {
		want := filepath.Join(fakeHome, "Library", "Application Support", "chirami")
		if got := DataDir(); got != want {
			t.Errorf("DataDir on darwin = %q, want %q", got, want)
		}
	} else {
		// Linux with XDG_DATA_HOME
		xdgData := filepath.Join(tmpDir, "xdg-data")
		t.Setenv("XDG_DATA_HOME", xdgData)
		wantXDG := filepath.Join(xdgData, "chirami")
		if got := DataDir(); got != wantXDG {
			t.Errorf("DataDir with XDG_DATA_HOME = %q, want %q", got, wantXDG)
		}

		// Linux without XDG_DATA_HOME
		t.Setenv("XDG_DATA_HOME", "")
		wantDefault := filepath.Join(fakeHome, ".local", "share", "chirami")
		if got := DataDir(); got != wantDefault {
			t.Errorf("DataDir default linux = %q, want %q", got, wantDefault)
		}
	}
}
