summaryrefslogtreecommitdiff
path: root/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs')
-rw-r--r--src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs204
1 files changed, 204 insertions, 0 deletions
diff --git a/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
new file mode 100644
index 00000000..45253460
--- /dev/null
+++ b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
@@ -0,0 +1,204 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.Data
4{
5 using System;
6 using WixToolset.Data;
7 using Xunit;
8
9 public class WixVerFixture
10 {
11 [Fact]
12 public void CannotParseEmptyStringAsVersion()
13 {
14 Assert.False(WixVersion.TryParse(String.Empty, out var _));
15 }
16
17 [Fact]
18 public void CannotParseInvalidStringAsVersion()
19 {
20 Assert.False(WixVersion.TryParse("invalid", out var _));
21 }
22
23 [Fact]
24 public void CanParseFourPartVersion()
25 {
26 Assert.True(WixVersion.TryParse("1.2.3.4", out var version));
27 Assert.Null(version.Prefix);
28 Assert.Equal((uint)1, version.Major);
29 Assert.Equal((uint)2, version.Minor);
30 Assert.Equal((uint)3, version.Patch);
31 Assert.Equal((uint)4, version.Revision);
32 Assert.Null(version.Labels);
33 Assert.Null(version.Metadata);
34 }
35
36 [Fact]
37 public void CanParseThreePartVersion()
38 {
39 Assert.True(WixVersion.TryParse("1.2.3", out var version));
40 Assert.Null(version.Prefix);
41 Assert.Equal((uint)1, version.Major);
42 Assert.Equal((uint)2, version.Minor);
43 Assert.Equal((uint)3, version.Patch);
44 Assert.Null(version.Revision);
45 Assert.Null(version.Labels);
46 Assert.Null(version.Metadata);
47 }
48
49 [Fact]
50 public void CanParseFourPartVersionWithTrailingZero()
51 {
52 Assert.True(WixVersion.TryParse("1.2.3.0", out var version));
53 Assert.Null(version.Prefix);
54 Assert.Equal((uint)1, version.Major);
55 Assert.Equal((uint)2, version.Minor);
56 Assert.Equal((uint)3, version.Patch);
57 Assert.Equal((uint)0, version.Revision);
58 Assert.Null(version.Labels);
59 Assert.Null(version.Metadata);
60 }
61
62 [Fact]
63 public void CanParseNumericReleaseLabels()
64 {
65 Assert.True(WixVersion.TryParse("1.2-19", out var version));
66 Assert.Null(version.Prefix);
67 Assert.Equal((uint)1, version.Major);
68 Assert.Equal((uint)2, version.Minor);
69 Assert.Null(version.Patch);
70 Assert.Null(version.Revision);
71 Assert.Equal("19", version.Labels[0].Label);
72 Assert.Equal((uint)19, version.Labels[0].Numeric);
73 Assert.Null(version.Metadata);
74 }
75
76 [Fact]
77 public void CanParseDottedNumericReleaseLabels()
78 {
79 Assert.True(WixVersion.TryParse("1.2-2.0", out var version));
80 Assert.Null(version.Prefix);
81 Assert.Equal((uint)1, version.Major);
82 Assert.Equal((uint)2, version.Minor);
83 Assert.Null(version.Patch);
84 Assert.Null(version.Revision);
85 Assert.Equal("2", version.Labels[0].Label);
86 Assert.Equal((uint)2, version.Labels[0].Numeric);
87 Assert.Equal("0", version.Labels[1].Label);
88 Assert.Equal((uint)0, version.Labels[1].Numeric);
89 Assert.Null(version.Metadata);
90 }
91
92 [Fact]
93 public void CanParseHyphenAsVersionSeparator()
94 {
95 Assert.True(WixVersion.TryParse("0.0.1-a", out var version));
96 Assert.Null(version.Prefix);
97 Assert.Equal((uint)0, version.Major);
98 Assert.Equal((uint)0, version.Minor);
99 Assert.Equal((uint)1, version.Patch);
100 Assert.Equal("a", version.Labels[0].Label);
101 Assert.Null(version.Labels[0].Numeric);
102 Assert.Null(version.Metadata);
103 }
104
105 [Fact]
106 public void CanParseIgnoringLeadingZeros()
107 {
108 Assert.True(WixVersion.TryParse("0.01-a.000", out var version));
109 Assert.Null(version.Prefix);
110 Assert.Equal((uint)0, version.Major);
111 Assert.Equal((uint)1, version.Minor);
112 Assert.Null(version.Patch);
113 Assert.Null(version.Revision);
114 Assert.Equal("a", version.Labels[0].Label);
115 Assert.Null(version.Labels[0].Numeric);
116 Assert.Equal("000", version.Labels[1].Label);
117 Assert.Equal((uint)0, version.Labels[1].Numeric);
118 Assert.Null(version.Metadata);
119 }
120
121 [Fact]
122 public void CanParseMetadata()
123 {
124 Assert.True(WixVersion.TryParse("1.2.3+abcd", out var version));
125 Assert.Null(version.Prefix);
126 Assert.Equal((uint)1, version.Major);
127 Assert.Equal((uint)2, version.Minor);
128 Assert.Equal((uint)3, version.Patch);
129 Assert.Null(version.Revision);
130 Assert.Null(version.Labels);
131 Assert.Equal("abcd", version.Metadata);
132 }
133
134 [Fact]
135 public void CannotParseUnexpectedContentAsMetadata()
136 {
137 Assert.False(WixVersion.TryParse("1.2.3.abcd", out var _));
138 Assert.False(WixVersion.TryParse("1.2.3.-abcd", out var _));
139 }
140
141 [Fact]
142 public void CanParseLeadingPrefix()
143 {
144 Assert.True(WixVersion.TryParse("v10.20.30.40", out var version));
145 Assert.Equal('v', version.Prefix);
146 Assert.Equal((uint)10, version.Major);
147 Assert.Equal((uint)20, version.Minor);
148 Assert.Equal((uint)30, version.Patch);
149 Assert.Equal((uint)40, version.Revision);
150 Assert.Null(version.Labels);
151 Assert.Null(version.Metadata);
152
153 Assert.True(WixVersion.TryParse("V100.200.300.400", out var version2));
154 Assert.Equal('V', version2.Prefix);
155 Assert.Equal((uint)100, version2.Major);
156 Assert.Equal((uint)200, version2.Minor);
157 Assert.Equal((uint)300, version2.Patch);
158 Assert.Equal((uint)400, version2.Revision);
159 Assert.Null(version2.Labels);
160 Assert.Null(version2.Metadata);
161 }
162
163 [Fact]
164 public void CanParseVeryLargeNumbers()
165 {
166 Assert.True(WixVersion.TryParse("4294967295.4294967295.4294967295.4294967295", out var version));
167 Assert.Null(version.Prefix);
168 Assert.Equal(4294967295, version.Major);
169 Assert.Equal(4294967295, version.Minor);
170 Assert.Equal(4294967295, version.Patch);
171 Assert.Equal(4294967295, version.Revision);
172 Assert.Null(version.Labels);
173 Assert.Null(version.Metadata);
174 }
175
176 [Fact]
177 public void CannotParseTooLargeNumbers()
178 {
179 Assert.False(WixVersion.TryParse("4294967296.4294967296.4294967296.4294967296", out var _));
180 }
181
182 [Fact]
183 public void CanParseLabelsWithMetadata()
184 {
185 Assert.True(WixVersion.TryParse("1.2.3.4-a.b.c.d.5+abc123", out var version));
186 Assert.Null(version.Prefix);
187 Assert.Equal((uint)1, version.Major);
188 Assert.Equal((uint)2, version.Minor);
189 Assert.Equal((uint)3, version.Patch);
190 Assert.Equal((uint)4, version.Revision);
191 Assert.Equal("a", version.Labels[0].Label);
192 Assert.Null(version.Labels[0].Numeric);
193 Assert.Equal("b", version.Labels[1].Label);
194 Assert.Null(version.Labels[1].Numeric);
195 Assert.Equal("c", version.Labels[2].Label);
196 Assert.Null(version.Labels[2].Numeric);
197 Assert.Equal("d", version.Labels[3].Label);
198 Assert.Null(version.Labels[3].Numeric);
199 Assert.Equal("5", version.Labels[4].Label);
200 Assert.Equal((uint)5, version.Labels[4].Numeric);
201 Assert.Equal("abc123", version.Metadata);
202 }
203 }
204}