aboutsummaryrefslogtreecommitdiff
path: root/src/test/BurnUnitTest/VariableTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/BurnUnitTest/VariableTest.cpp')
-rw-r--r--src/test/BurnUnitTest/VariableTest.cpp69
1 files changed, 49 insertions, 20 deletions
diff --git a/src/test/BurnUnitTest/VariableTest.cpp b/src/test/BurnUnitTest/VariableTest.cpp
index 7d670744..0b49a530 100644
--- a/src/test/BurnUnitTest/VariableTest.cpp
+++ b/src/test/BurnUnitTest/VariableTest.cpp
@@ -35,21 +35,22 @@ namespace Bootstrapper
35 TestThrowOnFailure(hr, L"Failed to initialize variables."); 35 TestThrowOnFailure(hr, L"Failed to initialize variables.");
36 36
37 // set variables 37 // set variables
38 VariableSetStringHelper(&variables, L"PROP1", L"VAL1"); 38 VariableSetStringHelper(&variables, L"PROP1", L"VAL1", FALSE);
39 VariableSetNumericHelper(&variables, L"PROP2", 2); 39 VariableSetNumericHelper(&variables, L"PROP2", 2);
40 VariableSetStringHelper(&variables, L"PROP5", L"VAL5"); 40 VariableSetStringHelper(&variables, L"PROP5", L"VAL5", FALSE);
41 VariableSetStringHelper(&variables, L"PROP3", L"VAL3"); 41 VariableSetStringHelper(&variables, L"PROP3", L"VAL3", FALSE);
42 VariableSetStringHelper(&variables, L"PROP4", L"VAL4"); 42 VariableSetStringHelper(&variables, L"PROP4", L"VAL4", FALSE);
43 VariableSetStringHelper(&variables, L"PROP6", L"VAL6"); 43 VariableSetStringHelper(&variables, L"PROP6", L"VAL6", FALSE);
44 VariableSetStringHelper(&variables, L"PROP7", L"7"); 44 VariableSetStringHelper(&variables, L"PROP7", L"7", FALSE);
45 VariableSetVersionHelper(&variables, L"PROP8", MAKEQWORDVERSION(1,1,0,0)); 45 VariableSetVersionHelper(&variables, L"PROP8", MAKEQWORDVERSION(1,1,0,0));
46 VariableSetStringHelper(&variables, L"PROP9", L"[VAL9]", TRUE);
46 47
47 // set overwritten variables 48 // set overwritten variables
48 VariableSetStringHelper(&variables, L"OVERWRITTEN_STRING", L"ORIGINAL"); 49 VariableSetStringHelper(&variables, L"OVERWRITTEN_STRING", L"ORIGINAL", FALSE);
49 VariableSetNumericHelper(&variables, L"OVERWRITTEN_STRING", 42); 50 VariableSetNumericHelper(&variables, L"OVERWRITTEN_STRING", 42);
50 51
51 VariableSetNumericHelper(&variables, L"OVERWRITTEN_NUMBER", 5); 52 VariableSetNumericHelper(&variables, L"OVERWRITTEN_NUMBER", 5);
52 VariableSetStringHelper(&variables, L"OVERWRITTEN_NUMBER", L"NEW"); 53 VariableSetStringHelper(&variables, L"OVERWRITTEN_NUMBER", L"NEW", FALSE);
53 54
54 // get and verify variable values 55 // get and verify variable values
55 Assert::Equal<String^>(gcnew String(L"VAL1"), VariableGetStringHelper(&variables, L"PROP1")); 56 Assert::Equal<String^>(gcnew String(L"VAL1"), VariableGetStringHelper(&variables, L"PROP1"));
@@ -62,6 +63,7 @@ namespace Bootstrapper
62 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7")); 63 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7"));
63 Assert::Equal(MAKEQWORDVERSION(1,1,0,0), VariableGetVersionHelper(&variables, L"PROP8")); 64 Assert::Equal(MAKEQWORDVERSION(1,1,0,0), VariableGetVersionHelper(&variables, L"PROP8"));
64 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetStringHelper(&variables, L"PROP8")); 65 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetStringHelper(&variables, L"PROP8"));
66 Assert::Equal<String^>(gcnew String(L"[VAL9]"), VariableGetStringHelper(&variables, L"PROP9"));
65 67
66 Assert::Equal(42ll, VariableGetNumericHelper(&variables, L"OVERWRITTEN_STRING")); 68 Assert::Equal(42ll, VariableGetNumericHelper(&variables, L"OVERWRITTEN_STRING"));
67 Assert::Equal<String^>(gcnew String(L"NEW"), VariableGetStringHelper(&variables, L"OVERWRITTEN_NUMBER")); 69 Assert::Equal<String^>(gcnew String(L"NEW"), VariableGetStringHelper(&variables, L"OVERWRITTEN_NUMBER"));
@@ -87,6 +89,7 @@ namespace Bootstrapper
87 L" <Variable Id='Var3' Type='version' Value='1.2.3.4' Hidden='no' Persisted='no' />" 89 L" <Variable Id='Var3' Type='version' Value='1.2.3.4' Hidden='no' Persisted='no' />"
88 L" <Variable Id='Var4' Hidden='no' Persisted='no' />" 90 L" <Variable Id='Var4' Hidden='no' Persisted='no' />"
89 L" <Variable Id='Var5' Type='string' Value='' Hidden='no' Persisted='no' />" 91 L" <Variable Id='Var5' Type='string' Value='' Hidden='no' Persisted='no' />"
92 L" <Variable Id='Var6' Type='formatted' Value='[Formatted]' Hidden='no' Persisted='no' />"
90 L"</Bundle>"; 93 L"</Bundle>";
91 94
92 hr = VariableInitialize(&variables); 95 hr = VariableInitialize(&variables);
@@ -103,10 +106,12 @@ namespace Bootstrapper
103 Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables, L"Var2")); 106 Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables, L"Var2"));
104 Assert::Equal((int)BURN_VARIANT_TYPE_VERSION, VariableGetTypeHelper(&variables, L"Var3")); 107 Assert::Equal((int)BURN_VARIANT_TYPE_VERSION, VariableGetTypeHelper(&variables, L"Var3"));
105 Assert::Equal((int)BURN_VARIANT_TYPE_NONE, VariableGetTypeHelper(&variables, L"Var4")); 108 Assert::Equal((int)BURN_VARIANT_TYPE_NONE, VariableGetTypeHelper(&variables, L"Var4"));
109 Assert::Equal((int)BURN_VARIANT_TYPE_FORMATTED, VariableGetTypeHelper(&variables, L"Var6"));
106 110
107 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Var1")); 111 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Var1"));
108 Assert::Equal<String^>(gcnew String(L"String value."), VariableGetStringHelper(&variables, L"Var2")); 112 Assert::Equal<String^>(gcnew String(L"String value."), VariableGetStringHelper(&variables, L"Var2"));
109 Assert::Equal(MAKEQWORDVERSION(1,2,3,4), VariableGetVersionHelper(&variables, L"Var3")); 113 Assert::Equal(MAKEQWORDVERSION(1,2,3,4), VariableGetVersionHelper(&variables, L"Var3"));
114 Assert::Equal<String^>(gcnew String(L"[Formatted]"), VariableGetStringHelper(&variables, L"Var6"));
110 } 115 }
111 finally 116 finally
112 { 117 {
@@ -128,9 +133,13 @@ namespace Bootstrapper
128 TestThrowOnFailure(hr, L"Failed to initialize variables."); 133 TestThrowOnFailure(hr, L"Failed to initialize variables.");
129 134
130 // set variables 135 // set variables
131 VariableSetStringHelper(&variables, L"PROP1", L"VAL1"); 136 VariableSetStringHelper(&variables, L"PROP1", L"VAL1", FALSE);
132 VariableSetStringHelper(&variables, L"PROP2", L"VAL2"); 137 VariableSetStringHelper(&variables, L"PROP2", L"VAL2", FALSE);
133 VariableSetNumericHelper(&variables, L"PROP3", 3); 138 VariableSetNumericHelper(&variables, L"PROP3", 3);
139 VariableSetStringHelper(&variables, L"PROP4", L"[PROP1]", FALSE);
140 VariableSetStringHelper(&variables, L"PROP5", L"[PROP2]", FALSE);
141 VariableSetStringHelper(&variables, L"PROP6", L"[PROP4]", TRUE);
142 VariableSetStringHelper(&variables, L"PROP7", L"[PROP5]", TRUE);
134 143
135 // test string formatting 144 // test string formatting
136 Assert::Equal<String^>(gcnew String(L"NOPROP"), VariableFormatStringHelper(&variables, L"NOPROP")); 145 Assert::Equal<String^>(gcnew String(L"NOPROP"), VariableFormatStringHelper(&variables, L"NOPROP"));
@@ -148,6 +157,10 @@ namespace Bootstrapper
148 Assert::Equal<String^>(gcnew String(L"[NONE"), VariableFormatStringHelper(&variables, L"[NONE")); 157 Assert::Equal<String^>(gcnew String(L"[NONE"), VariableFormatStringHelper(&variables, L"[NONE"));
149 Assert::Equal<String^>(gcnew String(L"VAL2"), VariableGetFormattedHelper(&variables, L"PROP2")); 158 Assert::Equal<String^>(gcnew String(L"VAL2"), VariableGetFormattedHelper(&variables, L"PROP2"));
150 Assert::Equal<String^>(gcnew String(L"3"), VariableGetFormattedHelper(&variables, L"PROP3")); 159 Assert::Equal<String^>(gcnew String(L"3"), VariableGetFormattedHelper(&variables, L"PROP3"));
160 Assert::Equal<String^>(gcnew String(L"[PROP1]"), VariableGetFormattedHelper(&variables, L"PROP4"));
161 Assert::Equal<String^>(gcnew String(L"[PROP2]"), VariableGetFormattedHelper(&variables, L"PROP5"));
162 Assert::Equal<String^>(gcnew String(L"[PROP1]"), VariableGetFormattedHelper(&variables, L"PROP6"));
163 Assert::Equal<String^>(gcnew String(L"[PROP2]"), VariableGetFormattedHelper(&variables, L"PROP7"));
151 164
152 hr = VariableFormatString(&variables, L"PRE [PROP1] POST", &scz, &cch); 165 hr = VariableFormatString(&variables, L"PRE [PROP1] POST", &scz, &cch);
153 TestThrowOnFailure(hr, L"Failed to format string"); 166 TestThrowOnFailure(hr, L"Failed to format string");
@@ -186,15 +199,15 @@ namespace Bootstrapper
186 TestThrowOnFailure(hr, L"Failed to initialize variables."); 199 TestThrowOnFailure(hr, L"Failed to initialize variables.");
187 200
188 // set variables 201 // set variables
189 VariableSetStringHelper(&variables, L"PROP1", L"VAL1"); 202 VariableSetStringHelper(&variables, L"PROP1", L"VAL1", FALSE);
190 VariableSetStringHelper(&variables, L"PROP2", L"VAL2"); 203 VariableSetStringHelper(&variables, L"PROP2", L"VAL2", FALSE);
191 VariableSetStringHelper(&variables, L"PROP3", L"VAL3"); 204 VariableSetStringHelper(&variables, L"PROP3", L"VAL3", FALSE);
192 VariableSetStringHelper(&variables, L"PROP4", L"BEGIN MID END"); 205 VariableSetStringHelper(&variables, L"PROP4", L"BEGIN MID END", FALSE);
193 VariableSetNumericHelper(&variables, L"PROP5", 5); 206 VariableSetNumericHelper(&variables, L"PROP5", 5);
194 VariableSetNumericHelper(&variables, L"PROP6", 6); 207 VariableSetNumericHelper(&variables, L"PROP6", 6);
195 VariableSetStringHelper(&variables, L"PROP7", L""); 208 VariableSetStringHelper(&variables, L"PROP7", L"", FALSE);
196 VariableSetNumericHelper(&variables, L"PROP8", 0); 209 VariableSetNumericHelper(&variables, L"PROP8", 0);
197 VariableSetStringHelper(&variables, L"_PROP9", L"VAL9"); 210 VariableSetStringHelper(&variables, L"_PROP9", L"VAL9", FALSE);
198 VariableSetNumericHelper(&variables, L"PROP10", -10); 211 VariableSetNumericHelper(&variables, L"PROP10", -10);
199 VariableSetNumericHelper(&variables, L"PROP11", 9223372036854775807ll); 212 VariableSetNumericHelper(&variables, L"PROP11", 9223372036854775807ll);
200 VariableSetNumericHelper(&variables, L"PROP12", -9223372036854775808ll); 213 VariableSetNumericHelper(&variables, L"PROP12", -9223372036854775808ll);
@@ -208,7 +221,11 @@ namespace Bootstrapper
208 VariableSetVersionHelper(&variables, L"PROP20", MAKEQWORDVERSION(1,1,1,1)); 221 VariableSetVersionHelper(&variables, L"PROP20", MAKEQWORDVERSION(1,1,1,1));
209 VariableSetNumericHelper(&variables, L"vPROP21", 1); 222 VariableSetNumericHelper(&variables, L"vPROP21", 1);
210 VariableSetVersionHelper(&variables, L"PROP22", MAKEQWORDVERSION(65535,65535,65535,65535)); 223 VariableSetVersionHelper(&variables, L"PROP22", MAKEQWORDVERSION(65535,65535,65535,65535));
211 VariableSetStringHelper(&variables, L"PROP23", L"1.1.1"); 224 VariableSetStringHelper(&variables, L"PROP23", L"1.1.1", FALSE);
225 VariableSetStringHelper(&variables, L"PROP24", L"[PROP1]", TRUE);
226 VariableSetStringHelper(&variables, L"PROP25", L"[PROP7]", TRUE);
227 VariableSetStringHelper(&variables, L"PROP26", L"[PROP8]", TRUE);
228 VariableSetStringHelper(&variables, L"PROP27", L"[PROP16]", TRUE);
212 229
213 // test conditions 230 // test conditions
214 Assert::True(EvaluateConditionHelper(&variables, L"PROP1")); 231 Assert::True(EvaluateConditionHelper(&variables, L"PROP1"));
@@ -218,6 +235,10 @@ namespace Bootstrapper
218 Assert::True(EvaluateConditionHelper(&variables, L"_PROP9")); 235 Assert::True(EvaluateConditionHelper(&variables, L"_PROP9"));
219 Assert::False(EvaluateConditionHelper(&variables, L"PROP16")); 236 Assert::False(EvaluateConditionHelper(&variables, L"PROP16"));
220 Assert::True(EvaluateConditionHelper(&variables, L"PROP17")); 237 Assert::True(EvaluateConditionHelper(&variables, L"PROP17"));
238 Assert::True(EvaluateConditionHelper(&variables, L"PROP24"));
239 Assert::True(EvaluateConditionHelper(&variables, L"PROP25"));
240 Assert::True(EvaluateConditionHelper(&variables, L"PROP26"));
241 Assert::True(EvaluateConditionHelper(&variables, L"PROP27"));
221 242
222 Assert::True(EvaluateConditionHelper(&variables, L"PROP1 = \"VAL1\"")); 243 Assert::True(EvaluateConditionHelper(&variables, L"PROP1 = \"VAL1\""));
223 Assert::False(EvaluateConditionHelper(&variables, L"NONE = \"NOT\"")); 244 Assert::False(EvaluateConditionHelper(&variables, L"NONE = \"NOT\""));
@@ -365,10 +386,11 @@ namespace Bootstrapper
365 hr = VariableInitialize(&variables1); 386 hr = VariableInitialize(&variables1);
366 TestThrowOnFailure(hr, L"Failed to initialize variables."); 387 TestThrowOnFailure(hr, L"Failed to initialize variables.");
367 388
368 VariableSetStringHelper(&variables1, L"PROP1", L"VAL1"); 389 VariableSetStringHelper(&variables1, L"PROP1", L"VAL1", FALSE);
369 VariableSetNumericHelper(&variables1, L"PROP2", 2); 390 VariableSetNumericHelper(&variables1, L"PROP2", 2);
370 VariableSetVersionHelper(&variables1, L"PROP3", MAKEQWORDVERSION(1,1,1,1)); 391 VariableSetVersionHelper(&variables1, L"PROP3", MAKEQWORDVERSION(1,1,1,1));
371 VariableSetStringHelper(&variables1, L"PROP4", L"VAL4"); 392 VariableSetStringHelper(&variables1, L"PROP4", L"VAL4", FALSE);
393 VariableSetStringHelper(&variables1, L"PROP5", L"[PROP1]", TRUE);
372 394
373 hr = VariableSerialize(&variables1, FALSE, &pbBuffer, &cbBuffer); 395 hr = VariableSerialize(&variables1, FALSE, &pbBuffer, &cbBuffer);
374 TestThrowOnFailure(hr, L"Failed to serialize variables."); 396 TestThrowOnFailure(hr, L"Failed to serialize variables.");
@@ -384,6 +406,13 @@ namespace Bootstrapper
384 Assert::Equal(2ll, VariableGetNumericHelper(&variables2, L"PROP2")); 406 Assert::Equal(2ll, VariableGetNumericHelper(&variables2, L"PROP2"));
385 Assert::Equal(MAKEQWORDVERSION(1,1,1,1), VariableGetVersionHelper(&variables2, L"PROP3")); 407 Assert::Equal(MAKEQWORDVERSION(1,1,1,1), VariableGetVersionHelper(&variables2, L"PROP3"));
386 Assert::Equal<String^>(gcnew String(L"VAL4"), VariableGetStringHelper(&variables2, L"PROP4")); 408 Assert::Equal<String^>(gcnew String(L"VAL4"), VariableGetStringHelper(&variables2, L"PROP4"));
409 Assert::Equal<String^>(gcnew String(L"[PROP1]"), VariableGetStringHelper(&variables2, L"PROP5"));
410
411 Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"PROP1"));
412 Assert::Equal((int)BURN_VARIANT_TYPE_NUMERIC, VariableGetTypeHelper(&variables2, L"PROP2"));
413 Assert::Equal((int)BURN_VARIANT_TYPE_VERSION, VariableGetTypeHelper(&variables2, L"PROP3"));
414 Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"PROP4"));
415 Assert::Equal((int)BURN_VARIANT_TYPE_FORMATTED, VariableGetTypeHelper(&variables2, L"PROP5"));
387 } 416 }
388 finally 417 finally
389 { 418 {
@@ -420,7 +449,7 @@ namespace Bootstrapper
420 } 449 }
421 450
422 // attempt to set a built-in property 451 // attempt to set a built-in property
423 hr = VariableSetString(&variables, L"VersionNT", L"VAL", FALSE); 452 hr = VariableSetString(&variables, L"VersionNT", L"VAL", FALSE, FALSE);
424 Assert::Equal(E_INVALIDARG, hr); 453 Assert::Equal(E_INVALIDARG, hr);
425 Assert::False(EvaluateConditionHelper(&variables, L"VersionNT = \"VAL\"")); 454 Assert::False(EvaluateConditionHelper(&variables, L"VersionNT = \"VAL\""));
426 455