1package app
2
3import (
4 "errors"
5 "testing"
6
7 "github.com/bnema/neferwl/internal/ports"
8)
9
10func TestRetainedHeadsOnCardReadError(t *testing.T) {
11 first := []ports.OutputHead{{Info: ports.OutputInfo{Name: "DP-1"}, Enabled: true}}
12 other := []ports.OutputHead{{Info: ports.OutputInfo{Name: "HDMI-1"}, Enabled: true}}
13 cached := retainedHeads(nil, first, nil)
14 cached = retainedHeads(cached, nil, errors.New("resources unavailable"))
15 combined := append(append([]ports.OutputHead{}, cached...), other...)
16 if len(combined) != 2 || combined[0].Info.Name != "DP-1" || combined[1].Info.Name != "HDMI-1" {
17 t.Fatalf("failed card lost its inventory: %+v", combined)
18 }
19 if got := retainedHeads(cached, nil, nil); len(got) != 0 {
20 t.Fatalf("successful empty inventory should clear cache: %+v", got)
21 }
22}
23
24func TestReleasedHeadOnInventoryError(t *testing.T) {
25 mode := ports.OutputMode{Width: 1920, Height: 1080}
26 previous := []ports.OutputHead{{Info: ports.OutputInfo{Name: "DP-1"}, Enabled: true, Current: &mode}, {Info: ports.OutputInfo{Name: "HDMI-1"}, Enabled: true, Current: &mode}}
27 // Both a disabled stop and an unsuccessful restart release the old instance.
28 for _, restart := range []bool{false, true} {
29 t.Run(map[bool]string{false: "disabled", true: "restart"}[restart], func(t *testing.T) {
30 heads := releasedHead(append([]ports.OutputHead(nil), previous...), "DP-1")
31 heads = retainedHeads(heads, nil, errors.New("inventory unavailable"))
32 if heads[0].Enabled || heads[0].Current != nil || !heads[1].Enabled {
33 t.Fatalf("released connector inventory: %+v", heads)
34 }
35 })
36 }
37}