/
index.spec.ts
267 lines (254 loc) · 8.37 KB
/
index.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
import { api as ubuntu } from '.';
describe('versioning/ubuntu/index', () => {
test.each`
version | expected
${undefined} | ${false}
${null} | ${false}
${''} | ${false}
${'xenial'} | ${false}
${'04.10'} | ${true}
${'05.04'} | ${true}
${'05.10'} | ${true}
${'6.06'} | ${true}
${'6.10'} | ${true}
${'7.04'} | ${true}
${'7.10'} | ${true}
${'8.04'} | ${true}
${'8.10'} | ${true}
${'9.04'} | ${true}
${'9.10'} | ${true}
${'10.04.4'} | ${true}
${'10.10'} | ${true}
${'11.04'} | ${true}
${'11.10'} | ${true}
${'12.04.5'} | ${true}
${'12.10'} | ${true}
${'13.04'} | ${true}
${'13.10'} | ${true}
${'14.04.6'} | ${true}
${'14.10'} | ${true}
${'15.04'} | ${true}
${'15.10'} | ${true}
${'16.04.7'} | ${true}
${'16.10'} | ${true}
${'17.04'} | ${true}
${'17.10'} | ${true}
${'18.04.5'} | ${true}
${'18.10'} | ${true}
${'19.04'} | ${true}
${'19.10'} | ${true}
${'20.04'} | ${true}
${'20.10'} | ${true}
${'2020.04'} | ${false}
`('isValid("$version") === $expected', ({ version, expected }) => {
expect(!!ubuntu.isValid(version)).toBe(expected);
});
test.each`
version | range | expected
${undefined} | ${undefined} | ${false}
${null} | ${undefined} | ${false}
${''} | ${undefined} | ${false}
${'04.10'} | ${undefined} | ${true}
${'20.10'} | ${undefined} | ${true}
`(
'isCompatible("$version") === $expected',
({ version, range, expected }) => {
const res = ubuntu.isCompatible(version, range);
expect(!!res).toBe(expected);
}
);
test.each`
version | expected
${undefined} | ${false}
${null} | ${false}
${''} | ${false}
${'20.04'} | ${true}
${'>=20.04'} | ${false}
`('isSingleVersion("$version") === $expected', ({ version, expected }) => {
expect(!!ubuntu.isSingleVersion(version)).toBe(expected);
});
test.each`
version | expected
${undefined} | ${false}
${null} | ${false}
${''} | ${false}
${'04.10'} | ${false}
${'05.04'} | ${false}
${'05.10'} | ${false}
${'6.06'} | ${false}
${'6.10'} | ${false}
${'7.04'} | ${false}
${'7.10'} | ${false}
${'8.04'} | ${true}
${'8.10'} | ${false}
${'9.04'} | ${false}
${'9.10'} | ${false}
${'10.04.4'} | ${true}
${'10.10'} | ${false}
${'11.04'} | ${false}
${'11.10'} | ${false}
${'12.04.5'} | ${true}
${'12.10'} | ${false}
${'13.04'} | ${false}
${'13.10'} | ${false}
${'14.04.6'} | ${true}
${'14.10'} | ${false}
${'15.04'} | ${false}
${'15.10'} | ${false}
${'16.04.7'} | ${true}
${'16.10'} | ${false}
${'17.04'} | ${false}
${'17.10'} | ${false}
${'18.04.5'} | ${true}
${'18.10'} | ${false}
${'19.04'} | ${false}
${'19.10'} | ${false}
${'20.04'} | ${true}
${'20.10'} | ${false}
${'42.01'} | ${false}
${'42.02'} | ${false}
${'42.03'} | ${false}
${'42.04'} | ${true}
${'42.05'} | ${false}
${'42.06'} | ${false}
${'42.07'} | ${false}
${'42.08'} | ${false}
${'42.09'} | ${false}
${'42.10'} | ${false}
${'42.11'} | ${false}
${'2020.04'} | ${false}
${'22.04'} | ${false}
`('isStable("$version") === $expected', ({ version, expected }) => {
const res = !!ubuntu.isStable(version);
expect(res).toBe(expected);
});
test.each`
version | expected
${undefined} | ${false}
${null} | ${false}
${''} | ${false}
${'02.10'} | ${false}
${'04.10'} | ${true}
${'05.04'} | ${true}
${'6.06'} | ${true}
${'8.04'} | ${true}
${'9.04'} | ${true}
${'10.04.4'} | ${true}
${'12.04.5'} | ${true}
${'13.04'} | ${true}
${'14.04.6'} | ${true}
${'15.04'} | ${true}
${'16.04.7'} | ${true}
${'16.10'} | ${true}
${'17.04'} | ${true}
${'18.04.5'} | ${true}
${'18.10'} | ${true}
${'20.04'} | ${true}
${'20.10'} | ${true}
${'30.11'} | ${true}
${'2020.04'} | ${false}
`('isVersion("$version") === $expected', ({ version, expected }) => {
expect(!!ubuntu.isVersion(version)).toBe(expected);
});
test.each`
version | major | minor | patch
${undefined} | ${null} | ${null} | ${null}
${null} | ${null} | ${null} | ${null}
${''} | ${null} | ${null} | ${null}
${'42'} | ${null} | ${null} | ${null}
${'2020.04'} | ${null} | ${null} | ${null}
${'04.10'} | ${4} | ${10} | ${null}
${'18.04.5'} | ${18} | ${4} | ${5}
${'20.04'} | ${20} | ${4} | ${null}
`(
'getMajor, getMinor, getPatch for "$version"',
({ version, major, minor, patch }) => {
expect(ubuntu.getMajor(version)).toBe(major);
expect(ubuntu.getMinor(version)).toBe(minor);
expect(ubuntu.getPatch(version)).toBe(patch);
}
);
test.each`
a | b | expected
${'20.04'} | ${'2020.04'} | ${false}
${'focal'} | ${'20.04'} | ${false}
${'20.04'} | ${'focal'} | ${false}
${'19.10'} | ${'19.10'} | ${true}
`('equals($a, $b) === $expected', ({ a, b, expected }) => {
expect(ubuntu.equals(a, b)).toBe(expected);
});
test.each`
a | b | expected
${'20.04'} | ${'20.10'} | ${false}
${'20.10'} | ${'20.04'} | ${true}
${'19.10'} | ${'20.04'} | ${false}
${'20.04'} | ${'19.10'} | ${true}
${'16.04'} | ${'16.04.7'} | ${false}
${'16.04.7'} | ${'16.04'} | ${true}
${'16.04.1'} | ${'16.04.7'} | ${false}
${'16.04.7'} | ${'16.04.1'} | ${true}
${'19.10.1'} | ${'20.04.1'} | ${false}
${'20.04.1'} | ${'19.10.1'} | ${true}
`('isGreaterThan("$a", "$b") === $expected', ({ a, b, expected }) => {
expect(ubuntu.isGreaterThan(a, b)).toBe(expected);
});
test.each`
versions | range | expected
${['18.10', '19.04', '19.10', '20.04']} | ${'2020.04'} | ${null}
${['18.10', '19.04', '19.10', '20.04']} | ${'foobar'} | ${null}
${['18.10', '19.04', '19.10', '20.04']} | ${'20.04'} | ${'20.04'}
${['18.10', '19.04', '19.10', '20.04']} | ${'19.10'} | ${'19.10'}
${['18.10', '19.04', '19.10', '20.04']} | ${'04.10'} | ${null}
`(
'getSatisfyingVersion($versions, "$range") === "$expected"',
({ versions, range, expected }) => {
expect(ubuntu.getSatisfyingVersion(versions, range)).toBe(expected);
}
);
test.each`
versions | range | expected
${['18.10', '19.04', '19.10', '20.04']} | ${'2020.04'} | ${null}
${['18.10', '19.04', '19.10', '20.04']} | ${'foobar'} | ${null}
${['18.10', '19.04', '19.10', '20.04']} | ${'20.04'} | ${'20.04'}
${['18.10', '19.04', '19.10', '20.04']} | ${'19.10'} | ${'19.10'}
${['18.10', '19.04', '19.10', '20.04']} | ${'04.10'} | ${null}
`(
'minSatisfyingVersion($versions, "$range") === "$expected"',
({ versions, range, expected }) => {
expect(ubuntu.minSatisfyingVersion(versions, range)).toBe(expected);
}
);
test.each`
currentValue | rangeStrategy | currentVersion | newVersion | expected
${undefined} | ${undefined} | ${undefined} | ${'foobar'} | ${'foobar'}
`(
'getNewValue("$currentValue", "$rangeStrategy", "$currentVersion", "$newVersion") === "$expected"',
({ currentValue, rangeStrategy, currentVersion, newVersion, expected }) => {
expect(
ubuntu.getNewValue({
currentValue,
rangeStrategy,
currentVersion,
newVersion,
})
).toBe(expected);
}
);
test.each`
versions | expected
${['17.03', '18.04', '18.04', '6.10', '19.10']} | ${['6.10', '17.03', '18.04', '18.04', '19.10']}
`('$versions -> sortVersions -> $expected ', ({ versions, expected }) => {
expect(versions.sort(ubuntu.sortVersions)).toEqual(expected);
});
test.each`
version | range | expected
${'20.04'} | ${'2020.04'} | ${false}
${'20.04'} | ${'20.04'} | ${true}
${'20.04'} | ${'20.04.0'} | ${false}
`(
'matches("$version", "$range") === "$expected"',
({ version, range, expected }) => {
expect(ubuntu.matches(version, range)).toBe(expected);
}
);
});