diff options
Diffstat (limited to 'src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs')
-rw-r--r-- | src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs | 204 |
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 | |||
3 | namespace 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 | } | ||