aboutsummaryrefslogtreecommitdiff
path: root/src/libs/dutil/test/DUtilUnitTest
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-05-16 16:03:25 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-05-17 22:54:13 -0500
commit0ea53e27361cbfe664df98d717e55005f329aff1 (patch)
treed75e02fadee9669593ca3ccf28401b67064244af /src/libs/dutil/test/DUtilUnitTest
parentd5985a1688bc878e42ffd3ce3939fa52303cab16 (diff)
downloadwix-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.cpp82
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);