diff options
Diffstat (limited to 'src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs')
-rw-r--r-- | src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs | 194 |
1 files changed, 172 insertions, 22 deletions
diff --git a/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs index ffa3213a..56c72896 100644 --- a/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs +++ b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace WixToolsetTest.Data | 3 | namespace WixToolsetTest.Data |
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Linq; | ||
6 | using WixToolset.Data; | 7 | using WixToolset.Data; |
7 | using Xunit; | 8 | using Xunit; |
8 | 9 | ||
@@ -16,6 +17,14 @@ namespace WixToolsetTest.Data | |||
16 | } | 17 | } |
17 | 18 | ||
18 | [Fact] | 19 | [Fact] |
20 | public void CanParseEmptyStringAsInvalidVersion() | ||
21 | { | ||
22 | var version = WixVersion.Parse(String.Empty); | ||
23 | Assert.Empty(version.Metadata); | ||
24 | Assert.True(version.Invalid); | ||
25 | } | ||
26 | |||
27 | [Fact] | ||
19 | public void CannotParseInvalidStringAsVersion() | 28 | public void CannotParseInvalidStringAsVersion() |
20 | { | 29 | { |
21 | Assert.False(WixVersion.TryParse("invalid", out var version)); | 30 | Assert.False(WixVersion.TryParse("invalid", out var version)); |
@@ -23,6 +32,14 @@ namespace WixToolsetTest.Data | |||
23 | } | 32 | } |
24 | 33 | ||
25 | [Fact] | 34 | [Fact] |
35 | public void CanParseInvalidStringAsInvalidVersion() | ||
36 | { | ||
37 | var version = WixVersion.Parse("invalid"); | ||
38 | Assert.Equal("invalid", version.Metadata); | ||
39 | Assert.True(version.Invalid); | ||
40 | } | ||
41 | |||
42 | [Fact] | ||
26 | public void CanParseFourPartVersion() | 43 | public void CanParseFourPartVersion() |
27 | { | 44 | { |
28 | Assert.True(WixVersion.TryParse("1.2.3.4", out var version)); | 45 | Assert.True(WixVersion.TryParse("1.2.3.4", out var version)); |
@@ -37,6 +54,7 @@ namespace WixToolsetTest.Data | |||
37 | Assert.True(version.HasRevision); | 54 | Assert.True(version.HasRevision); |
38 | Assert.Null(version.Labels); | 55 | Assert.Null(version.Labels); |
39 | Assert.Null(version.Metadata); | 56 | Assert.Null(version.Metadata); |
57 | Assert.False(version.Invalid); | ||
40 | } | 58 | } |
41 | 59 | ||
42 | [Fact] | 60 | [Fact] |
@@ -54,6 +72,7 @@ namespace WixToolsetTest.Data | |||
54 | Assert.False(version.HasRevision); | 72 | Assert.False(version.HasRevision); |
55 | Assert.Null(version.Labels); | 73 | Assert.Null(version.Labels); |
56 | Assert.Null(version.Metadata); | 74 | Assert.Null(version.Metadata); |
75 | Assert.False(version.Invalid); | ||
57 | } | 76 | } |
58 | 77 | ||
59 | [Fact] | 78 | [Fact] |
@@ -71,6 +90,7 @@ namespace WixToolsetTest.Data | |||
71 | Assert.True(version.HasRevision); | 90 | Assert.True(version.HasRevision); |
72 | Assert.Null(version.Labels); | 91 | Assert.Null(version.Labels); |
73 | Assert.Null(version.Metadata); | 92 | Assert.Null(version.Metadata); |
93 | Assert.False(version.Invalid); | ||
74 | } | 94 | } |
75 | 95 | ||
76 | [Fact] | 96 | [Fact] |
@@ -86,9 +106,10 @@ namespace WixToolsetTest.Data | |||
86 | Assert.True(version.HasMinor); | 106 | Assert.True(version.HasMinor); |
87 | Assert.False(version.HasPatch); | 107 | Assert.False(version.HasPatch); |
88 | Assert.False(version.HasRevision); | 108 | Assert.False(version.HasRevision); |
89 | Assert.Equal("19", version.Labels[0].Label); | 109 | Assert.Equal(new[] { "19" }, version.Labels.Select(l => l.Label).ToArray()); |
90 | Assert.Equal((uint)19, version.Labels[0].Numeric); | 110 | Assert.Equal(new uint?[] { 19 }, version.Labels.Select(l => l.Numeric).ToArray()); |
91 | Assert.Null(version.Metadata); | 111 | Assert.Null(version.Metadata); |
112 | Assert.False(version.Invalid); | ||
92 | } | 113 | } |
93 | 114 | ||
94 | [Fact] | 115 | [Fact] |
@@ -104,11 +125,10 @@ namespace WixToolsetTest.Data | |||
104 | Assert.True(version.HasMinor); | 125 | Assert.True(version.HasMinor); |
105 | Assert.False(version.HasPatch); | 126 | Assert.False(version.HasPatch); |
106 | Assert.False(version.HasRevision); | 127 | Assert.False(version.HasRevision); |
107 | Assert.Equal("2", version.Labels[0].Label); | 128 | Assert.Equal(new[] { "2", "0" }, version.Labels.Select(l => l.Label).ToArray()); |
108 | Assert.Equal((uint)2, version.Labels[0].Numeric); | 129 | Assert.Equal(new uint?[] { 2, 0 }, version.Labels.Select(l => l.Numeric).ToArray()); |
109 | Assert.Equal("0", version.Labels[1].Label); | ||
110 | Assert.Equal((uint)0, version.Labels[1].Numeric); | ||
111 | Assert.Null(version.Metadata); | 130 | Assert.Null(version.Metadata); |
131 | Assert.False(version.Invalid); | ||
112 | } | 132 | } |
113 | 133 | ||
114 | [Fact] | 134 | [Fact] |
@@ -124,9 +144,10 @@ namespace WixToolsetTest.Data | |||
124 | Assert.True(version.HasMinor); | 144 | Assert.True(version.HasMinor); |
125 | Assert.True(version.HasPatch); | 145 | Assert.True(version.HasPatch); |
126 | Assert.False(version.HasRevision); | 146 | Assert.False(version.HasRevision); |
127 | Assert.Equal("a", version.Labels[0].Label); | 147 | Assert.Equal(new[] { "a" }, version.Labels.Select(l => l.Label).ToArray()); |
128 | Assert.Null(version.Labels[0].Numeric); | 148 | Assert.Equal(new uint?[] { null }, version.Labels.Select(l => l.Numeric).ToArray()); |
129 | Assert.Null(version.Metadata); | 149 | Assert.Null(version.Metadata); |
150 | Assert.False(version.Invalid); | ||
130 | } | 151 | } |
131 | 152 | ||
132 | [Fact] | 153 | [Fact] |
@@ -142,11 +163,10 @@ namespace WixToolsetTest.Data | |||
142 | Assert.True(version.HasMinor); | 163 | Assert.True(version.HasMinor); |
143 | Assert.False(version.HasPatch); | 164 | Assert.False(version.HasPatch); |
144 | Assert.False(version.HasRevision); | 165 | Assert.False(version.HasRevision); |
145 | Assert.Equal("a", version.Labels[0].Label); | 166 | Assert.Equal(new[] { "a", "000" }, version.Labels.Select(l => l.Label).ToArray()); |
146 | Assert.Null(version.Labels[0].Numeric); | 167 | Assert.Equal(new uint?[] { null, 0 }, version.Labels.Select(l => l.Numeric).ToArray()); |
147 | Assert.Equal("000", version.Labels[1].Label); | ||
148 | Assert.Equal((uint)0, version.Labels[1].Numeric); | ||
149 | Assert.Null(version.Metadata); | 168 | Assert.Null(version.Metadata); |
169 | Assert.False(version.Invalid); | ||
150 | } | 170 | } |
151 | 171 | ||
152 | [Fact] | 172 | [Fact] |
@@ -164,6 +184,7 @@ namespace WixToolsetTest.Data | |||
164 | Assert.False(version.HasRevision); | 184 | Assert.False(version.HasRevision); |
165 | Assert.Null(version.Labels); | 185 | Assert.Null(version.Labels); |
166 | Assert.Equal("abcd", version.Metadata); | 186 | Assert.Equal("abcd", version.Metadata); |
187 | Assert.False(version.Invalid); | ||
167 | } | 188 | } |
168 | 189 | ||
169 | [Fact] | 190 | [Fact] |
@@ -176,6 +197,18 @@ namespace WixToolsetTest.Data | |||
176 | } | 197 | } |
177 | 198 | ||
178 | [Fact] | 199 | [Fact] |
200 | public void CanParseUnexpectedContentAsInvalidMetadata() | ||
201 | { | ||
202 | var version = WixVersion.Parse("1.2.3.abcd"); | ||
203 | Assert.Equal("abcd", version.Metadata); | ||
204 | Assert.True(version.Invalid); | ||
205 | |||
206 | version = WixVersion.Parse("1.2.3.-abcd"); | ||
207 | Assert.Equal("-abcd", version.Metadata); | ||
208 | Assert.True(version.Invalid); | ||
209 | } | ||
210 | |||
211 | [Fact] | ||
179 | public void CanParseLeadingPrefix() | 212 | public void CanParseLeadingPrefix() |
180 | { | 213 | { |
181 | Assert.True(WixVersion.TryParse("v10.20.30.40", out var version)); | 214 | Assert.True(WixVersion.TryParse("v10.20.30.40", out var version)); |
@@ -190,6 +223,7 @@ namespace WixToolsetTest.Data | |||
190 | Assert.True(version.HasRevision); | 223 | Assert.True(version.HasRevision); |
191 | Assert.Null(version.Labels); | 224 | Assert.Null(version.Labels); |
192 | Assert.Null(version.Metadata); | 225 | Assert.Null(version.Metadata); |
226 | Assert.False(version.Invalid); | ||
193 | 227 | ||
194 | Assert.True(WixVersion.TryParse("V100.200.300.400", out var version2)); | 228 | Assert.True(WixVersion.TryParse("V100.200.300.400", out var version2)); |
195 | Assert.Equal('V', version2.Prefix); | 229 | Assert.Equal('V', version2.Prefix); |
@@ -203,6 +237,7 @@ namespace WixToolsetTest.Data | |||
203 | Assert.True(version.HasRevision); | 237 | Assert.True(version.HasRevision); |
204 | Assert.Null(version2.Labels); | 238 | Assert.Null(version2.Labels); |
205 | Assert.Null(version2.Metadata); | 239 | Assert.Null(version2.Metadata); |
240 | Assert.False(version.Invalid); | ||
206 | } | 241 | } |
207 | 242 | ||
208 | [Fact] | 243 | [Fact] |
@@ -220,6 +255,7 @@ namespace WixToolsetTest.Data | |||
220 | Assert.True(version.HasRevision); | 255 | Assert.True(version.HasRevision); |
221 | Assert.Null(version.Labels); | 256 | Assert.Null(version.Labels); |
222 | Assert.Null(version.Metadata); | 257 | Assert.Null(version.Metadata); |
258 | Assert.False(version.Invalid); | ||
223 | } | 259 | } |
224 | 260 | ||
225 | [Fact] | 261 | [Fact] |
@@ -230,6 +266,24 @@ namespace WixToolsetTest.Data | |||
230 | } | 266 | } |
231 | 267 | ||
232 | [Fact] | 268 | [Fact] |
269 | public void CanParseInvalidTooLargeNumbers() | ||
270 | { | ||
271 | var version = WixVersion.Parse("4294967296.4294967296.4294967296.4294967296"); | ||
272 | Assert.Equal(0U, version.Major); | ||
273 | Assert.Equal("4294967296.4294967296.4294967296.4294967296", version.Metadata); | ||
274 | Assert.True(version.Invalid); | ||
275 | } | ||
276 | |||
277 | [Fact] | ||
278 | public void CanParseInvalidTooLargeNumbersWithPrefix() | ||
279 | { | ||
280 | var version = WixVersion.Parse("v4294967296.4294967296.4294967296.4294967296"); | ||
281 | Assert.Equal("v4294967296.4294967296.4294967296.4294967296", version.Metadata); | ||
282 | Assert.Null(version.Prefix); | ||
283 | Assert.True(version.Invalid); | ||
284 | } | ||
285 | |||
286 | [Fact] | ||
233 | public void CanParseLabelsWithMetadata() | 287 | public void CanParseLabelsWithMetadata() |
234 | { | 288 | { |
235 | Assert.True(WixVersion.TryParse("1.2.3.4-a.b.c.d.5+abc123", out var version)); | 289 | Assert.True(WixVersion.TryParse("1.2.3.4-a.b.c.d.5+abc123", out var version)); |
@@ -242,17 +296,113 @@ namespace WixToolsetTest.Data | |||
242 | Assert.True(version.HasMinor); | 296 | Assert.True(version.HasMinor); |
243 | Assert.True(version.HasPatch); | 297 | Assert.True(version.HasPatch); |
244 | Assert.True(version.HasRevision); | 298 | Assert.True(version.HasRevision); |
245 | Assert.Equal("a", version.Labels[0].Label); | 299 | Assert.Equal(new[] { "a", "b", "c", "d", "5" }, version.Labels.Select(l => l.Label).ToArray()); |
246 | Assert.Null(version.Labels[0].Numeric); | 300 | Assert.Equal(new uint?[] { null, null, null, null, 5 }, version.Labels.Select(l => l.Numeric).ToArray()); |
247 | Assert.Equal("b", version.Labels[1].Label); | ||
248 | Assert.Null(version.Labels[1].Numeric); | ||
249 | Assert.Equal("c", version.Labels[2].Label); | ||
250 | Assert.Null(version.Labels[2].Numeric); | ||
251 | Assert.Equal("d", version.Labels[3].Label); | ||
252 | Assert.Null(version.Labels[3].Numeric); | ||
253 | Assert.Equal("5", version.Labels[4].Label); | ||
254 | Assert.Equal((uint)5, version.Labels[4].Numeric); | ||
255 | Assert.Equal("abc123", version.Metadata); | 301 | Assert.Equal("abc123", version.Metadata); |
302 | Assert.False(version.Invalid); | ||
303 | } | ||
304 | |||
305 | [Fact] | ||
306 | public void CanParseVersionWithTrailingDotsAsInvalid() | ||
307 | { | ||
308 | var version = WixVersion.Parse("."); | ||
309 | Assert.Null(version.Prefix); | ||
310 | Assert.Equal(0U, version.Major); | ||
311 | Assert.Equal(0U, version.Minor); | ||
312 | Assert.Equal(0U, version.Patch); | ||
313 | Assert.Equal(0U, version.Revision); | ||
314 | Assert.Null(version.Labels); | ||
315 | Assert.False(version.HasMajor); | ||
316 | Assert.False(version.HasMinor); | ||
317 | Assert.False(version.HasPatch); | ||
318 | Assert.False(version.HasRevision); | ||
319 | Assert.Equal(".", version.Metadata); | ||
320 | Assert.True(version.Invalid); | ||
321 | |||
322 | version = WixVersion.Parse("1."); | ||
323 | Assert.Null(version.Prefix); | ||
324 | Assert.Equal(1U, version.Major); | ||
325 | Assert.Equal(0U, version.Minor); | ||
326 | Assert.Equal(0U, version.Patch); | ||
327 | Assert.Equal(0U, version.Revision); | ||
328 | Assert.Null(version.Labels); | ||
329 | Assert.True(version.HasMajor); | ||
330 | Assert.False(version.HasMinor); | ||
331 | Assert.False(version.HasPatch); | ||
332 | Assert.False(version.HasRevision); | ||
333 | Assert.Equal(String.Empty, version.Metadata); | ||
334 | Assert.True(version.Invalid); | ||
335 | |||
336 | version = WixVersion.Parse("2.1."); | ||
337 | Assert.Null(version.Prefix); | ||
338 | Assert.Equal(2U, version.Major); | ||
339 | Assert.Equal(1U, version.Minor); | ||
340 | Assert.Equal(0U, version.Patch); | ||
341 | Assert.Equal(0U, version.Revision); | ||
342 | Assert.Null(version.Labels); | ||
343 | Assert.True(version.HasMajor); | ||
344 | Assert.True(version.HasMinor); | ||
345 | Assert.False(version.HasPatch); | ||
346 | Assert.False(version.HasRevision); | ||
347 | Assert.Equal(String.Empty, version.Metadata); | ||
348 | Assert.True(version.Invalid); | ||
349 | |||
350 | version = WixVersion.Parse("3.2.1."); | ||
351 | Assert.Null(version.Prefix); | ||
352 | Assert.Equal(3U, version.Major); | ||
353 | Assert.Equal(2U, version.Minor); | ||
354 | Assert.Equal(1U, version.Patch); | ||
355 | Assert.Equal(0U, version.Revision); | ||
356 | Assert.Null(version.Labels); | ||
357 | Assert.True(version.HasMajor); | ||
358 | Assert.True(version.HasMinor); | ||
359 | Assert.True(version.HasPatch); | ||
360 | Assert.False(version.HasRevision); | ||
361 | Assert.Equal(String.Empty, version.Metadata); | ||
362 | Assert.True(version.Invalid); | ||
363 | |||
364 | version = WixVersion.Parse("4.3.2.1."); | ||
365 | Assert.Null(version.Prefix); | ||
366 | Assert.Equal(4U, version.Major); | ||
367 | Assert.Equal(3U, version.Minor); | ||
368 | Assert.Equal(2U, version.Patch); | ||
369 | Assert.Equal(1U, version.Revision); | ||
370 | Assert.Null(version.Labels); | ||
371 | Assert.True(version.HasMajor); | ||
372 | Assert.True(version.HasMinor); | ||
373 | Assert.True(version.HasPatch); | ||
374 | Assert.True(version.HasRevision); | ||
375 | Assert.Equal(String.Empty, version.Metadata); | ||
376 | Assert.True(version.Invalid); | ||
377 | |||
378 | version = WixVersion.Parse("5-."); | ||
379 | Assert.Null(version.Prefix); | ||
380 | Assert.Equal(5U, version.Major); | ||
381 | Assert.Equal(0U, version.Minor); | ||
382 | Assert.Equal(0U, version.Patch); | ||
383 | Assert.Equal(0U, version.Revision); | ||
384 | Assert.Null(version.Labels); | ||
385 | Assert.True(version.HasMajor); | ||
386 | Assert.False(version.HasMinor); | ||
387 | Assert.False(version.HasPatch); | ||
388 | Assert.False(version.HasRevision); | ||
389 | Assert.Equal(".", version.Metadata); | ||
390 | Assert.True(version.Invalid); | ||
391 | |||
392 | version = WixVersion.Parse("6-a."); | ||
393 | Assert.Null(version.Prefix); | ||
394 | Assert.Equal(6U, version.Major); | ||
395 | Assert.Equal(0U, version.Minor); | ||
396 | Assert.Equal(0U, version.Patch); | ||
397 | Assert.Equal(0U, version.Revision); | ||
398 | Assert.Equal(new[] { "a" }, version.Labels.Select(l => l.Label).ToArray()); | ||
399 | Assert.Equal(new uint?[] { null }, version.Labels.Select(l => l.Numeric).ToArray()); | ||
400 | Assert.True(version.HasMajor); | ||
401 | Assert.False(version.HasMinor); | ||
402 | Assert.False(version.HasPatch); | ||
403 | Assert.False(version.HasRevision); | ||
404 | Assert.Equal(String.Empty, version.Metadata); | ||
405 | Assert.True(version.Invalid); | ||
256 | } | 406 | } |
257 | } | 407 | } |
258 | } | 408 | } |