aboutsummaryrefslogtreecommitdiff
path: root/src/test/BurnUnitTest/SearchTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/BurnUnitTest/SearchTest.cpp')
-rw-r--r--src/test/BurnUnitTest/SearchTest.cpp87
1 files changed, 79 insertions, 8 deletions
diff --git a/src/test/BurnUnitTest/SearchTest.cpp b/src/test/BurnUnitTest/SearchTest.cpp
index 48ab60aa..32107d87 100644
--- a/src/test/BurnUnitTest/SearchTest.cpp
+++ b/src/test/BurnUnitTest/SearchTest.cpp
@@ -66,8 +66,8 @@ namespace Bootstrapper
66 pin_ptr<const WCHAR> wzDirectory1 = PtrToStringChars(this->TestContext->TestDirectory); 66 pin_ptr<const WCHAR> wzDirectory1 = PtrToStringChars(this->TestContext->TestDirectory);
67 pin_ptr<const WCHAR> wzDirectory2 = PtrToStringChars(System::IO::Path::Combine(this->TestContext->TestDirectory, gcnew String(L"none"))); 67 pin_ptr<const WCHAR> wzDirectory2 = PtrToStringChars(System::IO::Path::Combine(this->TestContext->TestDirectory, gcnew String(L"none")));
68 68
69 VariableSetStringHelper(&variables, L"Directory1", wzDirectory1); 69 VariableSetStringHelper(&variables, L"Directory1", wzDirectory1, FALSE);
70 VariableSetStringHelper(&variables, L"Directory2", wzDirectory2); 70 VariableSetStringHelper(&variables, L"Directory2", wzDirectory2, FALSE);
71 71
72 LPCWSTR wzDocument = 72 LPCWSTR wzDocument =
73 L"<Bundle>" 73 L"<Bundle>"
@@ -117,8 +117,8 @@ namespace Bootstrapper
117 hr = FileVersion(wzFile2, &uliVersion.HighPart, &uliVersion.LowPart); 117 hr = FileVersion(wzFile2, &uliVersion.HighPart, &uliVersion.LowPart);
118 TestThrowOnFailure(hr, L"Failed to get DLL version."); 118 TestThrowOnFailure(hr, L"Failed to get DLL version.");
119 119
120 VariableSetStringHelper(&variables, L"File1", wzFile1); 120 VariableSetStringHelper(&variables, L"File1", wzFile1, FALSE);
121 VariableSetStringHelper(&variables, L"File2", wzFile2); 121 VariableSetStringHelper(&variables, L"File2", wzFile2, FALSE);
122 122
123 LPCWSTR wzDocument = 123 LPCWSTR wzDocument =
124 L"<Bundle>" 124 L"<Bundle>"
@@ -191,8 +191,8 @@ namespace Bootstrapper
191 Assert::True(SUCCEEDED(hr)); 191 Assert::True(SUCCEEDED(hr));
192 } 192 }
193 193
194 VariableSetStringHelper(&variables, L"MyKey", L"SOFTWARE\\Microsoft\\WiX_Burn_UnitTest\\Value"); 194 VariableSetStringHelper(&variables, L"MyKey", L"SOFTWARE\\Microsoft\\WiX_Burn_UnitTest\\Value", FALSE);
195 VariableSetStringHelper(&variables, L"MyValue", L"String"); 195 VariableSetStringHelper(&variables, L"MyValue", L"String", FALSE);
196 196
197 LPCWSTR wzDocument = 197 LPCWSTR wzDocument =
198 L"<Bundle>" 198 L"<Bundle>"
@@ -219,8 +219,9 @@ namespace Bootstrapper
219 L" <RegistrySearch Id='Search21' Type='value' Root='HKCU' Key='SOFTWARE\\Classes\\CLSID\\WiX_Burn_UnitTest\\Bitness' Value='TestStringSpecificToBitness' Variable='Variable21' VariableType='string' Win64='no' />" 219 L" <RegistrySearch Id='Search21' Type='value' Root='HKCU' Key='SOFTWARE\\Classes\\CLSID\\WiX_Burn_UnitTest\\Bitness' Value='TestStringSpecificToBitness' Variable='Variable21' VariableType='string' Win64='no' />"
220 L" <RegistrySearch Id='Search22' Type='value' Root='HKCU' Key='SOFTWARE\\Classes\\CLSID\\WiX_Burn_UnitTest\\Bitness' Value='TestStringSpecificToBitness' Variable='Variable22' VariableType='string' Win64='yes' />" 220 L" <RegistrySearch Id='Search22' Type='value' Root='HKCU' Key='SOFTWARE\\Classes\\CLSID\\WiX_Burn_UnitTest\\Bitness' Value='TestStringSpecificToBitness' Variable='Variable22' VariableType='string' Win64='yes' />"
221 L" <RegistrySearch Id='Search23' Type='exists' Root='HKU' Key='.DEFAULT\\Environment' Variable='Variable23' />" 221 L" <RegistrySearch Id='Search23' Type='exists' Root='HKU' Key='.DEFAULT\\Environment' Variable='Variable23' />"
222 L" <RegistrySearch Id='Search23' Type='exists' Root='HKU' Key='.DEFAULT\\System\\NetworkServiceSidSubkeyDoesNotExist' Variable='Variable24' />" 222 L" <RegistrySearch Id='Search24' Type='exists' Root='HKU' Key='.DEFAULT\\System\\NetworkServiceSidSubkeyDoesNotExist' Variable='Variable24' />"
223 L" <RegistrySearch Id='Search24' Type='value' Root='HKCR' Key='.msi' Variable='Variable25' VariableType='string' />" 223 L" <RegistrySearch Id='Search25' Type='value' Root='HKCR' Key='.msi' Variable='Variable25' VariableType='string' />"
224 L" <RegistrySearch Id='Search26' Type='value' Root='HKCR' Key='.msi' Variable='Variable26' VariableType='formatted' />"
224 L"</Bundle>"; 225 L"</Bundle>";
225 226
226 // load XML document 227 // load XML document
@@ -263,6 +264,7 @@ namespace Bootstrapper
263 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable23")); 264 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable23"));
264 Assert::Equal(0ll, VariableGetNumericHelper(&variables, L"Variable24")); 265 Assert::Equal(0ll, VariableGetNumericHelper(&variables, L"Variable24"));
265 Assert::Equal<String^>(gcnew String(L"Msi.Package"), VariableGetStringHelper(&variables, L"Variable25")); 266 Assert::Equal<String^>(gcnew String(L"Msi.Package"), VariableGetStringHelper(&variables, L"Variable25"));
267 Assert::Equal<String^>(gcnew String(L"Msi.Package"), VariableGetStringHelper(&variables, L"Variable26"));
266 } 268 }
267 finally 269 finally
268 { 270 {
@@ -525,6 +527,75 @@ namespace Bootstrapper
525 SearchesUninitialize(&searches); 527 SearchesUninitialize(&searches);
526 } 528 }
527 } 529 }
530
531 [Fact]
532 void SetVariableSearchTest()
533 {
534 HRESULT hr = S_OK;
535 IXMLDOMElement* pixeBundle = NULL;
536 BURN_VARIABLES variables = { };
537 BURN_SEARCHES searches = { };
538 BURN_EXTENSIONS burnExtensions = { };
539 try
540 {
541 LPCWSTR wzDocument =
542 L"<Bundle>"
543 L" <SetVariable Id='Search1' Type='string' Value='VAL1' Variable='PROP1' />"
544 L" <SetVariable Id='Search2' Type='numeric' Value='2' Variable='PROP2' />"
545 L" <SetVariable Id='Search3' Type='string' Value='VAL3' Variable='PROP3' />"
546 L" <SetVariable Id='Search4' Type='string' Value='VAL4' Variable='PROP4' />"
547 L" <SetVariable Id='Search5' Type='string' Value='VAL5' Variable='PROP5' />"
548 L" <SetVariable Id='Search6' Type='string' Value='VAL6' Variable='PROP6' />"
549 L" <SetVariable Id='Search7' Type='string' Value='7' Variable='PROP7' />"
550 L" <SetVariable Id='Search8' Type='version' Value='1.1.0.0' Variable='PROP8' />"
551 L" <SetVariable Id='Search9' Type='formatted' Value='[VAL9]' Variable='PROP9' />"
552 L" <SetVariable Id='Search10' Type='numeric' Value='42' Variable='OVERWRITTEN_STRING' />"
553 L" <SetVariable Id='Search11' Type='string' Value='NEW' Variable='OVERWRITTEN_NUMBER' />"
554 L" <SetVariable Id='Search12' Variable='REMOVED_NUMBER' />"
555 L"</Bundle>";
556
557 hr = VariableInitialize(&variables);
558 TestThrowOnFailure(hr, L"Failed to initialize variables.");
559
560 // set variables
561 VariableSetStringHelper(&variables, L"OVERWRITTEN_STRING", L"ORIGINAL", FALSE);
562 VariableSetNumericHelper(&variables, L"OVERWRITTEN_NUMBER", 5);
563 VariableSetNumericHelper(&variables, L"REMOVED_NUMBER", 22);
564
565 // load XML document
566 LoadBundleXmlHelper(wzDocument, &pixeBundle);
567
568 hr = SearchesParseFromXml(&searches, &burnExtensions, pixeBundle);
569 TestThrowOnFailure(hr, L"Failed to parse searches from XML.");
570
571 // execute searches
572 hr = SearchesExecute(&searches, &variables);
573 TestThrowOnFailure(hr, L"Failed to execute searches.");
574
575 // check variable values
576 Assert::Equal<String^>(gcnew String(L"VAL1"), VariableGetStringHelper(&variables, L"PROP1"));
577 Assert::Equal(2ll, VariableGetNumericHelper(&variables, L"PROP2"));
578 Assert::Equal<String^>(gcnew String(L"2"), VariableGetStringHelper(&variables, L"PROP2"));
579 Assert::Equal<String^>(gcnew String(L"VAL3"), VariableGetStringHelper(&variables, L"PROP3"));
580 Assert::Equal<String^>(gcnew String(L"VAL4"), VariableGetStringHelper(&variables, L"PROP4"));
581 Assert::Equal<String^>(gcnew String(L"VAL5"), VariableGetStringHelper(&variables, L"PROP5"));
582 Assert::Equal<String^>(gcnew String(L"VAL6"), VariableGetStringHelper(&variables, L"PROP6"));
583 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7"));
584 Assert::Equal(MAKEQWORDVERSION(1, 1, 0, 0), VariableGetVersionHelper(&variables, L"PROP8"));
585 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetStringHelper(&variables, L"PROP8"));
586 Assert::Equal<String^>(gcnew String(L"[VAL9]"), VariableGetStringHelper(&variables, L"PROP9"));
587
588 Assert::Equal(42ll, VariableGetNumericHelper(&variables, L"OVERWRITTEN_STRING"));
589 Assert::Equal<String^>(gcnew String(L"NEW"), VariableGetStringHelper(&variables, L"OVERWRITTEN_NUMBER"));
590 Assert::Equal((int)BURN_VARIANT_TYPE_NONE, VariableGetTypeHelper(&variables, L"REMOVED_NUMBER"));
591 }
592 finally
593 {
594 ReleaseObject(pixeBundle);
595 VariablesUninitialize(&variables);
596 SearchesUninitialize(&searches);
597 }
598 }
528 }; 599 };
529} 600}
530} 601}