File size: 1,778 Bytes
8d3471e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
package util

import "testing"

func TestResolveThinkingEnabledPriority(t *testing.T) {
	req := map[string]any{
		"thinking": map[string]any{"type": "disabled"},
		"extra_body": map[string]any{
			"thinking": map[string]any{"type": "enabled"},
		},
		"reasoning_effort": "high",
	}
	if got := ResolveThinkingEnabled(req, true); got {
		t.Fatalf("expected top-level thinking to win, got enabled=%v", got)
	}
}

func TestResolveThinkingEnabledUsesExtraBodyFallback(t *testing.T) {
	req := map[string]any{
		"extra_body": map[string]any{
			"thinking": map[string]any{"type": "disabled"},
		},
	}
	if got := ResolveThinkingEnabled(req, true); got {
		t.Fatalf("expected extra_body thinking to disable, got enabled=%v", got)
	}
}

func TestResolveThinkingEnabledMapsReasoningEffortToEnabled(t *testing.T) {
	for _, effort := range []string{"minimal", "low", "medium", "high", "xhigh"} {
		if got := ResolveThinkingEnabled(map[string]any{"reasoning_effort": effort}, false); !got {
			t.Fatalf("expected reasoning_effort=%s to enable thinking", effort)
		}
	}
}

func TestResolveThinkingEnabledMapsReasoningObject(t *testing.T) {
	req := map[string]any{"reasoning": map[string]any{"effort": "none"}}
	if got := ResolveThinkingEnabled(req, true); got {
		t.Fatalf("expected reasoning.effort=none to disable thinking")
	}
	req = map[string]any{"reasoning": map[string]any{"effort": "medium"}}
	if got := ResolveThinkingEnabled(req, false); !got {
		t.Fatalf("expected reasoning.effort=medium to enable thinking")
	}
}

func TestResolveThinkingEnabledDefaultsWhenUnset(t *testing.T) {
	if !ResolveThinkingEnabled(nil, true) {
		t.Fatal("expected default thinking=true when unset")
	}
	if ResolveThinkingEnabled(nil, false) {
		t.Fatal("expected default thinking=false when unset")
	}
}