2008-05-09 17:35:45 +00:00
|
|
|
/*
|
|
|
|
* Unit test suite for version functions
|
|
|
|
*
|
|
|
|
* Copyright 2006 Robert Shearman
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
2012-12-09 20:39:13 +00:00
|
|
|
/* Needed for PRODUCT_* defines and GetProductInfo() */
|
|
|
|
#define _WIN32_WINNT 0x0600
|
|
|
|
|
2008-05-09 17:35:45 +00:00
|
|
|
#include "wine/test.h"
|
|
|
|
#include "winbase.h"
|
2015-03-09 17:15:16 +00:00
|
|
|
#include "winternl.h"
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2012-12-09 20:39:13 +00:00
|
|
|
static BOOL (WINAPI * pGetProductInfo)(DWORD, DWORD, DWORD, DWORD, DWORD *);
|
2008-05-09 17:35:45 +00:00
|
|
|
static BOOL (WINAPI * pVerifyVersionInfoA)(LPOSVERSIONINFOEXA, DWORD, DWORDLONG);
|
|
|
|
static ULONGLONG (WINAPI * pVerSetConditionMask)(ULONGLONG, DWORD, BYTE);
|
2015-03-09 17:15:16 +00:00
|
|
|
static NTSTATUS (WINAPI * pRtlGetVersion)(RTL_OSVERSIONINFOEXW *);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2015-03-09 17:15:16 +00:00
|
|
|
#define GET_PROC(func) \
|
|
|
|
p##func = (void *)GetProcAddress(hmod, #func);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
static void init_function_pointers(void)
|
|
|
|
{
|
2015-03-09 17:15:16 +00:00
|
|
|
HMODULE hmod;
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2015-03-09 17:15:16 +00:00
|
|
|
hmod = GetModuleHandleA("kernel32.dll");
|
2012-12-09 20:39:13 +00:00
|
|
|
|
2015-03-09 17:15:16 +00:00
|
|
|
GET_PROC(GetProductInfo);
|
|
|
|
GET_PROC(VerifyVersionInfoA);
|
|
|
|
GET_PROC(VerSetConditionMask);
|
|
|
|
|
|
|
|
hmod = GetModuleHandleA("ntdll.dll");
|
|
|
|
|
|
|
|
GET_PROC(RtlGetVersion);
|
2008-05-09 17:35:45 +00:00
|
|
|
}
|
|
|
|
|
2012-12-09 20:39:13 +00:00
|
|
|
static void test_GetProductInfo(void)
|
|
|
|
{
|
|
|
|
DWORD product;
|
|
|
|
DWORD res;
|
|
|
|
DWORD table[] = {9,8,7,6,
|
|
|
|
7,0,0,0,
|
|
|
|
6,2,0,0,
|
|
|
|
6,1,2,0,
|
|
|
|
6,1,1,0,
|
|
|
|
6,1,0,2,
|
|
|
|
6,1,0,0,
|
|
|
|
6,0,3,0,
|
|
|
|
6,0,2,0,
|
|
|
|
6,0,1,5,
|
|
|
|
6,0,1,0,
|
|
|
|
6,0,0,0,
|
|
|
|
5,3,0,0,
|
|
|
|
5,2,0,0,
|
|
|
|
5,1,0,0,
|
|
|
|
5,0,0,0,
|
|
|
|
0};
|
|
|
|
|
|
|
|
DWORD *entry = table;
|
|
|
|
|
|
|
|
if (!pGetProductInfo)
|
|
|
|
{
|
|
|
|
/* Not present before Vista */
|
|
|
|
win_skip("GetProductInfo() not available\n");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
while (*entry)
|
|
|
|
{
|
|
|
|
/* SetLastError() / GetLastError(): value is untouched */
|
|
|
|
product = 0xdeadbeef;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
res = pGetProductInfo(entry[0], entry[1], entry[2], entry[3], &product);
|
|
|
|
|
|
|
|
if (entry[0] >= 6)
|
|
|
|
ok(res && (product > PRODUCT_UNDEFINED) && (product <= PRODUCT_PROFESSIONAL_WMC),
|
|
|
|
"got %d and 0x%x (expected TRUE and a valid PRODUCT_* value)\n", res, product);
|
|
|
|
else
|
|
|
|
ok(!res && !product && (GetLastError() == 0xdeadbeef),
|
|
|
|
"got %d and 0x%x with 0x%x (expected FALSE and PRODUCT_UNDEFINED with LastError untouched)\n",
|
|
|
|
res, product, GetLastError());
|
|
|
|
|
|
|
|
entry+= 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* NULL pointer is not a problem */
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
res = pGetProductInfo(6, 1, 0, 0, NULL);
|
|
|
|
ok( (!res) && (GetLastError() == 0xdeadbeef),
|
|
|
|
"got %d with 0x%x (expected FALSE with LastError untouched\n", res, GetLastError());
|
|
|
|
}
|
|
|
|
|
2008-05-09 17:35:45 +00:00
|
|
|
static void test_GetVersionEx(void)
|
|
|
|
{
|
|
|
|
OSVERSIONINFOA infoA;
|
|
|
|
OSVERSIONINFOEXA infoExA;
|
|
|
|
BOOL ret;
|
|
|
|
|
|
|
|
if (0)
|
|
|
|
{
|
|
|
|
/* Silently crashes on XP */
|
2011-10-03 17:58:01 +00:00
|
|
|
GetVersionExA(NULL);
|
2008-05-09 17:35:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
memset(&infoA,0,sizeof infoA);
|
|
|
|
ret = GetVersionExA(&infoA);
|
|
|
|
ok(!ret, "Expected GetVersionExA to fail\n");
|
|
|
|
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER ||
|
|
|
|
GetLastError() == 0xdeadbeef /* Win9x */,
|
|
|
|
"Expected ERROR_INSUFFICIENT_BUFFER or 0xdeadbeef (Win9x), got %d\n",
|
|
|
|
GetLastError());
|
|
|
|
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
infoA.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA) / 2;
|
|
|
|
ret = GetVersionExA(&infoA);
|
|
|
|
ok(!ret, "Expected GetVersionExA to fail\n");
|
|
|
|
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER ||
|
|
|
|
GetLastError() == 0xdeadbeef /* Win9x */,
|
|
|
|
"Expected ERROR_INSUFFICIENT_BUFFER or 0xdeadbeef (Win9x), got %d\n",
|
|
|
|
GetLastError());
|
|
|
|
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
infoA.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA) * 2;
|
|
|
|
ret = GetVersionExA(&infoA);
|
|
|
|
ok(!ret, "Expected GetVersionExA to fail\n");
|
|
|
|
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER ||
|
|
|
|
GetLastError() == 0xdeadbeef /* Win9x */,
|
|
|
|
"Expected ERROR_INSUFFICIENT_BUFFER or 0xdeadbeef (Win9x), got %d\n",
|
|
|
|
GetLastError());
|
|
|
|
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
infoA.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
|
|
|
|
ret = GetVersionExA(&infoA);
|
|
|
|
ok(ret, "Expected GetVersionExA to succeed\n");
|
|
|
|
ok(GetLastError() == 0xdeadbeef,
|
|
|
|
"Expected 0xdeadbeef, got %d\n", GetLastError());
|
|
|
|
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
infoExA.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
ret = GetVersionExA((OSVERSIONINFOA *)&infoExA);
|
2008-12-23 20:02:47 +00:00
|
|
|
ok(ret ||
|
|
|
|
broken(ret == 0), /* win95 */
|
|
|
|
"Expected GetVersionExA to succeed\n");
|
2008-05-09 17:35:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void test_VerifyVersionInfo(void)
|
|
|
|
{
|
2014-04-18 22:50:27 +00:00
|
|
|
OSVERSIONINFOEXA info;
|
2008-05-09 17:35:45 +00:00
|
|
|
BOOL ret;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
DWORD servicepack, error;
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
if(!pVerifyVersionInfoA || !pVerSetConditionMask)
|
|
|
|
{
|
2009-05-17 07:05:22 +00:00
|
|
|
win_skip("Needed functions not available\n");
|
2008-05-09 17:35:45 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 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.
|
|
|
|
*/
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
servicepack = info.wServicePackMajor;
|
2015-03-09 17:15:16 +00:00
|
|
|
|
|
|
|
/* 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");
|
|
|
|
|
|
|
|
if (rtlinfo.dwMajorVersion != 6 || rtlinfo.dwMinorVersion != 2)
|
|
|
|
{
|
|
|
|
win_skip("GetVersionEx and VerifyVersionInfo are faking values\n");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-05-09 17:35:45 +00:00
|
|
|
memset(&info, 0, sizeof(info));
|
|
|
|
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION,
|
|
|
|
pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
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));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
/* tests special handling of VER_SUITENAME */
|
|
|
|
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_SUITENAME,
|
|
|
|
pVerSetConditionMask(0, VER_SUITENAME, VER_AND));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_SUITENAME,
|
|
|
|
pVerSetConditionMask(0, VER_SUITENAME, VER_OR));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
/* test handling of version numbers */
|
|
|
|
|
|
|
|
/* v3.10 is always less than v4.x even
|
|
|
|
* if the minor version is tested */
|
|
|
|
info.dwMajorVersion = 3;
|
|
|
|
info.dwMinorVersion = 10;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MAJORVERSION, VER_GREATER_EQUAL));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwMinorVersion = 0;
|
|
|
|
info.wServicePackMajor = 10;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MAJORVERSION, VER_GREATER_EQUAL));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.wServicePackMajor = 0;
|
|
|
|
info.wServicePackMinor = 10;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MAJORVERSION, VER_GREATER_EQUAL));
|
2011-10-03 17:58:01 +00:00
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMinor++;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
if (servicepack == 0)
|
|
|
|
{
|
|
|
|
skip("There is no ServicePack on this system\n");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
}
|
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_LESS));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_LESS_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor--;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
/* test the failure hierarchy for the four version fields */
|
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.wServicePackMajor++;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.dwMinorVersion++;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.dwMajorVersion++;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.dwBuildNumber++;
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
SetLastError(0xdeadbeef);
|
2008-05-09 17:35:45 +00:00
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
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);
|
2008-05-09 17:35:45 +00:00
|
|
|
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
|
2015-03-09 17:15:16 +00:00
|
|
|
/* systematically test behaviour of condition mask (tests sorted by condition mask value) */
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.dwMinorVersion++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_MINORVERSION, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.dwMinorVersion++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_LESS));
|
|
|
|
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);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_AND));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.dwMinorVersion++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_LESS_EQUAL), VER_MINORVERSION, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.dwMinorVersion++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_AND), VER_MINORVERSION, VER_LESS));
|
|
|
|
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_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_OR), VER_MINORVERSION, VER_LESS));
|
|
|
|
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.wServicePackMinor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
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.wServicePackMinor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
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.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, 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);
|
|
|
|
|
|
|
|
if (servicepack)
|
|
|
|
{
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.dwMajorVersion++;
|
|
|
|
info.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_LESS), VER_SERVICEPACKMAJOR, VER_EQUAL));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
}
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMinor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMinor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
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.wServicePackMinor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL),
|
|
|
|
VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMinor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL),
|
|
|
|
VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
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.wServicePackMinor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMinor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_EQUAL), VER_SERVICEPACKMINOR, VER_LESS));
|
|
|
|
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);
|
|
|
|
|
|
|
|
if (servicepack)
|
|
|
|
{
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor--;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER));
|
|
|
|
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.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_LESS_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_AND), VER_SERVICEPACKMAJOR, VER_GREATER));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
}
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_LESS_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
if (servicepack)
|
|
|
|
{
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor--;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_SERVICEPACKMAJOR, VER_GREATER), VER_SERVICEPACKMINOR, 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);
|
|
|
|
}
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
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.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
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.wServicePackMajor++;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
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--;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
|
|
|
info.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
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.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS));
|
|
|
|
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.wServicePackMajor++;
|
|
|
|
SetLastError(0xdeadbeef);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|
|
|
VER_MINORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_LESS_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);
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_AND));
|
|
|
|
ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
|
|
|
|
2008-05-09 17:35:45 +00:00
|
|
|
/* test bad dwOSVersionInfoSize */
|
2014-04-18 22:50:27 +00:00
|
|
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
|
GetVersionExA((OSVERSIONINFOA *)&info);
|
2008-05-09 17:35:45 +00:00
|
|
|
info.dwOSVersionInfoSize = 0;
|
|
|
|
ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
|
|
|
|
pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
|
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
|
|
|
ok(ret || broken(!ret) /* some win2k */, "VerifyVersionInfoA failed with error %d\n", GetLastError());
|
2008-05-09 17:35:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
START_TEST(version)
|
|
|
|
{
|
|
|
|
init_function_pointers();
|
|
|
|
|
2012-12-09 20:39:13 +00:00
|
|
|
test_GetProductInfo();
|
2008-05-09 17:35:45 +00:00
|
|
|
test_GetVersionEx();
|
|
|
|
test_VerifyVersionInfo();
|
|
|
|
}
|