1package vulkan
2
3import (
4 "image"
5 "testing"
6
7 "github.com/bnema/neferwl/internal/ports"
8)
9
10func TestSceneDropHintsOrder(t *testing.T) {
11 r := &Renderer{width: 80, height: 60}
12 s := ports.Scene{
13 Border: ports.Border{Active: "#ff0000"},
14 Windows: []ports.SceneWindow{
15 {ID: 1, Rect: ports.Rect{W: 40, H: 60}},
16 {ID: 2, Floating: true, Rect: ports.Rect{X: 50, W: 20, H: 20}},
17 },
18 Layers: []ports.SceneLayer{{ID: 9, Layer: ports.LayerTop, Rect: ports.Rect{W: 80, H: 5}}},
19 DropHints: []ports.Rect{{X: 38, W: 4, H: 60}, {W: 0, H: 10}},
20 }
21 got := r.draws(s, nil, newDamage(&target{}, s, image.Rect(0, 0, 80, 60)))
22 // tile, float, one hint (the empty one is skipped), then the top layer.
23 hint := -1
24 for i, d := range got {
25 if d.pc.color == [4]float32{1, 0, 0, 1} {
26 if hint >= 0 {
27 t.Fatalf("two hints: %+v", got)
28 }
29 hint = i
30 }
31 }
32 if hint != 2 || got[hint].pc.rect != [4]int32{38, 0, 42, 60} {
33 t.Fatalf("hint at %d: %+v", hint, got)
34 }
35 s.DropHints = nil
36 if n := len(r.draws(s, nil, newDamage(&target{}, s, image.Rect(0, 0, 80, 60)))); n != len(got)-1 {
37 t.Fatalf("draws without hints = %d, want %d", n, len(got)-1)
38 }
39}