1package vulkan
2
3import (
4 "github.com/bnema/neferwl/internal/ports"
5 "github.com/stretchr/testify/require"
6 "image"
7 "math"
8 "testing"
9)
10
11func TestSelectionOutlineRoundedRing(t *testing.T) {
12 for _, scale := range []int{1, 2} {
13 r := &Renderer{width: 128, height: 128}
14 s := ports.Scene{Scale: float64(scale), Border: ports.Border{Active: "#00ff00"}, Outline: &ports.SelectionOutline{Rect: ports.Rect{X: 8, Y: 4, W: 40, H: 30}, Width: 3, Radius: 11, Active: true}}
15 ds := r.draws(s, nil, newDamage(&target{}, s, image.Rect(0, 0, 128, 128)))
16 require.Len(t, ds, 1)
17 d := ds[0]
18 require.Equal(t, uint32(flagRounded|flagRing), d.pc.misc[1]&(flagRounded|flagRing))
19 require.Equal(t, [4]int32{8 * int32(scale), 4 * int32(scale), 48 * int32(scale), 34 * int32(scale)}, d.pc.rect)
20 require.Equal(t, [4]float32{0, 1, 0, 1}, d.pc.color)
21 require.Equal(t, math.Float32bits(float32(11*scale)), d.radii[0])
22 require.Equal(t, math.Float32bits(float32(8*scale)), d.radii[1])
23 require.Equal(t, roundRect(image.Rect(11*scale, 7*scale, 45*scale, 31*scale)), d.roundInner)
24 }
25}