1package core
2
3import (
4 "github.com/bnema/neferwl/internal/ports"
5 "github.com/stretchr/testify/require"
6 "testing"
7)
8
9func squareOverviewOutline(dst []ports.Separator, layout []Placement, b int) []ports.Separator {
10 dst, _ = overviewOutline(dst, layout, b, 0, 0)
11 return dst
12}
13
14func TestOverviewRoundedOutline(t *testing.T) {
15 for _, tc := range []struct {
16 name string
17 gap, radius int
18 floating, card, cut, rounded bool
19 }{
20 {name: "tile gaps", gap: 8, radius: 12, rounded: true},
21 {name: "tile no gaps", radius: 12},
22 {name: "float no gaps", radius: 12, floating: true, rounded: true},
23 {name: "square", gap: 8},
24 {name: "cut", gap: 8, radius: 12, cut: true},
25 {name: "selected card", radius: 12, floating: true, card: true, cut: true, rounded: true},
26 } {
27 t.Run(tc.name, func(t *testing.T) {
28 p := Placement{Rect: Rect{X: 20, Y: 20, W: 100, H: 80}, Preview: 0.5, Focused: true, Floating: tc.floating, Card: tc.card}
29 layout := []Placement{p}
30 if tc.cut {
31 layout = append(layout, Placement{Rect: Rect{X: 80, Y: 20, W: 60, H: 40}, Preview: 0.5, Card: true})
32 }
33 divider := ports.Separator{Rect: Rect{W: 200, H: 1}}
34 strips, outline := overviewOutline([]ports.Separator{divider}, layout, 2, tc.gap, tc.radius)
35 if tc.rounded {
36 require.Equal(t, []ports.Separator{divider}, strips)
37 require.Equal(t, &ports.SelectionOutline{Rect: Rect{X: 18, Y: 18, W: 104, H: 84}, Width: 2, Radius: 14, Active: true}, outline)
38 } else {
39 require.Nil(t, outline)
40 require.Equal(t, append([]ports.Separator{divider}, squareOverviewOutline(nil, layout, 2)...), strips)
41 }
42 })
43 }
44}