| 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "testing" |
| 5 | |
| 6 | "reasonix/internal/config" |
| 7 | ) |
| 8 | |
| 9 | func TestReasoningDisplayDefaultsAndPersistsUserSelection(t *testing.T) { |
| 10 | isolateDesktopUserDirs(t) |
| 11 | |
| 12 | app := NewApp() |
| 13 | settings := app.Settings() |
| 14 | startup := app.DesktopStartupSettings() |
| 15 | if settings.DisplayMode != "standard" || settings.ReasoningDisplayMode != "auto" || settings.ReasoningDisplayModeExplicit { |
| 16 | t.Fatalf("Settings() defaults = display:%q reasoning:%q explicit:%t, want standard/auto/false", settings.DisplayMode, settings.ReasoningDisplayMode, settings.ReasoningDisplayModeExplicit) |
| 17 | } |
| 18 | if startup.DisplayMode != "standard" || startup.ReasoningDisplayMode != "auto" || startup.ReasoningDisplayModeExplicit { |
| 19 | t.Fatalf("DesktopStartupSettings() defaults = display:%q reasoning:%q explicit:%t, want standard/auto/false", startup.DisplayMode, startup.ReasoningDisplayMode, startup.ReasoningDisplayModeExplicit) |
| 20 | } |
| 21 | |
| 22 | if err := app.SetReasoningDisplayMode("summary"); err != nil { |
| 23 | t.Fatalf("SetReasoningDisplayMode(summary): %v", err) |
| 24 | } |
| 25 | settings = app.Settings() |
| 26 | startup = app.DesktopStartupSettings() |
| 27 | if settings.SessionExperience != "standard" || settings.ReasoningDisplayMode != "auto" || !settings.ReasoningDisplayModeExplicit { |
| 28 | t.Fatalf("Settings() legacy mapping = experience:%q reasoning:%q explicit:%t, want standard/auto/true", settings.SessionExperience, settings.ReasoningDisplayMode, settings.ReasoningDisplayModeExplicit) |
| 29 | } |
| 30 | if startup.SessionExperience != "standard" || startup.ReasoningDisplayMode != "auto" || !startup.ReasoningDisplayModeExplicit { |
| 31 | t.Fatalf("DesktopStartupSettings() legacy mapping = experience:%q reasoning:%q explicit:%t, want standard/auto/true", startup.SessionExperience, startup.ReasoningDisplayMode, startup.ReasoningDisplayModeExplicit) |
| 32 | } |
| 33 | persisted := config.LoadForEdit(config.UserConfigPath()) |
| 34 | if persisted.DesktopSessionExperience() != "standard" || persisted.DesktopReasoningDisplayMode() != "auto" || !persisted.DesktopReasoningDisplayModeExplicit() { |
| 35 | t.Fatalf("persisted legacy mapping = %+v, want standard/auto", persisted.Desktop) |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | func TestLegacySessionExperienceSettersMapToCanonicalModes(t *testing.T) { |
| 40 | isolateDesktopUserDirs(t) |
| 41 | app := NewApp() |
| 42 | |
| 43 | if err := app.SetReasoningDisplayMode("expanded"); err != nil { |
| 44 | t.Fatal(err) |
| 45 | } |
| 46 | if got := app.Settings().SessionExperience; got != "deep" { |
| 47 | t.Fatalf("expanded reasoning = %q, want deep", got) |
| 48 | } |
| 49 | for _, apply := range []struct { |
| 50 | name string |
| 51 | call func() error |
| 52 | }{ |
| 53 | {name: "other reasoning", call: func() error { return app.SetReasoningDisplayMode("future-mode") }}, |
| 54 | {name: "display", call: func() error { return app.SetDisplayMode("compact") }}, |
| 55 | {name: "expand thinking", call: func() error { return app.SetExpandThinking(true) }}, |
| 56 | } { |
| 57 | if err := apply.call(); err != nil { |
| 58 | t.Fatalf("%s legacy setter: %v", apply.name, err) |
| 59 | } |
| 60 | settings := app.Settings() |
| 61 | if settings.SessionExperience != "standard" || settings.DisplayMode != "standard" || settings.ReasoningDisplayMode != "auto" { |
| 62 | t.Fatalf("%s mapping = experience:%q display:%q reasoning:%q", apply.name, settings.SessionExperience, settings.DisplayMode, settings.ReasoningDisplayMode) |
| 63 | } |
| 64 | } |
| 65 | } |
| 66 |