summaryrefslogtreecommitdiff
path: root/src/burn/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test')
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index a3b58426..0a8ac369 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -67,6 +67,7 @@ namespace Bootstrapper
67 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 67 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
68 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 68 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
69 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 69 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
70 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
70 71
71 BOOL fRollback = FALSE; 72 BOOL fRollback = FALSE;
72 DWORD dwIndex = 0; 73 DWORD dwIndex = 0;
@@ -226,6 +227,7 @@ namespace Bootstrapper
226 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 227 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
227 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 228 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
228 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 229 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
230 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
229 231
230 BOOL fRollback = FALSE; 232 BOOL fRollback = FALSE;
231 DWORD dwIndex = 0; 233 DWORD dwIndex = 0;
@@ -358,6 +360,7 @@ namespace Bootstrapper
358 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 360 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
359 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 361 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
360 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 362 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
363 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
361 364
362 BOOL fRollback = FALSE; 365 BOOL fRollback = FALSE;
363 DWORD dwIndex = 0; 366 DWORD dwIndex = 0;
@@ -457,6 +460,7 @@ namespace Bootstrapper
457 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 460 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
458 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 461 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
459 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 462 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
463 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
460 464
461 BOOL fRollback = FALSE; 465 BOOL fRollback = FALSE;
462 DWORD dwIndex = 0; 466 DWORD dwIndex = 0;
@@ -575,6 +579,7 @@ namespace Bootstrapper
575 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 579 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
576 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 580 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
577 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 581 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
582 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
578 583
579 BOOL fRollback = FALSE; 584 BOOL fRollback = FALSE;
580 DWORD dwIndex = 0; 585 DWORD dwIndex = 0;
@@ -677,6 +682,7 @@ namespace Bootstrapper
677 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 682 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
678 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 683 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
679 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 684 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
685 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
680 686
681 BOOL fRollback = FALSE; 687 BOOL fRollback = FALSE;
682 DWORD dwIndex = 0; 688 DWORD dwIndex = 0;
@@ -742,6 +748,76 @@ namespace Bootstrapper
742 } 748 }
743 749
744 [Fact] 750 [Fact]
751 void SingleMsiDowngradeTest()
752 {
753 HRESULT hr = S_OK;
754 BURN_ENGINE_STATE engineState = { };
755 BURN_ENGINE_STATE* pEngineState = &engineState;
756 BURN_PLAN* pPlan = &engineState.plan;
757
758 InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState);
759 DetectAttachedContainerAsAttached(pEngineState);
760 DetectPackagesAsAbsent(pEngineState);
761 DetectRelatedBundle(pEngineState, L"{AF8355C9-CCDD-4D61-BF5F-EA5F948D8F01}", L"1.1.0.0", BOOTSTRAPPER_RELATION_UPGRADE);
762
763 hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL);
764 NativeAssert::Succeeded(hr, "CorePlan failed");
765
766 Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action);
767 NativeAssert::StringEqual(L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", pPlan->wzBundleId);
768 NativeAssert::StringEqual(L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", pPlan->wzBundleProviderKey);
769 Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle);
770 Assert::Equal<BOOL>(TRUE, pPlan->fPerMachine);
771 Assert::Equal<BOOL>(FALSE, pPlan->fCanAffectMachineState);
772 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
773 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
774 Assert::Equal<BOOL>(TRUE, pPlan->fDowngrade);
775
776 BOOL fRollback = FALSE;
777 DWORD dwIndex = 0;
778 Assert::Equal(dwIndex, pPlan->cRegistrationActions);
779
780 fRollback = TRUE;
781 dwIndex = 0;
782 Assert::Equal(dwIndex, pPlan->cRollbackRegistrationActions);
783
784 fRollback = FALSE;
785 dwIndex = 0;
786 Assert::Equal(dwIndex, pPlan->cCacheActions);
787
788 fRollback = TRUE;
789 dwIndex = 0;
790 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
791
792 Assert::Equal(0ull, pPlan->qwEstimatedSize);
793 Assert::Equal(0ull, pPlan->qwCacheSizeTotal);
794
795 fRollback = FALSE;
796 dwIndex = 0;
797 Assert::Equal(dwIndex, pPlan->cExecuteActions);
798
799 fRollback = TRUE;
800 dwIndex = 0;
801 Assert::Equal(dwIndex, pPlan->cRollbackActions);
802
803 Assert::Equal(0ul, pPlan->cExecutePackagesTotal);
804 Assert::Equal(0ul, pPlan->cOverallProgressTicksTotal);
805
806 dwIndex = 0;
807 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
808
809 dwIndex = 0;
810 Assert::Equal(dwIndex, pPlan->cCleanActions);
811
812 UINT uIndex = 0;
813 ValidatePlannedProvider(pPlan, uIndex++, L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", NULL);
814 Assert::Equal(uIndex, pPlan->cPlannedProviders);
815
816 Assert::Equal(1ul, pEngineState->packages.cPackages);
817 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[0], L"PackageA", BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN, BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN);
818 }
819
820 [Fact]
745 void SingleMsiForceAbsentTest() 821 void SingleMsiForceAbsentTest()
746 { 822 {
747 HRESULT hr = S_OK; 823 HRESULT hr = S_OK;
@@ -770,6 +846,7 @@ namespace Bootstrapper
770 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 846 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
771 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 847 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
772 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 848 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
849 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
773 850
774 BOOL fRollback = FALSE; 851 BOOL fRollback = FALSE;
775 DWORD dwIndex = 0; 852 DWORD dwIndex = 0;
@@ -858,6 +935,7 @@ namespace Bootstrapper
858 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 935 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
859 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 936 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
860 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 937 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
938 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
861 939
862 BOOL fRollback = FALSE; 940 BOOL fRollback = FALSE;
863 DWORD dwIndex = 0; 941 DWORD dwIndex = 0;
@@ -948,6 +1026,7 @@ namespace Bootstrapper
948 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1026 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
949 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1027 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
950 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1028 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1029 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
951 1030
952 BOOL fRollback = FALSE; 1031 BOOL fRollback = FALSE;
953 DWORD dwIndex = 0; 1032 DWORD dwIndex = 0;
@@ -1053,6 +1132,7 @@ namespace Bootstrapper
1053 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1132 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1054 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1133 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1055 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1134 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1135 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1056 1136
1057 BOOL fRollback = FALSE; 1137 BOOL fRollback = FALSE;
1058 DWORD dwIndex = 0; 1138 DWORD dwIndex = 0;
@@ -1131,6 +1211,7 @@ namespace Bootstrapper
1131 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1211 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1132 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1212 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1133 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1213 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1214 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1134 1215
1135 BOOL fRollback = FALSE; 1216 BOOL fRollback = FALSE;
1136 DWORD dwIndex = 0; 1217 DWORD dwIndex = 0;
@@ -1225,6 +1306,7 @@ namespace Bootstrapper
1225 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1306 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1226 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1307 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1227 Assert::Equal<BOOL>(TRUE, pPlan->fDisallowRemoval); 1308 Assert::Equal<BOOL>(TRUE, pPlan->fDisallowRemoval);
1309 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1228 1310
1229 BOOL fRollback = FALSE; 1311 BOOL fRollback = FALSE;
1230 DWORD dwIndex = 0; 1312 DWORD dwIndex = 0;
@@ -1294,6 +1376,7 @@ namespace Bootstrapper
1294 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1376 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1295 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1377 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1296 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1378 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1379 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1297 1380
1298 BOOL fRollback = FALSE; 1381 BOOL fRollback = FALSE;
1299 DWORD dwIndex = 0; 1382 DWORD dwIndex = 0;
@@ -1377,6 +1460,7 @@ namespace Bootstrapper
1377 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1460 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1378 Assert::Equal<BOOL>(TRUE, pPlan->fDisableRollback); 1461 Assert::Equal<BOOL>(TRUE, pPlan->fDisableRollback);
1379 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1462 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1463 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1380 1464
1381 BOOL fRollback = FALSE; 1465 BOOL fRollback = FALSE;
1382 DWORD dwIndex = 0; 1466 DWORD dwIndex = 0;
@@ -1471,6 +1555,7 @@ namespace Bootstrapper
1471 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1555 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1472 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1556 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1473 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1557 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1558 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1474 1559
1475 BOOL fRollback = FALSE; 1560 BOOL fRollback = FALSE;
1476 DWORD dwIndex = 0; 1561 DWORD dwIndex = 0;
@@ -1601,6 +1686,7 @@ namespace Bootstrapper
1601 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1686 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1602 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1687 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1603 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1688 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1689 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1604 1690
1605 BOOL fRollback = FALSE; 1691 BOOL fRollback = FALSE;
1606 DWORD dwIndex = 0; 1692 DWORD dwIndex = 0;
@@ -1716,6 +1802,7 @@ namespace Bootstrapper
1716 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1802 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1717 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1803 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1718 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1804 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1805 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1719 1806
1720 BOOL fRollback = FALSE; 1807 BOOL fRollback = FALSE;
1721 DWORD dwIndex = 0; 1808 DWORD dwIndex = 0;
@@ -1810,6 +1897,7 @@ namespace Bootstrapper
1810 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); 1897 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
1811 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); 1898 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
1812 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); 1899 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
1900 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
1813 1901
1814 BOOL fRollback = FALSE; 1902 BOOL fRollback = FALSE;
1815 DWORD dwIndex = 0; 1903 DWORD dwIndex = 0;