aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-10-17 19:12:21 -0500
committerSean Hall <r.sean.hall@gmail.com>2020-10-24 20:07:21 -0500
commit273c69f34311f4f4e5f6b5896e71d0788f12d96a (patch)
tree4cf8f42f3ecfa9341a41686b74aa5e48068ede87 /src/test
parent3f8e35223216ebbe7f6683a5031a5a97bbc66d5a (diff)
downloadwix-273c69f34311f4f4e5f6b5896e71d0788f12d96a.tar.gz
wix-273c69f34311f4f4e5f6b5896e71d0788f12d96a.tar.bz2
wix-273c69f34311f4f4e5f6b5896e71d0788f12d96a.zip
WIXFEAT:6210 Change data type of versions to strings.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/BurnUnitTest/BurnUnitTest.vcxproj4
-rw-r--r--src/test/BurnUnitTest/SearchTest.cpp17
-rw-r--r--src/test/BurnUnitTest/VariableHelpers.cpp34
-rw-r--r--src/test/BurnUnitTest/VariableHelpers.h4
-rw-r--r--src/test/BurnUnitTest/VariableTest.cpp32
-rw-r--r--src/test/BurnUnitTest/VariantTest.cpp52
-rw-r--r--src/test/BurnUnitTest/packages.config2
-rw-r--r--src/test/BurnUnitTest/precomp.h1
8 files changed, 95 insertions, 51 deletions
diff --git a/src/test/BurnUnitTest/BurnUnitTest.vcxproj b/src/test/BurnUnitTest/BurnUnitTest.vcxproj
index fda7cb7b..cc19fa60 100644
--- a/src/test/BurnUnitTest/BurnUnitTest.vcxproj
+++ b/src/test/BurnUnitTest/BurnUnitTest.vcxproj
@@ -4,7 +4,7 @@
4 4
5<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 5<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6 <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props')" /> 6 <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props')" />
7 <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.49\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.49\build\WixToolset.DUtil.props')" /> 7 <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" />
8 <ItemGroup Label="ProjectConfigurations"> 8 <ItemGroup Label="ProjectConfigurations">
9 <ProjectConfiguration Include="Debug|Win32"> 9 <ProjectConfiguration Include="Debug|Win32">
10 <Configuration>Debug</Configuration> 10 <Configuration>Debug</Configuration>
@@ -80,6 +80,6 @@
80 </PropertyGroup> 80 </PropertyGroup>
81 <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props'))" /> 81 <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.props'))" />
82 <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.targets'))" /> 82 <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.40\build\WixBuildTools.TestSupport.Native.targets'))" />
83 <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.49\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.49\build\WixToolset.DUtil.props'))" /> 83 <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" />
84 </Target> 84 </Target>
85</Project> 85</Project>
diff --git a/src/test/BurnUnitTest/SearchTest.cpp b/src/test/BurnUnitTest/SearchTest.cpp
index 32107d87..d868190d 100644
--- a/src/test/BurnUnitTest/SearchTest.cpp
+++ b/src/test/BurnUnitTest/SearchTest.cpp
@@ -106,6 +106,7 @@ namespace Bootstrapper
106 BURN_SEARCHES searches = { }; 106 BURN_SEARCHES searches = { };
107 BURN_EXTENSIONS burnExtensions = { }; 107 BURN_EXTENSIONS burnExtensions = { };
108 ULARGE_INTEGER uliVersion = { }; 108 ULARGE_INTEGER uliVersion = { };
109 VERUTIL_VERSION* pVersion = NULL;
109 try 110 try
110 { 111 {
111 hr = VariableInitialize(&variables); 112 hr = VariableInitialize(&variables);
@@ -117,6 +118,9 @@ namespace Bootstrapper
117 hr = FileVersion(wzFile2, &uliVersion.HighPart, &uliVersion.LowPart); 118 hr = FileVersion(wzFile2, &uliVersion.HighPart, &uliVersion.LowPart);
118 TestThrowOnFailure(hr, L"Failed to get DLL version."); 119 TestThrowOnFailure(hr, L"Failed to get DLL version.");
119 120
121 hr = VerVersionFromQword(uliVersion.QuadPart, &pVersion);
122 NativeAssert::Succeeded(hr, "Failed to create version.");
123
120 VariableSetStringHelper(&variables, L"File1", wzFile1, FALSE); 124 VariableSetStringHelper(&variables, L"File1", wzFile1, FALSE);
121 VariableSetStringHelper(&variables, L"File2", wzFile2, FALSE); 125 VariableSetStringHelper(&variables, L"File2", wzFile2, FALSE);
122 126
@@ -140,10 +144,11 @@ namespace Bootstrapper
140 // check variable values 144 // check variable values
141 Assert::Equal(0ll, VariableGetNumericHelper(&variables, L"Variable1")); 145 Assert::Equal(0ll, VariableGetNumericHelper(&variables, L"Variable1"));
142 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable2")); 146 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable2"));
143 Assert::Equal(uliVersion.QuadPart, VariableGetVersionHelper(&variables, L"Variable3")); 147 Assert::Equal<String^>(gcnew String(pVersion->sczVersion), VariableGetVersionHelper(&variables, L"Variable3"));
144 } 148 }
145 finally 149 finally
146 { 150 {
151 ReleaseVerutilVersion(pVersion);
147 ReleaseObject(pixeBundle); 152 ReleaseObject(pixeBundle);
148 VariablesUninitialize(&variables); 153 VariablesUninitialize(&variables);
149 SearchesUninitialize(&searches); 154 SearchesUninitialize(&searches);
@@ -247,8 +252,8 @@ namespace Bootstrapper
247 Assert::NotEqual(gcnew String(L"String1 %TEMP%"), VariableGetStringHelper(&variables, L"Variable10")); 252 Assert::NotEqual(gcnew String(L"String1 %TEMP%"), VariableGetStringHelper(&variables, L"Variable10"));
248 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable11")); 253 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable11"));
249 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable12")); 254 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable12"));
250 Assert::Equal(MAKEQWORDVERSION(1,1,1,1), VariableGetVersionHelper(&variables, L"Variable13")); 255 Assert::Equal<String^>(gcnew String(L"1.1.1.1"), VariableGetVersionHelper(&variables, L"Variable13"));
251 Assert::Equal(MAKEQWORDVERSION(1,1,1,1), VariableGetVersionHelper(&variables, L"Variable14")); 256 Assert::Equal<String^>(gcnew String(L"1.1.1.1"), VariableGetVersionHelper(&variables, L"Variable14"));
252 Assert::Equal<String^>(gcnew String(L"String1"), VariableGetStringHelper(&variables, L"Variable15")); 257 Assert::Equal<String^>(gcnew String(L"String1"), VariableGetStringHelper(&variables, L"Variable15"));
253 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable16")); 258 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable16"));
254 Assert::False(VariableExistsHelper(&variables, L"Variable17")); 259 Assert::False(VariableExistsHelper(&variables, L"Variable17"));
@@ -401,11 +406,11 @@ namespace Bootstrapper
401 406
402 // check variable values 407 // check variable values
403 Assert::Equal(2ll, VariableGetNumericHelper(&variables, L"Variable1")); 408 Assert::Equal(2ll, VariableGetNumericHelper(&variables, L"Variable1"));
404 Assert::Equal(MAKEQWORDVERSION(1,0,0,0), VariableGetVersionHelper(&variables, L"Variable2")); 409 Assert::Equal<String^>(gcnew String(L"1.0.0.0"), VariableGetVersionHelper(&variables, L"Variable2"));
405 Assert::Equal(1033ll, VariableGetNumericHelper(&variables, L"Variable3")); 410 Assert::Equal(1033ll, VariableGetNumericHelper(&variables, L"Variable3"));
406 Assert::Equal(5ll, VariableGetNumericHelper(&variables, L"Variable4")); 411 Assert::Equal(5ll, VariableGetNumericHelper(&variables, L"Variable4"));
407 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable5")); 412 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Variable5"));
408 Assert::Equal(MAKEQWORDVERSION(1,0,0,0), VariableGetVersionHelper(&variables, L"Variable6")); 413 Assert::Equal<String^>(gcnew String(L"1.0.0.0"), VariableGetVersionHelper(&variables, L"Variable6"));
409 } 414 }
410 finally 415 finally
411 { 416 {
@@ -581,7 +586,7 @@ namespace Bootstrapper
581 Assert::Equal<String^>(gcnew String(L"VAL5"), VariableGetStringHelper(&variables, L"PROP5")); 586 Assert::Equal<String^>(gcnew String(L"VAL5"), VariableGetStringHelper(&variables, L"PROP5"));
582 Assert::Equal<String^>(gcnew String(L"VAL6"), VariableGetStringHelper(&variables, L"PROP6")); 587 Assert::Equal<String^>(gcnew String(L"VAL6"), VariableGetStringHelper(&variables, L"PROP6"));
583 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7")); 588 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7"));
584 Assert::Equal(MAKEQWORDVERSION(1, 1, 0, 0), VariableGetVersionHelper(&variables, L"PROP8")); 589 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetVersionHelper(&variables, L"PROP8"));
585 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetStringHelper(&variables, L"PROP8")); 590 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")); 591 Assert::Equal<String^>(gcnew String(L"[VAL9]"), VariableGetStringHelper(&variables, L"PROP9"));
587 592
diff --git a/src/test/BurnUnitTest/VariableHelpers.cpp b/src/test/BurnUnitTest/VariableHelpers.cpp
index fdfb9191..99ba492a 100644
--- a/src/test/BurnUnitTest/VariableHelpers.cpp
+++ b/src/test/BurnUnitTest/VariableHelpers.cpp
@@ -33,12 +33,23 @@ namespace Bootstrapper
33 TestThrowOnFailure2(hr, L"Failed to set %s to: %I64d", wzVariable, llValue); 33 TestThrowOnFailure2(hr, L"Failed to set %s to: %I64d", wzVariable, llValue);
34 } 34 }
35 35
36 void VariableSetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, DWORD64 qwValue) 36 void VariableSetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LPCWSTR wzValue)
37 { 37 {
38 HRESULT hr = S_OK; 38 HRESULT hr = S_OK;
39 VERUTIL_VERSION* pVersion = NULL;
39 40
40 hr = VariableSetVersion(pVariables, wzVariable, qwValue, FALSE); 41 try
41 TestThrowOnFailure2(hr, L"Failed to set %s to: 0x%016I64x", wzVariable, qwValue); 42 {
43 hr = VerParseVersion(wzValue, 0, FALSE, &pVersion);
44 TestThrowOnFailure1(hr, L"Failed to parse version '%ls'", wzValue);
45
46 hr = VariableSetVersion(pVariables, wzVariable, pVersion, FALSE);
47 TestThrowOnFailure2(hr, L"Failed to set %s to: '%ls'", wzVariable, wzValue);
48 }
49 finally
50 {
51 ReleaseVerutilVersion(pVersion);
52 }
42 } 53 }
43 54
44 String^ VariableGetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable) 55 String^ VariableGetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable)
@@ -69,15 +80,22 @@ namespace Bootstrapper
69 return llValue; 80 return llValue;
70 } 81 }
71 82
72 unsigned __int64 VariableGetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable) 83 String^ VariableGetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable)
73 { 84 {
74 HRESULT hr = S_OK; 85 HRESULT hr = S_OK;
75 DWORD64 qwValue = 0; 86 VERUTIL_VERSION* pValue = NULL;
76 87
77 hr = VariableGetVersion(pVariables, wzVariable, &qwValue); 88 try
78 TestThrowOnFailure1(hr, L"Failed to get: %s", wzVariable); 89 {
90 hr = VariableGetVersion(pVariables, wzVariable, &pValue);
91 TestThrowOnFailure1(hr, L"Failed to get: %s", wzVariable);
79 92
80 return qwValue; 93 return gcnew String(pValue->sczVersion);
94 }
95 finally
96 {
97 ReleaseVerutilVersion(pValue);
98 }
81 } 99 }
82 100
83 String^ VariableGetFormattedHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable) 101 String^ VariableGetFormattedHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable)
diff --git a/src/test/BurnUnitTest/VariableHelpers.h b/src/test/BurnUnitTest/VariableHelpers.h
index 8c2b081a..96122219 100644
--- a/src/test/BurnUnitTest/VariableHelpers.h
+++ b/src/test/BurnUnitTest/VariableHelpers.h
@@ -16,10 +16,10 @@ namespace Bootstrapper
16 16
17void VariableSetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LPCWSTR wzValue, BOOL fFormatted); 17void VariableSetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LPCWSTR wzValue, BOOL fFormatted);
18void VariableSetNumericHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LONGLONG llValue); 18void VariableSetNumericHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LONGLONG llValue);
19void VariableSetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, DWORD64 qwValue); 19void VariableSetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable, LPCWSTR wzValue);
20System::String^ VariableGetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable); 20System::String^ VariableGetStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable);
21__int64 VariableGetNumericHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable); 21__int64 VariableGetNumericHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable);
22unsigned __int64 VariableGetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable); 22System::String^ VariableGetVersionHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable);
23System::String^ VariableGetFormattedHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable); 23System::String^ VariableGetFormattedHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable);
24System::String^ VariableFormatStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzIn); 24System::String^ VariableFormatStringHelper(BURN_VARIABLES* pVariables, LPCWSTR wzIn);
25System::String^ VariableEscapeStringHelper(LPCWSTR wzIn); 25System::String^ VariableEscapeStringHelper(LPCWSTR wzIn);
diff --git a/src/test/BurnUnitTest/VariableTest.cpp b/src/test/BurnUnitTest/VariableTest.cpp
index 0b49a530..405c8fab 100644
--- a/src/test/BurnUnitTest/VariableTest.cpp
+++ b/src/test/BurnUnitTest/VariableTest.cpp
@@ -42,7 +42,7 @@ namespace Bootstrapper
42 VariableSetStringHelper(&variables, L"PROP4", L"VAL4", FALSE); 42 VariableSetStringHelper(&variables, L"PROP4", L"VAL4", FALSE);
43 VariableSetStringHelper(&variables, L"PROP6", L"VAL6", FALSE); 43 VariableSetStringHelper(&variables, L"PROP6", L"VAL6", FALSE);
44 VariableSetStringHelper(&variables, L"PROP7", L"7", FALSE); 44 VariableSetStringHelper(&variables, L"PROP7", L"7", FALSE);
45 VariableSetVersionHelper(&variables, L"PROP8", MAKEQWORDVERSION(1,1,0,0)); 45 VariableSetVersionHelper(&variables, L"PROP8", L"1.1.0.0");
46 VariableSetStringHelper(&variables, L"PROP9", L"[VAL9]", TRUE); 46 VariableSetStringHelper(&variables, L"PROP9", L"[VAL9]", TRUE);
47 47
48 // set overwritten variables 48 // set overwritten variables
@@ -61,7 +61,7 @@ namespace Bootstrapper
61 Assert::Equal<String^>(gcnew String(L"VAL5"), VariableGetStringHelper(&variables, L"PROP5")); 61 Assert::Equal<String^>(gcnew String(L"VAL5"), VariableGetStringHelper(&variables, L"PROP5"));
62 Assert::Equal<String^>(gcnew String(L"VAL6"), VariableGetStringHelper(&variables, L"PROP6")); 62 Assert::Equal<String^>(gcnew String(L"VAL6"), VariableGetStringHelper(&variables, L"PROP6"));
63 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7")); 63 Assert::Equal(7ll, VariableGetNumericHelper(&variables, L"PROP7"));
64 Assert::Equal(MAKEQWORDVERSION(1,1,0,0), VariableGetVersionHelper(&variables, L"PROP8")); 64 Assert::Equal<String^>(gcnew String(L"1.1.0.0"), VariableGetVersionHelper(&variables, L"PROP8"));
65 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")); 66 Assert::Equal<String^>(gcnew String(L"[VAL9]"), VariableGetStringHelper(&variables, L"PROP9"));
67 67
@@ -110,7 +110,7 @@ namespace Bootstrapper
110 110
111 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Var1")); 111 Assert::Equal(1ll, VariableGetNumericHelper(&variables, L"Var1"));
112 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"));
113 Assert::Equal(MAKEQWORDVERSION(1,2,3,4), VariableGetVersionHelper(&variables, L"Var3")); 113 Assert::Equal<String^>(gcnew String(L"1.2.3.4"), VariableGetVersionHelper(&variables, L"Var3"));
114 Assert::Equal<String^>(gcnew String(L"[Formatted]"), VariableGetStringHelper(&variables, L"Var6")); 114 Assert::Equal<String^>(gcnew String(L"[Formatted]"), VariableGetStringHelper(&variables, L"Var6"));
115 } 115 }
116 finally 116 finally
@@ -214,13 +214,13 @@ namespace Bootstrapper
214 VariableSetNumericHelper(&variables, L"PROP13", 0x00010000); 214 VariableSetNumericHelper(&variables, L"PROP13", 0x00010000);
215 VariableSetNumericHelper(&variables, L"PROP14", 0x00000001); 215 VariableSetNumericHelper(&variables, L"PROP14", 0x00000001);
216 VariableSetNumericHelper(&variables, L"PROP15", 0x00010001); 216 VariableSetNumericHelper(&variables, L"PROP15", 0x00010001);
217 VariableSetVersionHelper(&variables, L"PROP16", MAKEQWORDVERSION(0,0,0,0)); 217 VariableSetVersionHelper(&variables, L"PROP16", L"0.0.0.0");
218 VariableSetVersionHelper(&variables, L"PROP17", MAKEQWORDVERSION(1,0,0,0)); 218 VariableSetVersionHelper(&variables, L"PROP17", L"1.0.0.0");
219 VariableSetVersionHelper(&variables, L"PROP18", MAKEQWORDVERSION(1,1,0,0)); 219 VariableSetVersionHelper(&variables, L"PROP18", L"1.1.0.0");
220 VariableSetVersionHelper(&variables, L"PROP19", MAKEQWORDVERSION(1,1,1,0)); 220 VariableSetVersionHelper(&variables, L"PROP19", L"1.1.1.0");
221 VariableSetVersionHelper(&variables, L"PROP20", MAKEQWORDVERSION(1,1,1,1)); 221 VariableSetVersionHelper(&variables, L"PROP20", L"1.1.1.1");
222 VariableSetNumericHelper(&variables, L"vPROP21", 1); 222 VariableSetNumericHelper(&variables, L"vPROP21", 1);
223 VariableSetVersionHelper(&variables, L"PROP22", MAKEQWORDVERSION(65535,65535,65535,65535)); 223 VariableSetVersionHelper(&variables, L"PROP22", L"65535.65535.65535.65535");
224 VariableSetStringHelper(&variables, L"PROP23", L"1.1.1", FALSE); 224 VariableSetStringHelper(&variables, L"PROP23", L"1.1.1", FALSE);
225 VariableSetStringHelper(&variables, L"PROP24", L"[PROP1]", TRUE); 225 VariableSetStringHelper(&variables, L"PROP24", L"[PROP1]", TRUE);
226 VariableSetStringHelper(&variables, L"PROP25", L"[PROP7]", TRUE); 226 VariableSetStringHelper(&variables, L"PROP25", L"[PROP7]", TRUE);
@@ -233,7 +233,7 @@ namespace Bootstrapper
233 Assert::False(EvaluateConditionHelper(&variables, L"PROP7")); 233 Assert::False(EvaluateConditionHelper(&variables, L"PROP7"));
234 Assert::False(EvaluateConditionHelper(&variables, L"PROP8")); 234 Assert::False(EvaluateConditionHelper(&variables, L"PROP8"));
235 Assert::True(EvaluateConditionHelper(&variables, L"_PROP9")); 235 Assert::True(EvaluateConditionHelper(&variables, L"_PROP9"));
236 Assert::False(EvaluateConditionHelper(&variables, L"PROP16")); 236 Assert::True(EvaluateConditionHelper(&variables, L"PROP16"));
237 Assert::True(EvaluateConditionHelper(&variables, L"PROP17")); 237 Assert::True(EvaluateConditionHelper(&variables, L"PROP17"));
238 Assert::True(EvaluateConditionHelper(&variables, L"PROP24")); 238 Assert::True(EvaluateConditionHelper(&variables, L"PROP24"));
239 Assert::True(EvaluateConditionHelper(&variables, L"PROP25")); 239 Assert::True(EvaluateConditionHelper(&variables, L"PROP25"));
@@ -268,8 +268,8 @@ namespace Bootstrapper
268 Assert::True(EvaluateConditionHelper(&variables, L"PROP18 = v1.1")); 268 Assert::True(EvaluateConditionHelper(&variables, L"PROP18 = v1.1"));
269 Assert::True(EvaluateConditionHelper(&variables, L"PROP19 = v1.1.1")); 269 Assert::True(EvaluateConditionHelper(&variables, L"PROP19 = v1.1.1"));
270 Assert::True(EvaluateConditionHelper(&variables, L"PROP20 = v1.1.1.1")); 270 Assert::True(EvaluateConditionHelper(&variables, L"PROP20 = v1.1.1.1"));
271 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP20 = v1.1.1.1.0")); 271 Assert::True(EvaluateConditionHelper(&variables, L"PROP20 > v1.1.1.1.0"));
272 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP20 = v1.1.1.1.1")); 272 Assert::True(EvaluateConditionHelper(&variables, L"PROP20 > v1.1.1.1.1"));
273 Assert::True(EvaluateConditionHelper(&variables, L"vPROP21 = 1")); 273 Assert::True(EvaluateConditionHelper(&variables, L"vPROP21 = 1"));
274 Assert::True(EvaluateConditionHelper(&variables, L"PROP23 = v1.1.1")); 274 Assert::True(EvaluateConditionHelper(&variables, L"PROP23 = v1.1.1"));
275 Assert::True(EvaluateConditionHelper(&variables, L"v1.1.1 = PROP23")); 275 Assert::True(EvaluateConditionHelper(&variables, L"v1.1.1 = PROP23"));
@@ -287,8 +287,8 @@ namespace Bootstrapper
287 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP12 = -92233720368547758080000")); 287 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP12 = -92233720368547758080000"));
288 288
289 Assert::True(EvaluateConditionHelper(&variables, L"PROP22 = v65535.65535.65535.65535")); 289 Assert::True(EvaluateConditionHelper(&variables, L"PROP22 = v65535.65535.65535.65535"));
290 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP22 = v65536.65535.65535.65535")); 290 Assert::True(EvaluateConditionHelper(&variables, L"PROP22 < v65536.65535.65535.65535"));
291 Assert::True(EvaluateFailureConditionHelper(&variables, L"PROP22 = v65535.655350000.65535.65535")); 291 Assert::True(EvaluateConditionHelper(&variables, L"PROP22 < v65535.655350000.65535.65535"));
292 292
293 Assert::True(EvaluateConditionHelper(&variables, L"PROP5 < 6")); 293 Assert::True(EvaluateConditionHelper(&variables, L"PROP5 < 6"));
294 Assert::False(EvaluateConditionHelper(&variables, L"PROP5 < 5")); 294 Assert::False(EvaluateConditionHelper(&variables, L"PROP5 < 5"));
@@ -388,7 +388,7 @@ namespace Bootstrapper
388 388
389 VariableSetStringHelper(&variables1, L"PROP1", L"VAL1", FALSE); 389 VariableSetStringHelper(&variables1, L"PROP1", L"VAL1", FALSE);
390 VariableSetNumericHelper(&variables1, L"PROP2", 2); 390 VariableSetNumericHelper(&variables1, L"PROP2", 2);
391 VariableSetVersionHelper(&variables1, L"PROP3", MAKEQWORDVERSION(1,1,1,1)); 391 VariableSetVersionHelper(&variables1, L"PROP3", L"1.1.1.1");
392 VariableSetStringHelper(&variables1, L"PROP4", L"VAL4", FALSE); 392 VariableSetStringHelper(&variables1, L"PROP4", L"VAL4", FALSE);
393 VariableSetStringHelper(&variables1, L"PROP5", L"[PROP1]", TRUE); 393 VariableSetStringHelper(&variables1, L"PROP5", L"[PROP1]", TRUE);
394 394
@@ -404,7 +404,7 @@ namespace Bootstrapper
404 404
405 Assert::Equal<String^>(gcnew String(L"VAL1"), VariableGetStringHelper(&variables2, L"PROP1")); 405 Assert::Equal<String^>(gcnew String(L"VAL1"), VariableGetStringHelper(&variables2, L"PROP1"));
406 Assert::Equal(2ll, VariableGetNumericHelper(&variables2, L"PROP2")); 406 Assert::Equal(2ll, VariableGetNumericHelper(&variables2, L"PROP2"));
407 Assert::Equal(MAKEQWORDVERSION(1,1,1,1), VariableGetVersionHelper(&variables2, L"PROP3")); 407 Assert::Equal<String^>(gcnew String(L"1.1.1.1"), VariableGetVersionHelper(&variables2, L"PROP3"));
408 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")); 409 Assert::Equal<String^>(gcnew String(L"[PROP1]"), VariableGetStringHelper(&variables2, L"PROP5"));
410 410
diff --git a/src/test/BurnUnitTest/VariantTest.cpp b/src/test/BurnUnitTest/VariantTest.cpp
index c982db72..34328f53 100644
--- a/src/test/BurnUnitTest/VariantTest.cpp
+++ b/src/test/BurnUnitTest/VariantTest.cpp
@@ -37,10 +37,10 @@ namespace Bootstrapper
37 { 37 {
38 InitNumericValue(expectedVariants + 0, 2, FALSE, L"PROP1", actualVariants + 0); 38 InitNumericValue(expectedVariants + 0, 2, FALSE, L"PROP1", actualVariants + 0);
39 InitStringValue(expectedVariants + 1, L"VAL2", FALSE, L"PROP2", actualVariants + 1); 39 InitStringValue(expectedVariants + 1, L"VAL2", FALSE, L"PROP2", actualVariants + 1);
40 InitVersionValue(expectedVariants + 2, MAKEQWORDVERSION(1, 1, 0, 0), FALSE, L"PROP3", actualVariants + 2); 40 InitVersionValue(expectedVariants + 2, L"1.1.0.0", FALSE, L"PROP3", actualVariants + 2);
41 InitNoneValue(expectedVariants + 3, FALSE, L"PROP4", actualVariants + 3); 41 InitNoneValue(expectedVariants + 3, FALSE, L"PROP4", actualVariants + 3);
42 InitNoneValue(expectedVariants + 4, TRUE, L"PROP5", actualVariants + 4); 42 InitNoneValue(expectedVariants + 4, TRUE, L"PROP5", actualVariants + 4);
43 InitVersionValue(expectedVariants + 5, MAKEQWORDVERSION(1, 1, 1, 0), TRUE, L"PROP6", actualVariants + 5); 43 InitVersionValue(expectedVariants + 5, L"1.1.1.0", TRUE, L"PROP6", actualVariants + 5);
44 InitStringValue(expectedVariants + 6, L"7", TRUE, L"PROP7", actualVariants + 6); 44 InitStringValue(expectedVariants + 6, L"7", TRUE, L"PROP7", actualVariants + 6);
45 InitNumericValue(expectedVariants + 7, 11, TRUE, L"PROP8", actualVariants + 7); 45 InitNumericValue(expectedVariants + 7, 11, TRUE, L"PROP8", actualVariants + 7);
46 InitFormattedValue(expectedVariants + 8, L"VAL9", FALSE, L"PROP9", actualVariants + 8); 46 InitFormattedValue(expectedVariants + 8, L"VAL9", FALSE, L"PROP9", actualVariants + 8);
@@ -143,21 +143,34 @@ namespace Bootstrapper
143 } 143 }
144 } 144 }
145 145
146 void InitVersionValue(BURN_VARIANT* pValue, DWORD64 qwValue, BOOL fHidden, LPCWSTR wz, BURN_VARIANT* pActualValue) 146 void InitVersionValue(BURN_VARIANT* pValue, LPCWSTR wzValue, BOOL fHidden, LPCWSTR wz, BURN_VARIANT* pActualValue)
147 { 147 {
148 HRESULT hr = S_OK; 148 HRESULT hr = S_OK;
149 pValue->Type = BURN_VARIANT_TYPE_VERSION; 149 VERUTIL_VERSION* pVersion = NULL;
150 pValue->qwValue = qwValue;
151 150
152 hr = BVariantCopy(pValue, pActualValue); 151 try
153 NativeAssert::Succeeded(hr, "Failed to copy variant {0}", wz);
154
155 if (fHidden)
156 { 152 {
157 hr = BVariantSetEncryption(pActualValue, TRUE); 153 hr = VerParseVersion(wzValue, 0, FALSE, &pVersion);
158 NativeAssert::Succeeded(hr, "Failed to encrypt variant {0}", wz); 154 NativeAssert::Succeeded(hr, "Failed to parse version {0}", wzValue);
159 155
160 NativeAssert::True(pActualValue->fEncryptString); 156 pValue->Type = BURN_VARIANT_TYPE_VERSION;
157 pValue->pValue = pVersion;
158 pVersion = NULL;
159
160 hr = BVariantCopy(pValue, pActualValue);
161 NativeAssert::Succeeded(hr, "Failed to copy variant {0}", wz);
162
163 if (fHidden)
164 {
165 hr = BVariantSetEncryption(pActualValue, TRUE);
166 NativeAssert::Succeeded(hr, "Failed to encrypt variant {0}", wz);
167
168 NativeAssert::True(pActualValue->fEncryptString);
169 }
170 }
171 finally
172 {
173 ReleaseVerutilVersion(pVersion);
161 } 174 }
162 } 175 }
163 176
@@ -224,14 +237,21 @@ namespace Bootstrapper
224 void VerifyVersionValue(BURN_VARIANT* pExpectedValue, BURN_VARIANT* pActualValue) 237 void VerifyVersionValue(BURN_VARIANT* pExpectedValue, BURN_VARIANT* pActualValue)
225 { 238 {
226 HRESULT hr = S_OK; 239 HRESULT hr = S_OK;
227 DWORD64 qwValue = 0; 240 VERUTIL_VERSION* pValue = NULL;
228 NativeAssert::Equal<DWORD>(BURN_VARIANT_TYPE_VERSION, pExpectedValue->Type); 241 NativeAssert::Equal<DWORD>(BURN_VARIANT_TYPE_VERSION, pExpectedValue->Type);
229 NativeAssert::Equal<DWORD>(BURN_VARIANT_TYPE_VERSION, pActualValue->Type); 242 NativeAssert::Equal<DWORD>(BURN_VARIANT_TYPE_VERSION, pActualValue->Type);
230 243
231 hr = BVariantGetVersion(pActualValue, &qwValue); 244 try
232 NativeAssert::Succeeded(hr, "Failed to get version value"); 245 {
246 hr = BVariantGetVersion(pActualValue, &pValue);
247 NativeAssert::Succeeded(hr, "Failed to get version value");
233 248
234 NativeAssert::Equal<DWORD64>(pExpectedValue->qwValue, qwValue); 249 NativeAssert::StringEqual(pExpectedValue->pValue->sczVersion, pActualValue->pValue->sczVersion);
250 }
251 finally
252 {
253 ReleaseVerutilVersion(pValue);
254 }
235 } 255 }
236 }; 256 };
237} 257}
diff --git a/src/test/BurnUnitTest/packages.config b/src/test/BurnUnitTest/packages.config
index e537bcdb..74f2523f 100644
--- a/src/test/BurnUnitTest/packages.config
+++ b/src/test/BurnUnitTest/packages.config
@@ -9,5 +9,5 @@
9 <package id="xunit.runner.visualstudio" version="2.4.1" /> 9 <package id="xunit.runner.visualstudio" version="2.4.1" />
10 <package id="WixBuildTools.TestSupport" version="4.0.40" /> 10 <package id="WixBuildTools.TestSupport" version="4.0.40" />
11 <package id="WixBuildTools.TestSupport.Native" version="4.0.40" /> 11 <package id="WixBuildTools.TestSupport.Native" version="4.0.40" />
12 <package id="WixToolset.DUtil" version="4.0.49" targetFramework="native" /> 12 <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" />
13</packages> \ No newline at end of file 13</packages> \ No newline at end of file
diff --git a/src/test/BurnUnitTest/precomp.h b/src/test/BurnUnitTest/precomp.h
index e288eb3e..fea30156 100644
--- a/src/test/BurnUnitTest/precomp.h
+++ b/src/test/BurnUnitTest/precomp.h
@@ -13,6 +13,7 @@
13#include "wininet.h" 13#include "wininet.h"
14 14
15#include <dutil.h> 15#include <dutil.h>
16#include <verutil.h>
16#include <cryputil.h> 17#include <cryputil.h>
17#include <dlutil.h> 18#include <dlutil.h>
18#include <buffutil.h> 19#include <buffutil.h>