1package config
2
3import (
4 "testing"
5
6 "github.com/spf13/viper"
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
9)
10
11func TestModeLegendDefaultsThroughLoader(t *testing.T) {
12 mgr := &Manager{viper: viper.New()}
13 mgr.setDefaults()
14 cfg, err := mgr.unmarshalConfig()
15 require.NoError(t, err)
16 assert.Equal(t, "delay", cfg.Workspace.Styling.ModeLegend)
17 assert.Equal(t, 500, cfg.Workspace.Styling.ModeLegendDelayMs)
18 assert.True(t, cfg.Workspace.Styling.ModeLegendAnimations)
19 assert.True(t, cfg.Workspace.Styling.ModeLegendLinger)
20 assert.Equal(t, "#F7768E", cfg.Workspace.Styling.VimModeColor)
21}
22
23func TestSetEngineDefaults(t *testing.T) {
24 mgr := &Manager{viper: viper.New()}
25 mgr.setDefaults()
26
27 // Universal engine fields
28 assert.Equal(t, EngineTypeCEF, mgr.viper.GetString("engine.type"))
29 assert.Equal(t, "default", mgr.viper.GetString("engine.profile"))
30 assert.Equal(t, "always", mgr.viper.GetString("engine.cookie_policy"))
31 assert.Equal(t, 4, mgr.viper.GetInt("engine.pool_prewarm_count"))
32 assert.Equal(t, 256, mgr.viper.GetInt("engine.zoom_cache_size"))
33 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_wheel_multiplier"), 0.001)
34 assert.InDelta(t, defaultCEFScrollPreciseMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_precise_multiplier"), 0.001)
35 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_horizontal_multiplier"), 0.001)
36 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_vertical_multiplier"), 0.001)
37 assert.Equal(t, defaultCEFScrollMaxDelta, mgr.viper.GetInt("engine.cef.input.scroll_max_delta"))
38 assert.Equal(t, defaultCEFScrollTouchpadInertia, mgr.viper.GetBool("engine.cef.input.scroll_touchpad_inertia"))
39 assert.Equal(t, defaultCEFScrollWheelSmoothing, mgr.viper.GetBool("engine.cef.input.scroll_wheel_smoothing"))
40 assert.True(t, mgr.viper.GetBool("engine.cef.input.scroll_touchpad_inertia"))
41 assert.True(t, mgr.viper.GetBool("engine.cef.input.scroll_wheel_smoothing"))
42 assert.Equal(t, defaultCEFTouchpadNavigation, mgr.viper.GetBool("engine.cef.input.touchpad_navigation_enabled"))
43 assert.InDelta(t, defaultCEFTouchpadNavigationDelta, mgr.viper.GetFloat64("engine.cef.input.touchpad_navigation_min_delta"), 0.001)
44 assert.InDelta(t, defaultCEFTouchpadNavigationRatio, mgr.viper.GetFloat64("engine.cef.input.touchpad_navigation_max_vertical_ratio"), 0.001)
45
46 // WebKit-specific engine fields
47 assert.True(t, mgr.viper.GetBool("engine.webkit.itp_enabled"))
48 assert.Equal(t, "auto", mgr.viper.GetString("engine.webkit.gsk_renderer"))
49 assert.Equal(t, "auto", mgr.viper.GetString("engine.webkit.gl_rendering_mode"))
50 assert.False(t, mgr.viper.GetBool("engine.webkit.disable_dmabuf_renderer"))
51
52 // Old sections should NOT be registered as defaults
53 assert.Empty(t, mgr.viper.GetString("privacy.cookie_policy"))
54 assert.Empty(t, mgr.viper.GetString("rendering.mode"))
55 assert.Empty(t, mgr.viper.GetString("performance.profile"))
56 assert.Empty(t, mgr.viper.GetString("runtime.prefix"))
57}
58
59func TestScrollInertiaOptions_ExplicitFalseSurvivesUnmarshal(t *testing.T) {
60 mgr := &Manager{viper: viper.New()}
61 mgr.setDefaults()
62 mgr.viper.Set("engine.cef.input.scroll_touchpad_inertia", false)
63 mgr.viper.Set("engine.cef.input.scroll_wheel_smoothing", false)
64
65 cfg, err := mgr.unmarshalConfig()
66 require.NoError(t, err)
67 assert.False(t, cfg.Engine.CEF.Input.ScrollTouchpadInertia)
68 assert.False(t, cfg.Engine.CEF.Input.ScrollWheelSmoothing)
69}
70
71func TestScrollInertiaOptions_DefaultTrueThroughUnmarshal(t *testing.T) {
72 mgr := &Manager{viper: viper.New()}
73 mgr.setDefaults()
74
75 cfg, err := mgr.unmarshalConfig()
76 require.NoError(t, err)
77 assert.True(t, cfg.Engine.CEF.Input.ScrollTouchpadInertia)
78 assert.True(t, cfg.Engine.CEF.Input.ScrollWheelSmoothing)
79}
80
81func TestNormalizeExternalLinks(t *testing.T) {
82 cfg := DefaultConfig()
83 cfg.Workspace.ExternalLinks.Behavior = "invalid"
84 cfg.Workspace.ExternalLinks.Placement = "invalid"
85
86 normalizeConfig(cfg)
87
88 assert.Equal(t, ExternalLinkBehaviorWindowed, cfg.Workspace.ExternalLinks.Behavior)
89 assert.Equal(t, ExternalLinkPlacementRight, cfg.Workspace.ExternalLinks.Placement)
90}
91
92func TestNormalizeConfig_EngineCookiePolicy(t *testing.T) {
93 cfg := DefaultConfig()
94 cfg.Engine.CookiePolicy = CookiePolicy("INVALID")
95
96 normalizeConfig(cfg)
97
98 assert.Equal(t, CookiePolicyAlways, cfg.Engine.CookiePolicy)
99}