package agent

import "testing"

func TestNormalizeReasoningEffortForRuntime(t *testing.T) {
	t.Parallel()

	tests := []struct {
		name            string
		runtime         string
		reasoningEffort string
		want            string
	}{
		{name: "codex_max_is_preserved", runtime: "codex", reasoningEffort: "max", want: "max"},
		{name: "codex_ultra_is_preserved", runtime: "codex", reasoningEffort: "ultra", want: "ultra"},
		{name: "codex_xhigh_is_preserved", runtime: "codex", reasoningEffort: "xhigh", want: "xhigh"},
		{name: "codex_whitespace_max_is_trimmed_only", runtime: " codex ", reasoningEffort: " max ", want: "max"},
		{name: "codex_high_kept", runtime: "codex", reasoningEffort: "high", want: "high"},
		{name: "other_runtime_keeps_max", runtime: "claude", reasoningEffort: "max", want: "max"},
	}

	for _, tt := range tests {
		tt := tt
		t.Run(tt.name, func(t *testing.T) {
			t.Parallel()
			if got := NormalizeReasoningEffortForRuntime(tt.runtime, tt.reasoningEffort); got != tt.want {
				t.Fatalf("NormalizeReasoningEffortForRuntime(%q, %q) = %q, want %q", tt.runtime, tt.reasoningEffort, got, tt.want)
			}
		})
	}
}
