kernel32/tests: Add more tests for VerifyVersionInfo().
New tests cases by Sebastian Lackner. Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
32617e814a
commit
60a5ee6560
|
@ -163,15 +163,445 @@ static void test_GetVersionEx(void)
|
|||
|
||||
static void test_VerifyVersionInfo(void)
|
||||
{
|
||||
OSVERSIONINFOEXA info;
|
||||
BOOL ret;
|
||||
DWORD servicepack, error;
|
||||
|
||||
if(!pVerifyVersionInfoA || !pVerSetConditionMask)
|
||||
enum srcversion_mode
|
||||
{
|
||||
win_skip("Needed functions not available\n");
|
||||
return;
|
||||
}
|
||||
SRCVERSION_ZERO = 0,
|
||||
SRCVERSION_CURRENT = 1,
|
||||
SRCVERSION_INC_MINOR = 2,
|
||||
SRCVERSION_INC_SP_MINOR = 3,
|
||||
SRCVERSION_INC_SP_MAJOR = 4,
|
||||
SRCVERSION_DEC_SP_MAJOR = 5,
|
||||
SRCVERSION_DEC_MAJOR = 6,
|
||||
SRCVERSION_INC_BUILD = 7,
|
||||
SRCVERSION_REQUIRES_SP = 0x1000,
|
||||
};
|
||||
|
||||
struct verify_version_test
|
||||
{
|
||||
DWORD verifymask; /* Type mask for VerifyVersionInfo() */
|
||||
DWORD srcinfo; /* The way current version info is modified. */
|
||||
DWORD err; /* Error code on failure, 0 on success. */
|
||||
|
||||
DWORD typemask1;
|
||||
DWORD condition1;
|
||||
DWORD typemask2;
|
||||
DWORD condition2;
|
||||
DWORD typemask3;
|
||||
DWORD condition3;
|
||||
DWORD typemask4;
|
||||
DWORD condition4;
|
||||
|
||||
BOOL todo;
|
||||
} verify_version_tests[] =
|
||||
{
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
0, 0,
|
||||
0, 0,
|
||||
TRUE,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_CURRENT,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_CURRENT,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_AND,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_LESS_EQUAL,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_AND,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_OR,
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
0,
|
||||
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
0, 0,
|
||||
0, 0,
|
||||
TRUE,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
0, 0,
|
||||
TRUE,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
TRUE,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_EQUAL,
|
||||
VER_SERVICEPACKMINOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_LESS_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
0, 0,
|
||||
0, 0,
|
||||
TRUE,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
0, 0,
|
||||
TRUE
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_CURRENT,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_LESS_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_AND,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION,
|
||||
SRCVERSION_ZERO,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER,
|
||||
SRCVERSION_ZERO,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_SUITENAME,
|
||||
SRCVERSION_ZERO,
|
||||
0,
|
||||
|
||||
VER_SUITENAME, VER_AND,
|
||||
},
|
||||
{
|
||||
VER_SUITENAME,
|
||||
SRCVERSION_ZERO,
|
||||
0,
|
||||
|
||||
VER_SUITENAME, VER_OR,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_LESS,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_LESS_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_SP_MAJOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_MINOR,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_CURRENT,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_BUILD,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_INC_BUILD,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
0,
|
||||
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_MAJORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_LESS_EQUAL,
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
0,
|
||||
|
||||
VER_MAJORVERSION, VER_GREATER_EQUAL,
|
||||
VER_MINORVERSION, VER_AND,
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
},
|
||||
{
|
||||
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
SRCVERSION_DEC_SP_MAJOR | SRCVERSION_REQUIRES_SP,
|
||||
ERROR_OLD_WIN_VERSION,
|
||||
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER,
|
||||
VER_SERVICEPACKMINOR, VER_EQUAL,
|
||||
},
|
||||
};
|
||||
|
||||
OSVERSIONINFOEXA info;
|
||||
DWORD servicepack;
|
||||
unsigned int i;
|
||||
BOOL ret;
|
||||
|
||||
/* Before we start doing some tests we should check what the version of
|
||||
* the ServicePack is. Tests on a box with no ServicePack will fail otherwise.
|
||||
|
@ -179,13 +609,15 @@ static void test_VerifyVersionInfo(void)
|
|||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
servicepack = info.wServicePackMajor;
|
||||
if (servicepack == 0)
|
||||
skip("There is no ServicePack on this system. Some tests will be skipped.\n");
|
||||
|
||||
/* Win8.1+ returns Win8 version in GetVersionEx when there's no app manifest targeting 8.1 */
|
||||
if (info.dwMajorVersion == 6 && info.dwMinorVersion == 2)
|
||||
{
|
||||
RTL_OSVERSIONINFOEXW rtlinfo;
|
||||
rtlinfo.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW);
|
||||
ok(SUCCEEDED(pRtlGetVersion(&rtlinfo)), "RtlGetVersion failed\n");
|
||||
ok(!pRtlGetVersion(&rtlinfo), "RtlGetVersion failed\n");
|
||||
|
||||
if (rtlinfo.dwMajorVersion != 6 || rtlinfo.dwMinorVersion != 2)
|
||||
{
|
||||
|
@ -194,34 +626,65 @@ static void test_VerifyVersionInfo(void)
|
|||
}
|
||||
}
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
for (i = 0; i < sizeof(verify_version_tests)/sizeof(verify_version_tests[0]); i++)
|
||||
{
|
||||
struct verify_version_test *test = &verify_version_tests[i];
|
||||
DWORD srcinfo = test->srcinfo;
|
||||
ULONGLONG mask;
|
||||
|
||||
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION,
|
||||
pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
if (servicepack == 0 && srcinfo & SRCVERSION_REQUIRES_SP)
|
||||
continue;
|
||||
srcinfo &= ~SRCVERSION_REQUIRES_SP;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_BUILDNUMBER | VER_MAJORVERSION |
|
||||
VER_MINORVERSION/* | VER_PLATFORMID | VER_SERVICEPACKMAJOR |
|
||||
VER_SERVICEPACKMINOR | VER_SUITENAME | VER_PRODUCT_TYPE */,
|
||||
pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
info.dwOSVersionInfoSize = sizeof(info);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
|
||||
/* tests special handling of VER_SUITENAME */
|
||||
switch (srcinfo)
|
||||
{
|
||||
case SRCVERSION_ZERO:
|
||||
memset(&info, 0, sizeof(info));
|
||||
break;
|
||||
case SRCVERSION_INC_MINOR:
|
||||
info.dwMinorVersion++;
|
||||
break;
|
||||
case SRCVERSION_INC_SP_MINOR:
|
||||
info.wServicePackMinor++;
|
||||
break;
|
||||
case SRCVERSION_INC_SP_MAJOR:
|
||||
info.wServicePackMajor++;
|
||||
break;
|
||||
case SRCVERSION_DEC_SP_MAJOR:
|
||||
info.wServicePackMajor--;
|
||||
break;
|
||||
case SRCVERSION_DEC_MAJOR:
|
||||
info.dwMajorVersion--;
|
||||
break;
|
||||
case SRCVERSION_INC_BUILD:
|
||||
info.dwBuildNumber++;
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
||||
ret = pVerifyVersionInfoA(&info, VER_SUITENAME,
|
||||
pVerSetConditionMask(0, VER_SUITENAME, VER_AND));
|
||||
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
mask = VerSetConditionMask(0, test->typemask1, test->condition1);
|
||||
if (test->typemask2)
|
||||
mask = VerSetConditionMask(mask, test->typemask2, test->condition2);
|
||||
if (test->typemask3)
|
||||
mask = VerSetConditionMask(mask, test->typemask3, test->condition3);
|
||||
if (test->typemask4)
|
||||
mask = VerSetConditionMask(mask, test->typemask4, test->condition4);
|
||||
|
||||
ret = pVerifyVersionInfoA(&info, VER_SUITENAME,
|
||||
pVerSetConditionMask(0, VER_SUITENAME, VER_OR));
|
||||
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = VerifyVersionInfoA(&info, test->verifymask, mask);
|
||||
todo_wine_if(test->todo)
|
||||
{
|
||||
ok(test->err ? !ret : ret, "%u: unexpected return value %d.\n", i, ret);
|
||||
if (!ret)
|
||||
ok(GetLastError() == test->err, "%u: unexpected error code %d, expected %d.\n", i, GetLastError(), test->err);
|
||||
}
|
||||
}
|
||||
|
||||
/* test handling of version numbers */
|
||||
|
||||
/* v3.10 is always less than v4.x even
|
||||
* if the minor version is tested */
|
||||
info.dwMajorVersion = 3;
|
||||
|
@ -245,124 +708,13 @@ static void test_VerifyVersionInfo(void)
|
|||
VER_MAJORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMinor++;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some wink2 */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
if (servicepack == 0)
|
||||
{
|
||||
skip("There is no ServicePack on this system\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor--;
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor--;
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
}
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor++;
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_LESS));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor++;
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_LESS_EQUAL));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor--;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some win2k */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
/* test the failure hierarchy for the four version fields */
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.wServicePackMajor++;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some win2k */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.dwMinorVersion++;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some win2k */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.dwMajorVersion++;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some win2k */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.dwBuildNumber++;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
error = GetLastError();
|
||||
ok(!ret, "VerifyVersionInfoA succeeded\n");
|
||||
ok(error == ERROR_OLD_WIN_VERSION || broken(error == ERROR_BAD_ARGUMENTS) /* some win2k */,
|
||||
"VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", error);
|
||||
|
||||
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
|
||||
/* test bad dwOSVersionInfoSize */
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
GetVersionExA((OSVERSIONINFOA *)&info);
|
||||
info.dwOSVersionInfoSize = 0;
|
||||
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
||||
pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
|
||||
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
||||
}
|
||||
|
||||
START_TEST(version)
|
||||
|
|
Loading…
Reference in New Issue