diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-05-16 16:03:25 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-05-17 22:54:13 -0500 |
commit | 0ea53e27361cbfe664df98d717e55005f329aff1 (patch) | |
tree | d75e02fadee9669593ca3ccf28401b67064244af /src/libs/dutil/test/DUtilUnitTest | |
parent | d5985a1688bc878e42ffd3ce3939fa52303cab16 (diff) | |
download | wix-0ea53e27361cbfe664df98d717e55005f329aff1.tar.gz wix-0ea53e27361cbfe664df98d717e55005f329aff1.tar.bz2 wix-0ea53e27361cbfe664df98d717e55005f329aff1.zip |
Store the prefix character in VERUTIL_VERSION.
Fix edge case where version string is all v's.
Diffstat (limited to 'src/libs/dutil/test/DUtilUnitTest')
-rw-r--r-- | src/libs/dutil/test/DUtilUnitTest/VerUtilTests.cpp | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/src/libs/dutil/test/DUtilUnitTest/VerUtilTests.cpp b/src/libs/dutil/test/DUtilUnitTest/VerUtilTests.cpp index 8f24ad1a..c20b9887 100644 --- a/src/libs/dutil/test/DUtilUnitTest/VerUtilTests.cpp +++ b/src/libs/dutil/test/DUtilUnitTest/VerUtilTests.cpp | |||
@@ -34,6 +34,7 @@ namespace DutilTests | |||
34 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); | 34 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); |
35 | 35 | ||
36 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 36 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
37 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
37 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); | 38 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); |
38 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); | 39 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); |
39 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); | 40 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); |
@@ -43,6 +44,7 @@ namespace DutilTests | |||
43 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 44 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
44 | 45 | ||
45 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 46 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
47 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
46 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); | 48 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); |
47 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); | 49 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); |
48 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); | 50 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); |
@@ -52,6 +54,7 @@ namespace DutilTests | |||
52 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); | 54 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); |
53 | 55 | ||
54 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 56 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
57 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
55 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); | 58 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); |
56 | Assert::Equal<DWORD>(2, pVersion3->dwMinor); | 59 | Assert::Equal<DWORD>(2, pVersion3->dwMinor); |
57 | Assert::Equal<DWORD>(3, pVersion3->dwPatch); | 60 | Assert::Equal<DWORD>(3, pVersion3->dwPatch); |
@@ -89,6 +92,7 @@ namespace DutilTests | |||
89 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); | 92 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); |
90 | 93 | ||
91 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 94 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
95 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
92 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); | 96 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); |
93 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); | 97 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); |
94 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); | 98 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); |
@@ -109,6 +113,7 @@ namespace DutilTests | |||
109 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 113 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
110 | 114 | ||
111 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 115 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
116 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
112 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); | 117 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); |
113 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); | 118 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); |
114 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 119 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -170,6 +175,7 @@ namespace DutilTests | |||
170 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion6); | 175 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion6); |
171 | 176 | ||
172 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 177 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
178 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
173 | Assert::Equal<DWORD>(10, pVersion1->dwMajor); | 179 | Assert::Equal<DWORD>(10, pVersion1->dwMajor); |
174 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); | 180 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); |
175 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); | 181 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); |
@@ -179,6 +185,7 @@ namespace DutilTests | |||
179 | Assert::Equal<BOOL>(TRUE, pVersion1->fInvalid); | 185 | Assert::Equal<BOOL>(TRUE, pVersion1->fInvalid); |
180 | 186 | ||
181 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 187 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
188 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
182 | Assert::Equal<DWORD>(10, pVersion2->dwMajor); | 189 | Assert::Equal<DWORD>(10, pVersion2->dwMajor); |
183 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); | 190 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); |
184 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 191 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -188,6 +195,7 @@ namespace DutilTests | |||
188 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); | 195 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); |
189 | 196 | ||
190 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 197 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
198 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
191 | Assert::Equal<DWORD>(0, pVersion3->dwMajor); | 199 | Assert::Equal<DWORD>(0, pVersion3->dwMajor); |
192 | Assert::Equal<DWORD>(0, pVersion3->dwMinor); | 200 | Assert::Equal<DWORD>(0, pVersion3->dwMinor); |
193 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); | 201 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); |
@@ -197,6 +205,7 @@ namespace DutilTests | |||
197 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); | 205 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); |
198 | 206 | ||
199 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); | 207 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); |
208 | Assert::Equal<WCHAR>(L'\0', pVersion4->chPrefix); | ||
200 | Assert::Equal<DWORD>(0, pVersion4->dwMajor); | 209 | Assert::Equal<DWORD>(0, pVersion4->dwMajor); |
201 | Assert::Equal<DWORD>(0, pVersion4->dwMinor); | 210 | Assert::Equal<DWORD>(0, pVersion4->dwMinor); |
202 | Assert::Equal<DWORD>(0, pVersion4->dwPatch); | 211 | Assert::Equal<DWORD>(0, pVersion4->dwPatch); |
@@ -206,6 +215,7 @@ namespace DutilTests | |||
206 | Assert::Equal<BOOL>(TRUE, pVersion4->fInvalid); | 215 | Assert::Equal<BOOL>(TRUE, pVersion4->fInvalid); |
207 | 216 | ||
208 | NativeAssert::StringEqual(wzVersion5, pVersion5->sczVersion); | 217 | NativeAssert::StringEqual(wzVersion5, pVersion5->sczVersion); |
218 | Assert::Equal<WCHAR>(L'\0', pVersion5->chPrefix); | ||
209 | Assert::Equal<DWORD>(10, pVersion5->dwMajor); | 219 | Assert::Equal<DWORD>(10, pVersion5->dwMajor); |
210 | Assert::Equal<DWORD>(0, pVersion5->dwMinor); | 220 | Assert::Equal<DWORD>(0, pVersion5->dwMinor); |
211 | Assert::Equal<DWORD>(0, pVersion5->dwPatch); | 221 | Assert::Equal<DWORD>(0, pVersion5->dwPatch); |
@@ -221,6 +231,7 @@ namespace DutilTests | |||
221 | Assert::Equal<BOOL>(FALSE, pVersion5->fInvalid); | 231 | Assert::Equal<BOOL>(FALSE, pVersion5->fInvalid); |
222 | 232 | ||
223 | NativeAssert::StringEqual(wzVersion6, pVersion6->sczVersion); | 233 | NativeAssert::StringEqual(wzVersion6, pVersion6->sczVersion); |
234 | Assert::Equal<WCHAR>(L'\0', pVersion6->chPrefix); | ||
224 | Assert::Equal<DWORD>(10, pVersion6->dwMajor); | 235 | Assert::Equal<DWORD>(10, pVersion6->dwMajor); |
225 | Assert::Equal<DWORD>(0, pVersion6->dwMinor); | 236 | Assert::Equal<DWORD>(0, pVersion6->dwMinor); |
226 | Assert::Equal<DWORD>(0, pVersion6->dwPatch); | 237 | Assert::Equal<DWORD>(0, pVersion6->dwPatch); |
@@ -273,6 +284,7 @@ namespace DutilTests | |||
273 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); | 284 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); |
274 | 285 | ||
275 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 286 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
287 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
276 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); | 288 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); |
277 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); | 289 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); |
278 | Assert::Equal<DWORD>(1, pVersion1->dwPatch); | 290 | Assert::Equal<DWORD>(1, pVersion1->dwPatch); |
@@ -287,6 +299,7 @@ namespace DutilTests | |||
287 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 299 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
288 | 300 | ||
289 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 301 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
302 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
290 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); | 303 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); |
291 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); | 304 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); |
292 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 305 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -302,6 +315,7 @@ namespace DutilTests | |||
302 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); | 315 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); |
303 | 316 | ||
304 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 317 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
318 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
305 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); | 319 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); |
306 | Assert::Equal<DWORD>(0, pVersion3->dwMinor); | 320 | Assert::Equal<DWORD>(0, pVersion3->dwMinor); |
307 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); | 321 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); |
@@ -355,6 +369,7 @@ namespace DutilTests | |||
355 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion4); | 369 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion4); |
356 | 370 | ||
357 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 371 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
372 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
358 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); | 373 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); |
359 | Assert::Equal<DWORD>(1, pVersion1->dwMinor); | 374 | Assert::Equal<DWORD>(1, pVersion1->dwMinor); |
360 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); | 375 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); |
@@ -374,6 +389,7 @@ namespace DutilTests | |||
374 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 389 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
375 | 390 | ||
376 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 391 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
392 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
377 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); | 393 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); |
378 | Assert::Equal<DWORD>(1, pVersion2->dwMinor); | 394 | Assert::Equal<DWORD>(1, pVersion2->dwMinor); |
379 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 395 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -393,6 +409,7 @@ namespace DutilTests | |||
393 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); | 409 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); |
394 | 410 | ||
395 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 411 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
412 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
396 | Assert::Equal<DWORD>(0, pVersion3->dwMajor); | 413 | Assert::Equal<DWORD>(0, pVersion3->dwMajor); |
397 | Assert::Equal<DWORD>(1, pVersion3->dwMinor); | 414 | Assert::Equal<DWORD>(1, pVersion3->dwMinor); |
398 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); | 415 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); |
@@ -416,6 +433,7 @@ namespace DutilTests | |||
416 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); | 433 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); |
417 | 434 | ||
418 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); | 435 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); |
436 | Assert::Equal<WCHAR>(L'\0', pVersion4->chPrefix); | ||
419 | Assert::Equal<DWORD>(0, pVersion4->dwMajor); | 437 | Assert::Equal<DWORD>(0, pVersion4->dwMajor); |
420 | Assert::Equal<DWORD>(1, pVersion4->dwMinor); | 438 | Assert::Equal<DWORD>(1, pVersion4->dwMinor); |
421 | Assert::Equal<DWORD>(0, pVersion4->dwPatch); | 439 | Assert::Equal<DWORD>(0, pVersion4->dwPatch); |
@@ -473,6 +491,7 @@ namespace DutilTests | |||
473 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); | 491 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); |
474 | 492 | ||
475 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 493 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
494 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
476 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); | 495 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); |
477 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); | 496 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); |
478 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); | 497 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); |
@@ -482,6 +501,7 @@ namespace DutilTests | |||
482 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 501 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
483 | 502 | ||
484 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 503 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
504 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
485 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); | 505 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); |
486 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); | 506 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); |
487 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); | 507 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); |
@@ -491,6 +511,7 @@ namespace DutilTests | |||
491 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); | 511 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); |
492 | 512 | ||
493 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 513 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
514 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
494 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); | 515 | Assert::Equal<DWORD>(1, pVersion3->dwMajor); |
495 | Assert::Equal<DWORD>(2, pVersion3->dwMinor); | 516 | Assert::Equal<DWORD>(2, pVersion3->dwMinor); |
496 | Assert::Equal<DWORD>(3, pVersion3->dwPatch); | 517 | Assert::Equal<DWORD>(3, pVersion3->dwPatch); |
@@ -518,9 +539,13 @@ namespace DutilTests | |||
518 | VERUTIL_VERSION* pVersion1 = NULL; | 539 | VERUTIL_VERSION* pVersion1 = NULL; |
519 | VERUTIL_VERSION* pVersion2 = NULL; | 540 | VERUTIL_VERSION* pVersion2 = NULL; |
520 | VERUTIL_VERSION* pVersion3 = NULL; | 541 | VERUTIL_VERSION* pVersion3 = NULL; |
542 | VERUTIL_VERSION* pVersion4 = NULL; | ||
543 | VERUTIL_VERSION* pVersion5 = NULL; | ||
521 | LPCWSTR wzVersion1 = L"10.20.30.40"; | 544 | LPCWSTR wzVersion1 = L"10.20.30.40"; |
522 | LPCWSTR wzVersion2 = L"v10.20.30.40"; | 545 | LPCWSTR wzVersion2 = L"v10.20.30.40"; |
523 | LPCWSTR wzVersion3 = L"V10.20.30.40"; | 546 | LPCWSTR wzVersion3 = L"V10.20.30.40"; |
547 | LPCWSTR wzVersion4 = L"v10.20.30.40-abc"; | ||
548 | LPCWSTR wzVersion5 = L"vvv"; | ||
524 | 549 | ||
525 | try | 550 | try |
526 | { | 551 | { |
@@ -533,7 +558,14 @@ namespace DutilTests | |||
533 | hr = VerParseVersion(wzVersion3, 0, FALSE, &pVersion3); | 558 | hr = VerParseVersion(wzVersion3, 0, FALSE, &pVersion3); |
534 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); | 559 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion3); |
535 | 560 | ||
561 | hr = VerParseVersion(wzVersion4, 0, FALSE, &pVersion4); | ||
562 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion4); | ||
563 | |||
564 | hr = VerParseVersion(wzVersion5, 0, FALSE, &pVersion5); | ||
565 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion5); | ||
566 | |||
536 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 567 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
568 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
537 | Assert::Equal<DWORD>(10, pVersion1->dwMajor); | 569 | Assert::Equal<DWORD>(10, pVersion1->dwMajor); |
538 | Assert::Equal<DWORD>(20, pVersion1->dwMinor); | 570 | Assert::Equal<DWORD>(20, pVersion1->dwMinor); |
539 | Assert::Equal<DWORD>(30, pVersion1->dwPatch); | 571 | Assert::Equal<DWORD>(30, pVersion1->dwPatch); |
@@ -543,6 +575,7 @@ namespace DutilTests | |||
543 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 575 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
544 | 576 | ||
545 | NativeAssert::StringEqual(wzVersion1, pVersion2->sczVersion); | 577 | NativeAssert::StringEqual(wzVersion1, pVersion2->sczVersion); |
578 | Assert::Equal<WCHAR>(L'v', pVersion2->chPrefix); | ||
546 | Assert::Equal<DWORD>(10, pVersion2->dwMajor); | 579 | Assert::Equal<DWORD>(10, pVersion2->dwMajor); |
547 | Assert::Equal<DWORD>(20, pVersion2->dwMinor); | 580 | Assert::Equal<DWORD>(20, pVersion2->dwMinor); |
548 | Assert::Equal<DWORD>(30, pVersion2->dwPatch); | 581 | Assert::Equal<DWORD>(30, pVersion2->dwPatch); |
@@ -552,6 +585,7 @@ namespace DutilTests | |||
552 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); | 585 | Assert::Equal<BOOL>(FALSE, pVersion2->fInvalid); |
553 | 586 | ||
554 | NativeAssert::StringEqual(wzVersion1, pVersion3->sczVersion); | 587 | NativeAssert::StringEqual(wzVersion1, pVersion3->sczVersion); |
588 | Assert::Equal<WCHAR>(L'V', pVersion3->chPrefix); | ||
555 | Assert::Equal<DWORD>(10, pVersion3->dwMajor); | 589 | Assert::Equal<DWORD>(10, pVersion3->dwMajor); |
556 | Assert::Equal<DWORD>(20, pVersion3->dwMinor); | 590 | Assert::Equal<DWORD>(20, pVersion3->dwMinor); |
557 | Assert::Equal<DWORD>(30, pVersion3->dwPatch); | 591 | Assert::Equal<DWORD>(30, pVersion3->dwPatch); |
@@ -560,14 +594,42 @@ namespace DutilTests | |||
560 | Assert::Equal<DWORD>(11, pVersion3->cchMetadataOffset); | 594 | Assert::Equal<DWORD>(11, pVersion3->cchMetadataOffset); |
561 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); | 595 | Assert::Equal<BOOL>(FALSE, pVersion3->fInvalid); |
562 | 596 | ||
597 | NativeAssert::StringEqual(L"10.20.30.40-abc", pVersion4->sczVersion); | ||
598 | Assert::Equal<WCHAR>(L'v', pVersion4->chPrefix); | ||
599 | Assert::Equal<DWORD>(10, pVersion4->dwMajor); | ||
600 | Assert::Equal<DWORD>(20, pVersion4->dwMinor); | ||
601 | Assert::Equal<DWORD>(30, pVersion4->dwPatch); | ||
602 | Assert::Equal<DWORD>(40, pVersion4->dwRevision); | ||
603 | Assert::Equal<DWORD>(1, pVersion4->cReleaseLabels); | ||
604 | |||
605 | Assert::Equal<BOOL>(FALSE, pVersion4->rgReleaseLabels[0].fNumeric); | ||
606 | Assert::Equal<DWORD>(3, pVersion4->rgReleaseLabels[0].cchLabel); | ||
607 | Assert::Equal<DWORD>(12, pVersion4->rgReleaseLabels[0].cchLabelOffset); | ||
608 | |||
609 | Assert::Equal<DWORD>(15, pVersion4->cchMetadataOffset); | ||
610 | Assert::Equal<BOOL>(FALSE, pVersion4->fInvalid); | ||
611 | |||
612 | NativeAssert::StringEqual(wzVersion5, pVersion5->sczVersion); | ||
613 | Assert::Equal<WCHAR>(L'\0', pVersion5->chPrefix); | ||
614 | Assert::Equal<DWORD>(0, pVersion5->dwMajor); | ||
615 | Assert::Equal<DWORD>(0, pVersion5->dwMinor); | ||
616 | Assert::Equal<DWORD>(0, pVersion5->dwPatch); | ||
617 | Assert::Equal<DWORD>(0, pVersion5->dwRevision); | ||
618 | Assert::Equal<DWORD>(0, pVersion5->cReleaseLabels); | ||
619 | Assert::Equal<DWORD>(0, pVersion5->cchMetadataOffset); | ||
620 | Assert::Equal<BOOL>(TRUE, pVersion5->fInvalid); | ||
621 | |||
563 | TestVerutilCompareParsedVersions(pVersion1, pVersion2, 0); | 622 | TestVerutilCompareParsedVersions(pVersion1, pVersion2, 0); |
564 | TestVerutilCompareParsedVersions(pVersion1, pVersion3, 0); | 623 | TestVerutilCompareParsedVersions(pVersion1, pVersion3, 0); |
624 | TestVerutilCompareParsedVersions(pVersion1, pVersion4, 1); | ||
565 | } | 625 | } |
566 | finally | 626 | finally |
567 | { | 627 | { |
568 | ReleaseVerutilVersion(pVersion1); | 628 | ReleaseVerutilVersion(pVersion1); |
569 | ReleaseVerutilVersion(pVersion2); | 629 | ReleaseVerutilVersion(pVersion2); |
570 | ReleaseVerutilVersion(pVersion3); | 630 | ReleaseVerutilVersion(pVersion3); |
631 | ReleaseVerutilVersion(pVersion4); | ||
632 | ReleaseVerutilVersion(pVersion5); | ||
571 | } | 633 | } |
572 | } | 634 | } |
573 | 635 | ||
@@ -589,6 +651,7 @@ namespace DutilTests | |||
589 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); | 651 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); |
590 | 652 | ||
591 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 653 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
654 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
592 | Assert::Equal<DWORD>(4294967295, pVersion1->dwMajor); | 655 | Assert::Equal<DWORD>(4294967295, pVersion1->dwMajor); |
593 | Assert::Equal<DWORD>(4294967295, pVersion1->dwMinor); | 656 | Assert::Equal<DWORD>(4294967295, pVersion1->dwMinor); |
594 | Assert::Equal<DWORD>(4294967295, pVersion1->dwPatch); | 657 | Assert::Equal<DWORD>(4294967295, pVersion1->dwPatch); |
@@ -598,6 +661,7 @@ namespace DutilTests | |||
598 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 661 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
599 | 662 | ||
600 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 663 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
664 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
601 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); | 665 | Assert::Equal<DWORD>(0, pVersion2->dwMajor); |
602 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); | 666 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); |
603 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 667 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -633,6 +697,7 @@ namespace DutilTests | |||
633 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); | 697 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion2); |
634 | 698 | ||
635 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 699 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
700 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
636 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); | 701 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); |
637 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); | 702 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); |
638 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); | 703 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); |
@@ -642,6 +707,7 @@ namespace DutilTests | |||
642 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); | 707 | Assert::Equal<BOOL>(FALSE, pVersion1->fInvalid); |
643 | 708 | ||
644 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 709 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
710 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
645 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); | 711 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); |
646 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); | 712 | Assert::Equal<DWORD>(2, pVersion2->dwMinor); |
647 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); | 713 | Assert::Equal<DWORD>(3, pVersion2->dwPatch); |
@@ -674,6 +740,7 @@ namespace DutilTests | |||
674 | NativeAssert::Succeeded(hr, "VerParseVersion failed"); | 740 | NativeAssert::Succeeded(hr, "VerParseVersion failed"); |
675 | 741 | ||
676 | NativeAssert::StringEqual(wzVersion, pSource->sczVersion); | 742 | NativeAssert::StringEqual(wzVersion, pSource->sczVersion); |
743 | Assert::Equal<WCHAR>(L'\0', pSource->chPrefix); | ||
677 | Assert::Equal<DWORD>(1, pSource->dwMajor); | 744 | Assert::Equal<DWORD>(1, pSource->dwMajor); |
678 | Assert::Equal<DWORD>(2, pSource->dwMinor); | 745 | Assert::Equal<DWORD>(2, pSource->dwMinor); |
679 | Assert::Equal<DWORD>(3, pSource->dwPatch); | 746 | Assert::Equal<DWORD>(3, pSource->dwPatch); |
@@ -688,6 +755,7 @@ namespace DutilTests | |||
688 | 755 | ||
689 | Assert::False(pSource == pCopy); | 756 | Assert::False(pSource == pCopy); |
690 | Assert::False(pSource->sczVersion == pCopy->sczVersion); | 757 | Assert::False(pSource->sczVersion == pCopy->sczVersion); |
758 | Assert::Equal<WCHAR>(L'\0', pCopy->chPrefix); | ||
691 | 759 | ||
692 | hr = VerCompareParsedVersions(pSource, pCopy, &nResult); | 760 | hr = VerCompareParsedVersions(pSource, pCopy, &nResult); |
693 | NativeAssert::Succeeded(hr, "VerCompareParsedVersions failed"); | 761 | NativeAssert::Succeeded(hr, "VerCompareParsedVersions failed"); |
@@ -705,7 +773,7 @@ namespace DutilTests | |||
705 | void VerCopyVersionCopiesPrereleaseVersion() | 773 | void VerCopyVersionCopiesPrereleaseVersion() |
706 | { | 774 | { |
707 | HRESULT hr = S_OK; | 775 | HRESULT hr = S_OK; |
708 | LPCWSTR wzVersion = L"1.2.3.4-a.b.c.d.5.+abc123"; | 776 | LPCWSTR wzVersion = L"v1.2.3.4-a.b.c.d.5.+abc123"; |
709 | VERUTIL_VERSION* pSource = NULL; | 777 | VERUTIL_VERSION* pSource = NULL; |
710 | VERUTIL_VERSION* pCopy = NULL; | 778 | VERUTIL_VERSION* pCopy = NULL; |
711 | int nResult = 0; | 779 | int nResult = 0; |
@@ -715,7 +783,8 @@ namespace DutilTests | |||
715 | hr = VerParseVersion(wzVersion, 0, FALSE, &pSource); | 783 | hr = VerParseVersion(wzVersion, 0, FALSE, &pSource); |
716 | NativeAssert::Succeeded(hr, "VerParseVersion failed"); | 784 | NativeAssert::Succeeded(hr, "VerParseVersion failed"); |
717 | 785 | ||
718 | NativeAssert::StringEqual(wzVersion, pSource->sczVersion); | 786 | NativeAssert::StringEqual(L"1.2.3.4-a.b.c.d.5.+abc123", pSource->sczVersion); |
787 | Assert::Equal<WCHAR>(L'v', pSource->chPrefix); | ||
719 | Assert::Equal<DWORD>(1, pSource->dwMajor); | 788 | Assert::Equal<DWORD>(1, pSource->dwMajor); |
720 | Assert::Equal<DWORD>(2, pSource->dwMinor); | 789 | Assert::Equal<DWORD>(2, pSource->dwMinor); |
721 | Assert::Equal<DWORD>(3, pSource->dwPatch); | 790 | Assert::Equal<DWORD>(3, pSource->dwPatch); |
@@ -752,6 +821,7 @@ namespace DutilTests | |||
752 | Assert::False(pSource == pCopy); | 821 | Assert::False(pSource == pCopy); |
753 | Assert::False(pSource->sczVersion == pCopy->sczVersion); | 822 | Assert::False(pSource->sczVersion == pCopy->sczVersion); |
754 | Assert::False(pSource->rgReleaseLabels == pCopy->rgReleaseLabels); | 823 | Assert::False(pSource->rgReleaseLabels == pCopy->rgReleaseLabels); |
824 | Assert::Equal<WCHAR>(L'v', pCopy->chPrefix); | ||
755 | 825 | ||
756 | hr = VerCompareParsedVersions(pSource, pCopy, &nResult); | 826 | hr = VerCompareParsedVersions(pSource, pCopy, &nResult); |
757 | NativeAssert::Succeeded(hr, "VerCompareParsedVersions failed"); | 827 | NativeAssert::Succeeded(hr, "VerCompareParsedVersions failed"); |
@@ -808,6 +878,7 @@ namespace DutilTests | |||
808 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion7); | 878 | NativeAssert::Succeeded(hr, "Failed to parse version '{0}'", wzVersion7); |
809 | 879 | ||
810 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); | 880 | NativeAssert::StringEqual(wzVersion1, pVersion1->sczVersion); |
881 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
811 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); | 882 | Assert::Equal<DWORD>(0, pVersion1->dwMajor); |
812 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); | 883 | Assert::Equal<DWORD>(0, pVersion1->dwMinor); |
813 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); | 884 | Assert::Equal<DWORD>(0, pVersion1->dwPatch); |
@@ -817,6 +888,7 @@ namespace DutilTests | |||
817 | Assert::Equal<BOOL>(TRUE, pVersion1->fInvalid); | 888 | Assert::Equal<BOOL>(TRUE, pVersion1->fInvalid); |
818 | 889 | ||
819 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); | 890 | NativeAssert::StringEqual(wzVersion2, pVersion2->sczVersion); |
891 | Assert::Equal<WCHAR>(L'\0', pVersion2->chPrefix); | ||
820 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); | 892 | Assert::Equal<DWORD>(1, pVersion2->dwMajor); |
821 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); | 893 | Assert::Equal<DWORD>(0, pVersion2->dwMinor); |
822 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); | 894 | Assert::Equal<DWORD>(0, pVersion2->dwPatch); |
@@ -826,6 +898,7 @@ namespace DutilTests | |||
826 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); | 898 | Assert::Equal<BOOL>(TRUE, pVersion2->fInvalid); |
827 | 899 | ||
828 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); | 900 | NativeAssert::StringEqual(wzVersion3, pVersion3->sczVersion); |
901 | Assert::Equal<WCHAR>(L'\0', pVersion3->chPrefix); | ||
829 | Assert::Equal<DWORD>(2, pVersion3->dwMajor); | 902 | Assert::Equal<DWORD>(2, pVersion3->dwMajor); |
830 | Assert::Equal<DWORD>(1, pVersion3->dwMinor); | 903 | Assert::Equal<DWORD>(1, pVersion3->dwMinor); |
831 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); | 904 | Assert::Equal<DWORD>(0, pVersion3->dwPatch); |
@@ -835,6 +908,7 @@ namespace DutilTests | |||
835 | Assert::Equal<BOOL>(TRUE, pVersion3->fInvalid); | 908 | Assert::Equal<BOOL>(TRUE, pVersion3->fInvalid); |
836 | 909 | ||
837 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); | 910 | NativeAssert::StringEqual(wzVersion4, pVersion4->sczVersion); |
911 | Assert::Equal<WCHAR>(L'\0', pVersion4->chPrefix); | ||
838 | Assert::Equal<DWORD>(3, pVersion4->dwMajor); | 912 | Assert::Equal<DWORD>(3, pVersion4->dwMajor); |
839 | Assert::Equal<DWORD>(2, pVersion4->dwMinor); | 913 | Assert::Equal<DWORD>(2, pVersion4->dwMinor); |
840 | Assert::Equal<DWORD>(1, pVersion4->dwPatch); | 914 | Assert::Equal<DWORD>(1, pVersion4->dwPatch); |
@@ -844,6 +918,7 @@ namespace DutilTests | |||
844 | Assert::Equal<BOOL>(TRUE, pVersion4->fInvalid); | 918 | Assert::Equal<BOOL>(TRUE, pVersion4->fInvalid); |
845 | 919 | ||
846 | NativeAssert::StringEqual(wzVersion5, pVersion5->sczVersion); | 920 | NativeAssert::StringEqual(wzVersion5, pVersion5->sczVersion); |
921 | Assert::Equal<WCHAR>(L'\0', pVersion5->chPrefix); | ||
847 | Assert::Equal<DWORD>(4, pVersion5->dwMajor); | 922 | Assert::Equal<DWORD>(4, pVersion5->dwMajor); |
848 | Assert::Equal<DWORD>(3, pVersion5->dwMinor); | 923 | Assert::Equal<DWORD>(3, pVersion5->dwMinor); |
849 | Assert::Equal<DWORD>(2, pVersion5->dwPatch); | 924 | Assert::Equal<DWORD>(2, pVersion5->dwPatch); |
@@ -853,6 +928,7 @@ namespace DutilTests | |||
853 | Assert::Equal<BOOL>(TRUE, pVersion5->fInvalid); | 928 | Assert::Equal<BOOL>(TRUE, pVersion5->fInvalid); |
854 | 929 | ||
855 | NativeAssert::StringEqual(wzVersion6, pVersion6->sczVersion); | 930 | NativeAssert::StringEqual(wzVersion6, pVersion6->sczVersion); |
931 | Assert::Equal<WCHAR>(L'\0', pVersion6->chPrefix); | ||
856 | Assert::Equal<DWORD>(5, pVersion6->dwMajor); | 932 | Assert::Equal<DWORD>(5, pVersion6->dwMajor); |
857 | Assert::Equal<DWORD>(0, pVersion6->dwMinor); | 933 | Assert::Equal<DWORD>(0, pVersion6->dwMinor); |
858 | Assert::Equal<DWORD>(0, pVersion6->dwPatch); | 934 | Assert::Equal<DWORD>(0, pVersion6->dwPatch); |
@@ -862,6 +938,7 @@ namespace DutilTests | |||
862 | Assert::Equal<BOOL>(TRUE, pVersion6->fInvalid); | 938 | Assert::Equal<BOOL>(TRUE, pVersion6->fInvalid); |
863 | 939 | ||
864 | NativeAssert::StringEqual(wzVersion7, pVersion7->sczVersion); | 940 | NativeAssert::StringEqual(wzVersion7, pVersion7->sczVersion); |
941 | Assert::Equal<WCHAR>(L'\0', pVersion7->chPrefix); | ||
865 | Assert::Equal<DWORD>(6, pVersion7->dwMajor); | 942 | Assert::Equal<DWORD>(6, pVersion7->dwMajor); |
866 | Assert::Equal<DWORD>(0, pVersion7->dwMinor); | 943 | Assert::Equal<DWORD>(0, pVersion7->dwMinor); |
867 | Assert::Equal<DWORD>(0, pVersion7->dwPatch); | 944 | Assert::Equal<DWORD>(0, pVersion7->dwPatch); |
@@ -899,6 +976,7 @@ namespace DutilTests | |||
899 | NativeAssert::Succeeded(hr, "VerVersionFromQword failed"); | 976 | NativeAssert::Succeeded(hr, "VerVersionFromQword failed"); |
900 | 977 | ||
901 | NativeAssert::StringEqual(L"1.2.3.4", pVersion1->sczVersion); | 978 | NativeAssert::StringEqual(L"1.2.3.4", pVersion1->sczVersion); |
979 | Assert::Equal<WCHAR>(L'\0', pVersion1->chPrefix); | ||
902 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); | 980 | Assert::Equal<DWORD>(1, pVersion1->dwMajor); |
903 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); | 981 | Assert::Equal<DWORD>(2, pVersion1->dwMinor); |
904 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); | 982 | Assert::Equal<DWORD>(3, pVersion1->dwPatch); |