aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/burn/WixToolset.Mba.Core/VerUtil.cs4
-rw-r--r--src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs24
-rw-r--r--src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs8
-rw-r--r--src/api/wix/WixToolset.Data/WixVersion.cs33
-rw-r--r--src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs80
5 files changed, 132 insertions, 17 deletions
diff --git a/src/api/burn/WixToolset.Mba.Core/VerUtil.cs b/src/api/burn/WixToolset.Mba.Core/VerUtil.cs
index 611f9710..14552310 100644
--- a/src/api/burn/WixToolset.Mba.Core/VerUtil.cs
+++ b/src/api/burn/WixToolset.Mba.Core/VerUtil.cs
@@ -68,6 +68,10 @@ namespace WixToolset.Mba.Core
68 public IntPtr rgReleaseLabels; 68 public IntPtr rgReleaseLabels;
69 public IntPtr cchMetadataOffset; 69 public IntPtr cchMetadataOffset;
70 public bool fInvalid; 70 public bool fInvalid;
71 public bool fHasMajor;
72 public bool fHasMinor;
73 public bool fHasPatch;
74 public bool fHasRevision;
71 } 75 }
72 76
73 internal static string VersionStringFromOffset(IntPtr wzVersion, IntPtr cchOffset, int? cchLength = null) 77 internal static string VersionStringFromOffset(IntPtr wzVersion, IntPtr cchOffset, int? cchLength = null)
diff --git a/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs b/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs
index 731dedaf..e0312474 100644
--- a/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs
+++ b/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs
@@ -25,6 +25,10 @@ namespace WixToolset.Mba.Core
25 this.ReleaseLabels = new VerUtilVersionReleaseLabel[version.cReleaseLabels]; 25 this.ReleaseLabels = new VerUtilVersionReleaseLabel[version.cReleaseLabels];
26 this.Metadata = VerUtil.VersionStringFromOffset(version.sczVersion, version.cchMetadataOffset); 26 this.Metadata = VerUtil.VersionStringFromOffset(version.sczVersion, version.cchMetadataOffset);
27 this.IsInvalid = version.fInvalid; 27 this.IsInvalid = version.fInvalid;
28 this.HasMajor = version.fHasMajor;
29 this.HasMinor = version.fHasMinor;
30 this.HasPatch = version.fHasPatch;
31 this.HasRevision = version.fHasRevision;
28 32
29 for (var i = 0; i < version.cReleaseLabels; ++i) 33 for (var i = 0; i < version.cReleaseLabels; ++i)
30 { 34 {
@@ -80,6 +84,26 @@ namespace WixToolset.Mba.Core
80 /// </summary> 84 /// </summary>
81 public bool IsInvalid { get; private set; } 85 public bool IsInvalid { get; private set; }
82 86
87 /// <summary>
88 /// Whether the Major part was specified.
89 /// </summary>
90 public bool HasMajor { get; private set; }
91
92 /// <summary>
93 /// Whether the Minor part was specified.
94 /// </summary>
95 public bool HasMinor { get; private set; }
96
97 /// <summary>
98 /// Whether the Patch part was specified.
99 /// </summary>
100 public bool HasPatch { get; private set; }
101
102 /// <summary>
103 /// Whether the Revision part was specified.
104 /// </summary>
105 public bool HasRevision { get; private set; }
106
83 /// <inheritdoc/> 107 /// <inheritdoc/>
84 public void Dispose() 108 public void Dispose()
85 { 109 {
diff --git a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs
index ceb1b12a..6fb8aced 100644
--- a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs
+++ b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs
@@ -57,6 +57,10 @@ namespace WixToolsetTest.Mba.Core
57 Assert.Empty(parsedVersion.ReleaseLabels); 57 Assert.Empty(parsedVersion.ReleaseLabels);
58 Assert.Equal("", parsedVersion.Metadata); 58 Assert.Equal("", parsedVersion.Metadata);
59 Assert.False(parsedVersion.IsInvalid); 59 Assert.False(parsedVersion.IsInvalid);
60 Assert.True(parsedVersion.HasMajor);
61 Assert.True(parsedVersion.HasMinor);
62 Assert.True(parsedVersion.HasPatch);
63 Assert.True(parsedVersion.HasRevision);
60 } 64 }
61 65
62 [Fact] 66 [Fact]
@@ -74,6 +78,10 @@ namespace WixToolsetTest.Mba.Core
74 Assert.Equal(5, parsedVersion.ReleaseLabels.Length); 78 Assert.Equal(5, parsedVersion.ReleaseLabels.Length);
75 Assert.Equal("+abc123", parsedVersion.Metadata); 79 Assert.Equal("+abc123", parsedVersion.Metadata);
76 Assert.True(parsedVersion.IsInvalid); 80 Assert.True(parsedVersion.IsInvalid);
81 Assert.True(parsedVersion.HasMajor);
82 Assert.True(parsedVersion.HasMinor);
83 Assert.True(parsedVersion.HasPatch);
84 Assert.True(parsedVersion.HasRevision);
77 85
78 Assert.Equal("a", parsedVersion.ReleaseLabels[0].Label); 86 Assert.Equal("a", parsedVersion.ReleaseLabels[0].Label);
79 Assert.False(parsedVersion.ReleaseLabels[0].IsNumeric); 87 Assert.False(parsedVersion.ReleaseLabels[0].IsNumeric);
diff --git a/src/api/wix/WixToolset.Data/WixVersion.cs b/src/api/wix/WixToolset.Data/WixVersion.cs
index 2b02bd7d..ab68b55a 100644
--- a/src/api/wix/WixToolset.Data/WixVersion.cs
+++ b/src/api/wix/WixToolset.Data/WixVersion.cs
@@ -22,22 +22,42 @@ namespace WixToolset.Data
22 /// <summary> 22 /// <summary>
23 /// Gets or sets the major version. 23 /// Gets or sets the major version.
24 /// </summary> 24 /// </summary>
25 public uint? Major { get; set; } 25 public uint Major { get; set; }
26 26
27 /// <summary> 27 /// <summary>
28 /// Gets or sets the minor version. 28 /// Gets or sets the minor version.
29 /// </summary> 29 /// </summary>
30 public uint? Minor { get; set; } 30 public uint Minor { get; set; }
31 31
32 /// <summary> 32 /// <summary>
33 /// Gets or sets the patch version. 33 /// Gets or sets the patch version.
34 /// </summary> 34 /// </summary>
35 public uint? Patch { get; set; } 35 public uint Patch { get; set; }
36 36
37 /// <summary> 37 /// <summary>
38 /// Gets or sets the revision version. 38 /// Gets or sets the revision version.
39 /// </summary> 39 /// </summary>
40 public uint? Revision { get; set; } 40 public uint Revision { get; set; }
41
42 /// <summary>
43 /// Gets or sets whether the major version was defined.
44 /// </summary>
45 public bool HasMajor { get; set; }
46
47 /// <summary>
48 /// Gets or sets the whether the minor version was defined.
49 /// </summary>
50 public bool HasMinor { get; set; }
51
52 /// <summary>
53 /// Gets or sets the whether the patch version was defined.
54 /// </summary>
55 public bool HasPatch { get; set; }
56
57 /// <summary>
58 /// Gets or sets the whether the revision version was defined.
59 /// </summary>
60 public bool HasRevision { get; set; }
41 61
42 /// <summary> 62 /// <summary>
43 /// Gets or sets the labels in the version. 63 /// Gets or sets the labels in the version.
@@ -143,15 +163,19 @@ namespace WixToolset.Data
143 { 163 {
144 case 0: 164 case 0:
145 version.Major = part; 165 version.Major = part;
166 version.HasMajor = true;
146 break; 167 break;
147 case 1: 168 case 1:
148 version.Minor = part; 169 version.Minor = part;
170 version.HasMinor = true;
149 break; 171 break;
150 case 2: 172 case 2:
151 version.Patch = part; 173 version.Patch = part;
174 version.HasPatch = true;
152 break; 175 break;
153 case 3: 176 case 3:
154 version.Revision = part; 177 version.Revision = part;
178 version.HasRevision = true;
155 break; 179 break;
156 } 180 }
157 181
@@ -264,6 +288,7 @@ namespace WixToolset.Data
264 288
265 if (invalid) 289 if (invalid)
266 { 290 {
291 version = null;
267 return false; 292 return false;
268 } 293 }
269 294
diff --git a/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
index 45253460..ffa3213a 100644
--- a/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
+++ b/src/api/wix/test/WixToolsetTest.Data/WixVerFixture.cs
@@ -11,13 +11,15 @@ namespace WixToolsetTest.Data
11 [Fact] 11 [Fact]
12 public void CannotParseEmptyStringAsVersion() 12 public void CannotParseEmptyStringAsVersion()
13 { 13 {
14 Assert.False(WixVersion.TryParse(String.Empty, out var _)); 14 Assert.False(WixVersion.TryParse(String.Empty, out var version));
15 Assert.Null(version);
15 } 16 }
16 17
17 [Fact] 18 [Fact]
18 public void CannotParseInvalidStringAsVersion() 19 public void CannotParseInvalidStringAsVersion()
19 { 20 {
20 Assert.False(WixVersion.TryParse("invalid", out var _)); 21 Assert.False(WixVersion.TryParse("invalid", out var version));
22 Assert.Null(version);
21 } 23 }
22 24
23 [Fact] 25 [Fact]
@@ -29,6 +31,10 @@ namespace WixToolsetTest.Data
29 Assert.Equal((uint)2, version.Minor); 31 Assert.Equal((uint)2, version.Minor);
30 Assert.Equal((uint)3, version.Patch); 32 Assert.Equal((uint)3, version.Patch);
31 Assert.Equal((uint)4, version.Revision); 33 Assert.Equal((uint)4, version.Revision);
34 Assert.True(version.HasMajor);
35 Assert.True(version.HasMinor);
36 Assert.True(version.HasPatch);
37 Assert.True(version.HasRevision);
32 Assert.Null(version.Labels); 38 Assert.Null(version.Labels);
33 Assert.Null(version.Metadata); 39 Assert.Null(version.Metadata);
34 } 40 }
@@ -41,7 +47,11 @@ namespace WixToolsetTest.Data
41 Assert.Equal((uint)1, version.Major); 47 Assert.Equal((uint)1, version.Major);
42 Assert.Equal((uint)2, version.Minor); 48 Assert.Equal((uint)2, version.Minor);
43 Assert.Equal((uint)3, version.Patch); 49 Assert.Equal((uint)3, version.Patch);
44 Assert.Null(version.Revision); 50 Assert.Equal((uint)0, version.Revision);
51 Assert.True(version.HasMajor);
52 Assert.True(version.HasMinor);
53 Assert.True(version.HasPatch);
54 Assert.False(version.HasRevision);
45 Assert.Null(version.Labels); 55 Assert.Null(version.Labels);
46 Assert.Null(version.Metadata); 56 Assert.Null(version.Metadata);
47 } 57 }
@@ -55,6 +65,10 @@ namespace WixToolsetTest.Data
55 Assert.Equal((uint)2, version.Minor); 65 Assert.Equal((uint)2, version.Minor);
56 Assert.Equal((uint)3, version.Patch); 66 Assert.Equal((uint)3, version.Patch);
57 Assert.Equal((uint)0, version.Revision); 67 Assert.Equal((uint)0, version.Revision);
68 Assert.True(version.HasMajor);
69 Assert.True(version.HasMinor);
70 Assert.True(version.HasPatch);
71 Assert.True(version.HasRevision);
58 Assert.Null(version.Labels); 72 Assert.Null(version.Labels);
59 Assert.Null(version.Metadata); 73 Assert.Null(version.Metadata);
60 } 74 }
@@ -66,8 +80,12 @@ namespace WixToolsetTest.Data
66 Assert.Null(version.Prefix); 80 Assert.Null(version.Prefix);
67 Assert.Equal((uint)1, version.Major); 81 Assert.Equal((uint)1, version.Major);
68 Assert.Equal((uint)2, version.Minor); 82 Assert.Equal((uint)2, version.Minor);
69 Assert.Null(version.Patch); 83 Assert.Equal((uint)0, version.Patch);
70 Assert.Null(version.Revision); 84 Assert.Equal((uint)0, version.Revision);
85 Assert.True(version.HasMajor);
86 Assert.True(version.HasMinor);
87 Assert.False(version.HasPatch);
88 Assert.False(version.HasRevision);
71 Assert.Equal("19", version.Labels[0].Label); 89 Assert.Equal("19", version.Labels[0].Label);
72 Assert.Equal((uint)19, version.Labels[0].Numeric); 90 Assert.Equal((uint)19, version.Labels[0].Numeric);
73 Assert.Null(version.Metadata); 91 Assert.Null(version.Metadata);
@@ -80,8 +98,12 @@ namespace WixToolsetTest.Data
80 Assert.Null(version.Prefix); 98 Assert.Null(version.Prefix);
81 Assert.Equal((uint)1, version.Major); 99 Assert.Equal((uint)1, version.Major);
82 Assert.Equal((uint)2, version.Minor); 100 Assert.Equal((uint)2, version.Minor);
83 Assert.Null(version.Patch); 101 Assert.Equal((uint)0, version.Patch);
84 Assert.Null(version.Revision); 102 Assert.Equal((uint)0, version.Revision);
103 Assert.True(version.HasMajor);
104 Assert.True(version.HasMinor);
105 Assert.False(version.HasPatch);
106 Assert.False(version.HasRevision);
85 Assert.Equal("2", version.Labels[0].Label); 107 Assert.Equal("2", version.Labels[0].Label);
86 Assert.Equal((uint)2, version.Labels[0].Numeric); 108 Assert.Equal((uint)2, version.Labels[0].Numeric);
87 Assert.Equal("0", version.Labels[1].Label); 109 Assert.Equal("0", version.Labels[1].Label);
@@ -97,6 +119,11 @@ namespace WixToolsetTest.Data
97 Assert.Equal((uint)0, version.Major); 119 Assert.Equal((uint)0, version.Major);
98 Assert.Equal((uint)0, version.Minor); 120 Assert.Equal((uint)0, version.Minor);
99 Assert.Equal((uint)1, version.Patch); 121 Assert.Equal((uint)1, version.Patch);
122 Assert.Equal((uint)0, version.Revision);
123 Assert.True(version.HasMajor);
124 Assert.True(version.HasMinor);
125 Assert.True(version.HasPatch);
126 Assert.False(version.HasRevision);
100 Assert.Equal("a", version.Labels[0].Label); 127 Assert.Equal("a", version.Labels[0].Label);
101 Assert.Null(version.Labels[0].Numeric); 128 Assert.Null(version.Labels[0].Numeric);
102 Assert.Null(version.Metadata); 129 Assert.Null(version.Metadata);
@@ -109,8 +136,12 @@ namespace WixToolsetTest.Data
109 Assert.Null(version.Prefix); 136 Assert.Null(version.Prefix);
110 Assert.Equal((uint)0, version.Major); 137 Assert.Equal((uint)0, version.Major);
111 Assert.Equal((uint)1, version.Minor); 138 Assert.Equal((uint)1, version.Minor);
112 Assert.Null(version.Patch); 139 Assert.Equal((uint)0, version.Patch);
113 Assert.Null(version.Revision); 140 Assert.Equal((uint)0, version.Revision);
141 Assert.True(version.HasMajor);
142 Assert.True(version.HasMinor);
143 Assert.False(version.HasPatch);
144 Assert.False(version.HasRevision);
114 Assert.Equal("a", version.Labels[0].Label); 145 Assert.Equal("a", version.Labels[0].Label);
115 Assert.Null(version.Labels[0].Numeric); 146 Assert.Null(version.Labels[0].Numeric);
116 Assert.Equal("000", version.Labels[1].Label); 147 Assert.Equal("000", version.Labels[1].Label);
@@ -126,7 +157,11 @@ namespace WixToolsetTest.Data
126 Assert.Equal((uint)1, version.Major); 157 Assert.Equal((uint)1, version.Major);
127 Assert.Equal((uint)2, version.Minor); 158 Assert.Equal((uint)2, version.Minor);
128 Assert.Equal((uint)3, version.Patch); 159 Assert.Equal((uint)3, version.Patch);
129 Assert.Null(version.Revision); 160 Assert.Equal((uint)0, version.Revision);
161 Assert.True(version.HasMajor);
162 Assert.True(version.HasMinor);
163 Assert.True(version.HasPatch);
164 Assert.False(version.HasRevision);
130 Assert.Null(version.Labels); 165 Assert.Null(version.Labels);
131 Assert.Equal("abcd", version.Metadata); 166 Assert.Equal("abcd", version.Metadata);
132 } 167 }
@@ -134,8 +169,10 @@ namespace WixToolsetTest.Data
134 [Fact] 169 [Fact]
135 public void CannotParseUnexpectedContentAsMetadata() 170 public void CannotParseUnexpectedContentAsMetadata()
136 { 171 {
137 Assert.False(WixVersion.TryParse("1.2.3.abcd", out var _)); 172 Assert.False(WixVersion.TryParse("1.2.3.abcd", out var version));
138 Assert.False(WixVersion.TryParse("1.2.3.-abcd", out var _)); 173 Assert.Null(version);
174 Assert.False(WixVersion.TryParse("1.2.3.-abcd", out version));
175 Assert.Null(version);
139 } 176 }
140 177
141 [Fact] 178 [Fact]
@@ -147,6 +184,10 @@ namespace WixToolsetTest.Data
147 Assert.Equal((uint)20, version.Minor); 184 Assert.Equal((uint)20, version.Minor);
148 Assert.Equal((uint)30, version.Patch); 185 Assert.Equal((uint)30, version.Patch);
149 Assert.Equal((uint)40, version.Revision); 186 Assert.Equal((uint)40, version.Revision);
187 Assert.True(version.HasMajor);
188 Assert.True(version.HasMinor);
189 Assert.True(version.HasPatch);
190 Assert.True(version.HasRevision);
150 Assert.Null(version.Labels); 191 Assert.Null(version.Labels);
151 Assert.Null(version.Metadata); 192 Assert.Null(version.Metadata);
152 193
@@ -156,6 +197,10 @@ namespace WixToolsetTest.Data
156 Assert.Equal((uint)200, version2.Minor); 197 Assert.Equal((uint)200, version2.Minor);
157 Assert.Equal((uint)300, version2.Patch); 198 Assert.Equal((uint)300, version2.Patch);
158 Assert.Equal((uint)400, version2.Revision); 199 Assert.Equal((uint)400, version2.Revision);
200 Assert.True(version.HasMajor);
201 Assert.True(version.HasMinor);
202 Assert.True(version.HasPatch);
203 Assert.True(version.HasRevision);
159 Assert.Null(version2.Labels); 204 Assert.Null(version2.Labels);
160 Assert.Null(version2.Metadata); 205 Assert.Null(version2.Metadata);
161 } 206 }
@@ -169,6 +214,10 @@ namespace WixToolsetTest.Data
169 Assert.Equal(4294967295, version.Minor); 214 Assert.Equal(4294967295, version.Minor);
170 Assert.Equal(4294967295, version.Patch); 215 Assert.Equal(4294967295, version.Patch);
171 Assert.Equal(4294967295, version.Revision); 216 Assert.Equal(4294967295, version.Revision);
217 Assert.True(version.HasMajor);
218 Assert.True(version.HasMinor);
219 Assert.True(version.HasPatch);
220 Assert.True(version.HasRevision);
172 Assert.Null(version.Labels); 221 Assert.Null(version.Labels);
173 Assert.Null(version.Metadata); 222 Assert.Null(version.Metadata);
174 } 223 }
@@ -176,7 +225,8 @@ namespace WixToolsetTest.Data
176 [Fact] 225 [Fact]
177 public void CannotParseTooLargeNumbers() 226 public void CannotParseTooLargeNumbers()
178 { 227 {
179 Assert.False(WixVersion.TryParse("4294967296.4294967296.4294967296.4294967296", out var _)); 228 Assert.False(WixVersion.TryParse("4294967296.4294967296.4294967296.4294967296", out var version));
229 Assert.Null(version);
180 } 230 }
181 231
182 [Fact] 232 [Fact]
@@ -188,6 +238,10 @@ namespace WixToolsetTest.Data
188 Assert.Equal((uint)2, version.Minor); 238 Assert.Equal((uint)2, version.Minor);
189 Assert.Equal((uint)3, version.Patch); 239 Assert.Equal((uint)3, version.Patch);
190 Assert.Equal((uint)4, version.Revision); 240 Assert.Equal((uint)4, version.Revision);
241 Assert.True(version.HasMajor);
242 Assert.True(version.HasMinor);
243 Assert.True(version.HasPatch);
244 Assert.True(version.HasRevision);
191 Assert.Equal("a", version.Labels[0].Label); 245 Assert.Equal("a", version.Labels[0].Label);
192 Assert.Null(version.Labels[0].Numeric); 246 Assert.Null(version.Labels[0].Numeric);
193 Assert.Equal("b", version.Labels[1].Label); 247 Assert.Equal("b", version.Labels[1].Label);