[FUSION_WINETEST]

* Sync with Wine 1.5.26.

svn path=/trunk/; revision=58928
This commit is contained in:
Amine Khaldi 2013-05-04 20:21:53 +00:00
parent 5ffb258f8a
commit 074fd31218
6 changed files with 207 additions and 47 deletions

View file

@ -1,7 +1,5 @@
add_definitions(
-D__ROS_LONG64__
-D_DLL -D__USE_CRTIMP)
add_definitions(-D__ROS_LONG64__)
list(APPEND SOURCE
asmcache.c

View file

@ -16,17 +16,25 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define COBJMACROS
#define INITGUID
#include <stdio.h>
#include <windows.h>
#include <mscoree.h>
//#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <winver.h>
#include <objbase.h>
//#include <mscoree.h>
#include <fusion.h>
#include <corerror.h>
#include "wine/test.h"
#include <wine/test.h>
typedef struct _tagASSEMBLY ASSEMBLY;
@ -1011,6 +1019,18 @@ static void test_QueryAssemblyInfo(void)
'_','M','S','I','L','\\','w','i','n','e','\\',
'1','.','0','.','0','.','0','_','_','2','d','0','3','6','1','7','b',
'1','c','3','1','e','2','f','5','\\',0};
static const WCHAR wine2[] = {
'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','0','.','0','.','1',',',
'p','u','b','l','i','c','K','e','y','T','o','k','e','n','=',
'2','d','0','3','6','1','7','b','1','c','3','1','e','2','f','5',',',
'c','u','l','t','u','r','e','=','n','e','u','t','r','a','l',0};
static const WCHAR nullpublickey[] = {
'm','s','c','o','r','l','i','b','.','d','l','l',',','v','e','r','s','i','o','n','=','0','.','0','.',
'0','.','0',',','c','u','l','t','u','r','e','=','n','e','u','t','r','a','l',',',
'p','u','b','l','i','c','K','e','y','T','o','k','e','n','=','n','u','l','l',0};
static const WCHAR nullpublickey1[] = {
'm','s','c','o','r','l','i','b','.','d','l','l',',',
'p','u','b','l','i','c','K','e','y','T','o','k','e','n','=','n','u','L','l',0};
size = MAX_PATH;
hr = pGetCachePath(ASM_CACHE_GAC, asmpath, &size);
@ -1363,6 +1383,36 @@ static void test_QueryAssemblyInfo(void)
"Assembly path was changed\n");
ok(info.cchBuf == MAX_PATH, "Expected MAX_PATH, got %d\n", info.cchBuf);
/* display name is "wine,version=1.0.0.1,publicKeyToken=2d03617b1c31e2f5,culture=neutral" */
INIT_ASM_INFO();
lstrcpyW(name, wine2);
hr = IAssemblyCache_QueryAssemblyInfo(cache, QUERYASMINFO_FLAG_GETSIZE,
name, &info);
ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
"Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n", hr);
ok(info.cbAssemblyInfo == sizeof(ASSEMBLY_INFO),
"Expected sizeof(ASSEMBLY_INFO), got %d\n", info.cbAssemblyInfo);
ok(info.dwAssemblyFlags == 0, "Expected 0, got %08x\n", info.dwAssemblyFlags);
ok(info.uliAssemblySizeInKB.u.HighPart == 0,
"Expected 0, got %d\n", info.uliAssemblySizeInKB.u.HighPart);
ok(info.uliAssemblySizeInKB.u.LowPart == 0,
"Expected 0, got %d\n", info.uliAssemblySizeInKB.u.LowPart);
ok(!lstrcmpW(info.pszCurrentAssemblyPathBuf, empty),
"Assembly path was changed\n");
ok(info.cchBuf == MAX_PATH, "Expected MAX_PATH, got %d\n", info.cchBuf);
/* display name is "mscorlib.dll,version=0.0.0.0,culture=neutral,publicKeyToken=null" */
INIT_ASM_INFO();
lstrcpyW(name, nullpublickey);
hr = IAssemblyCache_QueryAssemblyInfo(cache, 0, name, &info);
ok(hr == FUSION_E_PRIVATE_ASM_DISALLOWED, "got %08x\n", hr);
/* display name is "mscorlib.dll,publicKeyToken=nuLl" */
INIT_ASM_INFO();
lstrcpyW(name, nullpublickey1);
hr = IAssemblyCache_QueryAssemblyInfo(cache, 0, name, &info);
ok(hr == FUSION_E_PRIVATE_ASM_DISALLOWED, "got %08x\n", hr);
/* display name is "wine, Culture=neutral" */
INIT_ASM_INFO();
lstrcpyW(name, wine);
@ -1394,24 +1444,18 @@ static void test_QueryAssemblyInfo(void)
lstrcatW(name, badculture);
hr = IAssemblyCache_QueryAssemblyInfo(cache, QUERYASMINFO_FLAG_GETSIZE,
name, &info);
todo_wine
{
ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
"Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n", hr);
ok(info.dwAssemblyFlags == 0, "Expected 0, got %08x\n", info.dwAssemblyFlags);
}
ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
"Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n", hr);
ok(info.dwAssemblyFlags == 0, "Expected 0, got %08x\n", info.dwAssemblyFlags);
ok(info.cbAssemblyInfo == sizeof(ASSEMBLY_INFO),
"Expected sizeof(ASSEMBLY_INFO), got %d\n", info.cbAssemblyInfo);
ok(info.uliAssemblySizeInKB.u.HighPart == 0,
"Expected 0, got %d\n", info.uliAssemblySizeInKB.u.HighPart);
ok(info.uliAssemblySizeInKB.u.LowPart == 0,
"Expected 0, got %d\n", info.uliAssemblySizeInKB.u.LowPart);
todo_wine
{
ok(!lstrcmpW(info.pszCurrentAssemblyPathBuf, empty),
"Assembly path was changed\n");
ok(info.cchBuf == MAX_PATH, "Expected MAX_PATH, got %d\n", info.cchBuf);
}
ok(!lstrcmpW(info.pszCurrentAssemblyPathBuf, empty),
"Assembly path was changed\n");
ok(info.cchBuf == MAX_PATH, "Expected MAX_PATH, got %d\n", info.cchBuf);
/* display name is "wine, PublicKeyTokens=2d03617b1c31e2f5" */
INIT_ASM_INFO();

View file

@ -16,18 +16,26 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define COBJMACROS
#include <stdio.h>
#include <windows.h>
//#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <winnls.h>
#include <shlwapi.h>
#include <mscoree.h>
//#include <mscoree.h>
#include <fusion.h>
#include <corerror.h>
//#include <corerror.h>
#include "wine/test.h"
#include "wine/list.h"
#include <wine/test.h>
#include <wine/list.h>
static HRESULT (WINAPI *pCreateAssemblyEnum)(IAssemblyEnum **pEnum,
IUnknown *pUnkReserved,

View file

@ -16,16 +16,25 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define COBJMACROS
#include <stdio.h>
//#include <stdio.h>
#include <stdarg.h>
#include <windows.h>
#include <mscoree.h>
//#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
#include <objbase.h>
//#include <mscoree.h>
#include <fusion.h>
#include <corerror.h>
#include "wine/test.h"
#include <wine/test.h>
/* ok-like statement which takes two unicode strings or one unicode and one ANSI string as arguments */
static CHAR string1[MAX_PATH];
@ -891,6 +900,107 @@ static void test_CreateAssemblyNameObject(void)
ok(hr == FUSION_E_INVALID_NAME,
"Expected FUSION_E_INVALID_NAME, got %08x\n", hr);
ok(name == (IAssemblyName *)0xdeadbeef, "Expected 0xdeadbeef, got %p\n", name);
/* no spaces */
to_widechar(namestr, "wine,version=1.0.0.0");
name = (IAssemblyName *)0xdeadbeef;
hr = pCreateAssemblyNameObject(&name, namestr, CANOF_PARSE_DISPLAY_NAME, NULL);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(name != NULL, "Expected non-NULL name\n");
hi = lo = 0xdeadbeef;
hr = IAssemblyName_GetVersion(name, &hi, &lo);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(hi == 65536, "Expected 536, got %u\n", hi);
ok(lo == 0, "Expected 0, got %u\n", lo);
IAssemblyName_Release(name);
/* quoted values */
to_widechar(namestr, "wine, version=\"1.0.0.0\",culture=\"en\"");
name = (IAssemblyName *)0xdeadbeef;
hr = pCreateAssemblyNameObject(&name, namestr, CANOF_PARSE_DISPLAY_NAME, NULL);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(name != NULL, "Expected non-NULL name\n");
hi = lo = 0xdeadbeef;
hr = IAssemblyName_GetVersion(name, &hi, &lo);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(hi == 65536, "Expected 65536, got %u\n", hi);
ok(lo == 0, "Expected 0, got %u\n", lo);
IAssemblyName_Release(name);
}
static void test_IAssemblyName_IsEqual(void)
{
static const WCHAR wine1[] =
{'w','i','n','e',0};
static const WCHAR wine2[] =
{'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','0','.','0','.','0',0};
static const WCHAR wine3[] =
{'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','0','.','0','.','0',',',
'c','u','l','t','u','r','e','=','n','e','u','t','r','a','l',0};
static const WCHAR wine4[] =
{'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','0','.','0','.','0',',',
'c','u','l','t','u','r','e','=','e','n',0};
static const WCHAR wine5[] =
{'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','0','.','0','.','0',',',
'p','u','b','l','i','c','K','e','y','T','o','k','e','n','=','1','2','3','4','5','6',
'7','8','9','0','a','b','c','d','e','f',0};
HRESULT hr;
IAssemblyName *name1, *name2;
hr = pCreateAssemblyNameObject( &name1, wine1, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
hr = pCreateAssemblyNameObject( &name2, wine1, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
if (0) { /* crashes on some old version */
hr = IAssemblyName_IsEqual( name1, NULL, 0 );
ok( hr == S_FALSE, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, NULL, ASM_CMPF_IL_ALL );
ok( hr == S_FALSE, "got %08x\n", hr );
}
hr = IAssemblyName_IsEqual( name1, name1, ASM_CMPF_IL_ALL );
ok( hr == S_OK, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, name2, ASM_CMPF_IL_ALL );
ok( hr == S_OK, "got %08x\n", hr );
IAssemblyName_Release( name2 );
hr = pCreateAssemblyNameObject( &name2, wine2, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, name2, ASM_CMPF_IL_ALL );
ok( hr == S_OK, "got %08x\n", hr );
IAssemblyName_Release( name2 );
hr = pCreateAssemblyNameObject( &name2, wine3, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, name2, ASM_CMPF_IL_ALL );
ok( hr == S_OK, "got %08x\n", hr );
IAssemblyName_Release( name1 );
hr = pCreateAssemblyNameObject( &name1, wine4, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, name2, ASM_CMPF_IL_ALL );
ok( hr == S_FALSE, "got %08x\n", hr );
IAssemblyName_Release( name1 );
hr = pCreateAssemblyNameObject( &name1, wine1, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
IAssemblyName_Release( name2 );
hr = pCreateAssemblyNameObject( &name2, wine5, CANOF_PARSE_DISPLAY_NAME, NULL );
ok( hr == S_OK, "got %08x\n", hr );
hr = IAssemblyName_IsEqual( name1, name2, ASM_CMPF_IL_ALL );
ok( hr == S_OK, "got %08x\n", hr );
IAssemblyName_Release( name1 );
IAssemblyName_Release( name2 );
}
START_TEST(asmname)
@ -902,4 +1012,5 @@ START_TEST(asmname)
}
test_CreateAssemblyNameObject();
test_IAssemblyName_IsEqual();
}

View file

@ -16,10 +16,20 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <windows.h>
#include <stdarg.h>
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
//#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
#include <objbase.h>
#include <fusion.h>
#include "wine/test.h"
#include <wine/test.h>
static HMODULE hmscoree;
@ -30,14 +40,6 @@ static HRESULT (WINAPI *pLoadLibraryShim)(LPCWSTR szDllName, LPCWSTR szVersion,
static HRESULT (WINAPI *pGetCORVersion)(LPWSTR pbuffer, DWORD cchBuffer,
DWORD *dwLength);
static CHAR string1[MAX_PATH], string2[MAX_PATH];
#define ok_w2(format, szString1, szString2) \
\
WideCharToMultiByte(CP_ACP, 0, szString1, -1, string1, MAX_PATH, NULL, NULL); \
WideCharToMultiByte(CP_ACP, 0, szString2, -1, string2, MAX_PATH, NULL, NULL); \
ok(!lstrcmpA(string1, string2), format, string1, string2)
static BOOL init_functionpointers(void)
{
HRESULT hr;
@ -127,14 +129,14 @@ static void test_GetCachePath(void)
lstrcpyW(path, nochange);
hr = pGetCachePath(ASM_CACHE_GAC, path, NULL);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr);
ok_w2("Expected \"%s\", got \"%s\"\n", nochange, path);
ok( !lstrcmpW( nochange, path ), "Expected %s, got %s\n", wine_dbgstr_w(nochange), wine_dbgstr_w(path));
/* get the cache path */
lstrcpyW(path, nochange);
size = MAX_PATH;
hr = pGetCachePath(ASM_CACHE_GAC, path, &size);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok_w2("Expected \"%s\", got \"%s\"\n", cachepath, path);
ok( !lstrcmpW( cachepath, path ), "Expected %s, got %s\n", wine_dbgstr_w(cachepath), wine_dbgstr_w(path));
/* pcchPath has no room for NULL terminator */
lstrcpyW(path, nochange);
@ -142,7 +144,7 @@ static void test_GetCachePath(void)
hr = pGetCachePath(ASM_CACHE_GAC, path, &size);
ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER),
"Expected HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), got %08x\n", hr);
ok_w2("Expected \"%s\", got \"%s\"\n", nochange, path);
ok( !lstrcmpW( nochange, path ), "Expected %s, got %s\n", wine_dbgstr_w(nochange), wine_dbgstr_w(path));
lstrcpyW(cachepath, windir);
lstrcatW(cachepath, backslash);
@ -156,7 +158,7 @@ static void test_GetCachePath(void)
broken(hr == E_INVALIDARG), /* .NET 1.1 */
"Expected S_OK, got %08x\n", hr);
if (hr == S_OK)
ok_w2("Expected \"%s\", got \"%s\"\n", cachepath, path);
ok( !lstrcmpW( cachepath, path ), "Expected %s, got %s\n", wine_dbgstr_w(cachepath), wine_dbgstr_w(path));
if (pGetCORVersion)
{
@ -191,7 +193,7 @@ static void test_GetCachePath(void)
size = MAX_PATH;
hr = pGetCachePath(ASM_CACHE_ZAP, path, &size);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok_w2("Expected \"%s\", got \"%s\"\n", cachepath, path);
ok( !lstrcmpW( cachepath, path ), "Expected %s, got %s\n", wine_dbgstr_w(cachepath), wine_dbgstr_w(path));
}
/* two flags at once */
@ -199,7 +201,7 @@ static void test_GetCachePath(void)
size = MAX_PATH;
hr = pGetCachePath(ASM_CACHE_GAC | ASM_CACHE_ROOT, path, &size);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr);
ok_w2("Expected \"%s\", got \"%s\"\n", nochange, path);
ok( !lstrcmpW( nochange, path ), "Expected %s, got %s\n", wine_dbgstr_w(nochange), wine_dbgstr_w(path));
}
START_TEST(fusion)

View file

@ -1,10 +1,7 @@
/* Automatically generated file; DO NOT EDIT!! */
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#define STANDALONE
#include "wine/test.h"
#include <wine/test.h>
extern void func_fusion(void);
extern void func_asmname(void);