diff options
Diffstat (limited to 'src/test/BurnUnitTest/VariableTest.cpp')
-rw-r--r-- | src/test/BurnUnitTest/VariableTest.cpp | 69 |
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 | ||