1 package compatibility
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestCompare(t *testing.T) {
10 testcases := []struct {
11 title string
12 operation Operation
13 staticVersion string
14 actualVersion string
15 err error
16 expected bool
17 }{
18 {
19 title: "Test Case 1 - Equal Op (Variant 1)",
20 operation: Equal,
21 staticVersion: "0.21",
22 actualVersion: "0.21",
23 err: nil,
24 expected: true,
25 },
26 {
27 title: "Test Case 1 - Equal Op (Variant 2)",
28 operation: Equal,
29 staticVersion: "latest",
30 actualVersion: "latest",
31 err: nil,
32 expected: true,
33 },
34 {
35 title: "Test Case 1 - Equal Op (Variant 3)",
36 operation: Equal,
37 staticVersion: "0.21",
38 actualVersion: "0.19",
39 err: nil,
40 expected: false,
41 },
42 {
43 title: "Test Case 1 - Equal Op (Variant 4)",
44 operation: Equal,
45 staticVersion: "",
46 actualVersion: "0.19",
47 err: ErrStaticVersionRequired,
48 expected: false,
49 },
50 {
51 title: "Test Case 1 - Equal Op (Variant 4)",
52 operation: Equal,
53 staticVersion: "latest",
54 actualVersion: "",
55 err: ErrActualVersionRequired,
56 expected: false,
57 },
58 {
59 title: "Test Case 2 - LessThan Op (Variant 1)",
60 operation: LessThan,
61 staticVersion: "latest",
62 actualVersion: "0.20",
63 err: nil,
64 expected: false,
65 },
66 {
67 title: "Test Case 2 - LessThan Op (Variant 2)",
68 operation: LessThan,
69 staticVersion: "0.19",
70 actualVersion: "0.20",
71 err: nil,
72 expected: true,
73 },
74 {
75 title: "Test Case 2 - LessThan Op (Variant 3)",
76 operation: LessThan,
77 staticVersion: "0.21",
78 actualVersion: "0.20",
79 err: nil,
80 expected: false,
81 },
82 {
83 title: "Test Case 2 - LessThan Op (Variant 4)",
84 operation: LessThan,
85 staticVersion: "0.21",
86 actualVersion: "0.21",
87 err: nil,
88 expected: false,
89 },
90 {
91 title: "Test Case 3 - GreaterThan Op (Variant 1)",
92 operation: GreaterThan,
93 staticVersion: "0.21",
94 actualVersion: "0.20",
95 err: nil,
96 expected: true,
97 },
98 {
99 title: "Test Case 3 - GreaterThan Op (Variant 2)",
100 operation: GreaterThan,
101 staticVersion: "latest",
102 actualVersion: "0.20",
103 err: nil,
104 expected: true,
105 },
106 {
107 title: "Test Case 3 - GreaterThan Op (Variant 3)",
108 operation: GreaterThan,
109 staticVersion: "0.20",
110 actualVersion: "latest",
111 err: nil,
112 expected: false,
113 },
114 {
115 title: "Test Case 3 - GreaterThan Op (Variant 4)",
116 operation: GreaterThan,
117 staticVersion: "0.20",
118 actualVersion: "0.20",
119 err: nil,
120 expected: false,
121 },
122 {
123 title: "Test Case 4 - LessThanOrEqual Op (Variant 1)",
124 operation: LessThanOrEqual,
125 staticVersion: "latest",
126 actualVersion: "0.20",
127 err: nil,
128 expected: false,
129 },
130 {
131 title: "Test Case 4 - LessThanOrEqual Op (Variant 2)",
132 operation: LessThanOrEqual,
133 staticVersion: "0.19",
134 actualVersion: "0.20",
135 err: nil,
136 expected: true,
137 },
138 {
139 title: "Test Case 4 - LessThanOrEqual Op (Variant 3)",
140 operation: LessThanOrEqual,
141 staticVersion: "latest",
142 actualVersion: "latest",
143 err: nil,
144 expected: true,
145 },
146 {
147 title: "Test Case 4 - LessThanOrEqual Op (Variant 4)",
148 operation: LessThanOrEqual,
149 staticVersion: "0.20",
150 actualVersion: "0.20",
151 err: nil,
152 expected: true,
153 },
154 {
155 title: "Test Case 4 - LessThanOrEqual Op (Variant 5)",
156 operation: LessThanOrEqual,
157 staticVersion: "0.21",
158 actualVersion: "0.20",
159 err: nil,
160 expected: false,
161 },
162 {
163 title: "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
164 operation: GreaterThanOrEqual,
165 staticVersion: "latest",
166 actualVersion: "0.20",
167 err: nil,
168 expected: true,
169 },
170 {
171 title: "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
172 operation: GreaterThanOrEqual,
173 staticVersion: "0.19",
174 actualVersion: "0.20",
175 err: nil,
176 expected: false,
177 },
178 {
179 title: "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
180 operation: GreaterThanOrEqual,
181 staticVersion: "latest",
182 actualVersion: "latest",
183 err: nil,
184 expected: true,
185 },
186 {
187 title: "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
188 operation: GreaterThanOrEqual,
189 staticVersion: "0.20",
190 actualVersion: "0.20",
191 err: nil,
192 expected: true,
193 },
194 {
195 title: "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
196 operation: GreaterThanOrEqual,
197 staticVersion: "0.21",
198 actualVersion: "0.20",
199 err: nil,
200 expected: true,
201 },
202 }
203 for _, testcase := range testcases {
204 t.Run(testcase.title, func(t *testing.T) {
205 t.Parallel()
206 res, err := Compare(testcase.operation, testcase.staticVersion, testcase.actualVersion)
207 if err != nil {
208 assert.ErrorIs(t, err, testcase.err)
209 } else {
210 assert.Equal(t, testcase.expected, res)
211 }
212 })
213 }
214 }
215
View as plain text