1package theme
2
3import (
4 "testing"
5
6 renderer "github.com/bnema/vev-vt"
7 "github.com/stretchr/testify/require"
8)
9
10func TestNeutralSessionSurfaceHierarchy(t *testing.T) {
11 black := renderer.RGB{}
12 white := renderer.RGB{R: 255, G: 255, B: 255}
13 for _, tt := range []struct {
14 name string
15 foreground, background renderer.RGB
16 }{
17 {name: "dark", foreground: white, background: black},
18 {name: "light", foreground: black, background: white},
19 } {
20 t.Run(tt.name, func(t *testing.T) {
21 theme := Theme{Known: true, Foreground: tt.foreground, Background: tt.background, HasFG: true, HasBG: true}
22 styles := neutralStyles(theme)
23 require.Equal(t, tt.foreground, styles.SurfaceActive.BackgroundRGB)
24 require.Equal(t, tt.background, styles.SurfaceActive.ForegroundRGB)
25 require.Equal(t, styles.TabActive.BackgroundRGB, styles.SurfaceActive.BackgroundRGB)
26 require.Equal(t, styles.SurfaceActive.BackgroundRGB, styles.TabActiveTitle.BackgroundRGB)
27 soft := Blend(tt.background, tt.foreground, neutralAccentBlend)
28 for _, selection := range []renderer.Style{styles.PickerSelection, styles.Selection, styles.SearchSelection} {
29 require.Equal(t, soft, selection.BackgroundRGB)
30 }
31 require.Equal(t, Blend(styles.SurfaceBar.BackgroundRGB, tt.foreground, 0.5), styles.MRUStyle(0, 3).BackgroundRGB)
32 for count := 1; count <= 9; count++ {
33 for index := range count {
34 want := Blend(styles.SurfaceActive.BackgroundRGB, styles.SurfaceBar.BackgroundRGB, 1-mruWeight(index, count))
35 require.Equal(t, want, styles.MRUStyle(index, count).BackgroundRGB)
36 }
37 }
38 })
39 }
40}