1 package v2
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7
8 v1 "edge-infra.dev/pkg/sds/display/k8s/apis/v1"
9 )
10
11 func TestValidateDisplayPorts(t *testing.T) {
12 tcs := []struct {
13 displayConfig *DisplayConfig
14 valid bool
15 }{
16
17 {
18 displayConfig: &DisplayConfig{Displays: Displays{}},
19 valid: true,
20 },
21
22 {
23 displayConfig: &DisplayConfig{Displays: Displays{
24 {DisplayPort: NewDisplayPort("card0", "DP1")},
25 }},
26 valid: true,
27 },
28
29 {
30 displayConfig: &DisplayConfig{Displays: Displays{
31 {DisplayPort: NewDisplayPort("card0", "DP1")},
32 {DisplayPort: NewDisplayPort("card1", "DP2")},
33 }},
34 valid: true,
35 },
36
37 {
38 displayConfig: &DisplayConfig{Displays: Displays{
39 {DisplayPort: NewDisplayPort("card0", "DP1")},
40 {DisplayPort: NewDisplayPort("card0", "DP1")},
41 }},
42 valid: false,
43 },
44 }
45 for idx, tc := range tcs {
46 err := tc.displayConfig.Validate()
47 if tc.valid {
48 assert.NoError(t, err, "test case %d failed: display config should be valid", idx+1)
49 continue
50 }
51 assert.Error(t, err, "test case %d failed: display config should be invalid", idx+1)
52 }
53 }
54
55 func TestValidateNonSettableFields(t *testing.T) {
56 mpid := MPID("1234")
57 tcs := []struct {
58 displayConfig *DisplayConfig
59 valid bool
60 }{
61
62 {
63 displayConfig: &DisplayConfig{Displays: Displays{
64 {MPID: nil, SupportedResolutions: []Resolution{}},
65 }},
66 valid: false,
67 },
68
69 {
70 displayConfig: &DisplayConfig{Displays: Displays{
71 {MPID: &mpid, SupportedResolutions: nil},
72 }},
73 valid: false,
74 },
75
76 {
77 displayConfig: &DisplayConfig{Displays: Displays{
78 {MPID: nil, SupportedResolutions: nil},
79 }},
80 valid: true,
81 },
82 }
83 for idx, tc := range tcs {
84 err := tc.displayConfig.Validate()
85 if tc.valid {
86 assert.NoError(t, err, "test case %d failed: display config should be valid", idx+1)
87 continue
88 }
89 assert.Error(t, err, "test case %d failed: display config should be invalid", idx+1)
90 }
91 }
92
93 func TestValidateV1(t *testing.T) {
94 tcs := []struct {
95 displayConfig *DisplayConfig
96 valid bool
97 }{
98
99 {
100 displayConfig: &DisplayConfig{V1: nil},
101 valid: true,
102 },
103
104 {
105 displayConfig: &DisplayConfig{Displays: Displays{
106 {Primary: &primary, DisplayPort: NewDisplayPort("card0", "DP1")},
107 },
108 V1: &v1.DisplayConfig{}},
109 valid: false,
110 },
111
112 {
113 displayConfig: &DisplayConfig{
114 Layout: Layout{NewDisplayPort("card0", "DP1")},
115 V1: &v1.DisplayConfig{},
116 },
117 valid: false,
118 },
119
120 {
121 displayConfig: &DisplayConfig{
122 DPMS: &DPMS{
123 StandbyTime: &thirtySeconds,
124 SuspendTime: &sixtySeconds,
125 OffTime: &ninetySeconds,
126 },
127 V1: &v1.DisplayConfig{}},
128 valid: false,
129 },
130
131 {
132 displayConfig: &DisplayConfig{
133 V1: &v1.DisplayConfig{},
134 },
135 valid: true,
136 },
137 }
138 for idx, tc := range tcs {
139 err := tc.displayConfig.Validate()
140 if tc.valid {
141 assert.NoError(t, err, "test case %d failed: display config should be valid", idx+1)
142 continue
143 }
144 assert.Error(t, err, "test case %d failed: display config should be invalid", idx+1)
145 }
146 }
147
148 func TestValidatePrimary(t *testing.T) {
149 tcs := []struct {
150 displayConfig *DisplayConfig
151 valid bool
152 }{
153
154 {
155 displayConfig: &DisplayConfig{
156 Displays: Displays{
157 {DisplayPort: NewDisplayPort("card0", "DP1")},
158 {DisplayPort: NewDisplayPort("card1", "DP2")},
159 },
160 },
161 valid: true,
162 },
163
164 {
165 displayConfig: &DisplayConfig{
166 Displays: Displays{
167 {Primary: &primary, DisplayPort: NewDisplayPort("card0", "DP1")},
168 },
169 },
170 valid: true,
171 },
172
173 {
174 displayConfig: &DisplayConfig{Displays: Displays{
175 {Primary: &primary, DisplayPort: NewDisplayPort("card0", "DP1")},
176 {Primary: &primary, DisplayPort: NewDisplayPort("card1", "DP2")},
177 }},
178 valid: false,
179 },
180 }
181 for idx, tc := range tcs {
182 err := tc.displayConfig.Validate()
183 if tc.valid {
184 assert.NoError(t, err, "test case %d failed: display config should be valid", idx+1)
185 continue
186 }
187 assert.Error(t, err, "test case %d failed: display config should be invalid", idx+1)
188 }
189 }
190
191 func TestValidateDMPS(t *testing.T) {
192 tcs := []struct {
193 displayConfig *DisplayConfig
194 valid bool
195 }{
196
197 {
198 displayConfig: &DisplayConfig{DPMS: nil},
199 valid: true,
200 },
201
202 {
203 displayConfig: &DisplayConfig{DPMS: &DPMS{
204 StandbyTime: &sixtySeconds,
205 SuspendTime: &thirtySeconds,
206 }},
207 valid: false,
208 },
209
210 {
211 displayConfig: &DisplayConfig{DPMS: &DPMS{
212 SuspendTime: &sixtySeconds,
213 OffTime: &thirtySeconds,
214 }},
215 valid: false,
216 },
217
218 {
219 displayConfig: &DisplayConfig{DPMS: &DPMS{
220 StandbyTime: &thirtySeconds,
221 SuspendTime: &sixtySeconds,
222 OffTime: &ninetySeconds,
223 }},
224 valid: true,
225 },
226 }
227 for idx, tc := range tcs {
228 err := tc.displayConfig.Validate()
229 if tc.valid {
230 assert.NoError(t, err, "test case %d failed: display config should be valid", idx+1)
231 continue
232 }
233 assert.Error(t, err, "test case %d failed: display config should be invalid", idx+1)
234 }
235 }
236
View as plain text