Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9253ef39
Commit
9253ef39
authored
Sep 20, 2021
by
Nikolay Sivov
Committed by
Alexandre Julliard
Sep 20, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32/tests: Get rid of some global variables in moniker tests.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
aa63f9c9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
110 deletions
+113
-110
moniker.c
dlls/ole32/tests/moniker.c
+113
-110
No files found.
dlls/ole32/tests/moniker.c
View file @
9253ef39
...
...
@@ -36,8 +36,6 @@
#include "wine/test.h"
#include "wine/heap.h"
#define ok_more_than_one_lock() ok(cLocks > 0, "Number of locks should be > 0, but actually is %d\n", cLocks)
#define ok_no_locks() ok(cLocks == 0, "Number of locks should be 0, but actually is %d\n", cLocks)
#define ok_ole_success(hr, func) ok(hr == S_OK, #func " failed with error 0x%08x\n", hr)
#define CHECK_EXPECTED_METHOD(method_name) \
...
...
@@ -138,18 +136,6 @@ static IMoniker *create_antimoniker(DWORD level)
return
moniker
;
}
static
LONG
cLocks
;
static
void
LockModule
(
void
)
{
InterlockedIncrement
(
&
cLocks
);
}
static
void
UnlockModule
(
void
)
{
InterlockedDecrement
(
&
cLocks
);
}
static
SIZE_T
round_global_size
(
SIZE_T
size
)
{
static
SIZE_T
global_size_alignment
=
-
1
;
...
...
@@ -163,7 +149,23 @@ static SIZE_T round_global_size(SIZE_T size)
return
((
size
+
global_size_alignment
-
1
)
&
~
(
global_size_alignment
-
1
));
}
static
DWORD
external_connections
;
struct
test_factory
{
IClassFactory
IClassFactory_iface
;
IExternalConnection
IExternalConnection_iface
;
LONG
refcount
;
unsigned
int
external_connections
;
};
static
struct
test_factory
*
impl_from_IClassFactory
(
IClassFactory
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
test_factory
,
IClassFactory_iface
);
}
static
struct
test_factory
*
impl_from_IExternalConnection
(
IExternalConnection
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
test_factory
,
IExternalConnection_iface
);
}
static
HRESULT
WINAPI
ExternalConnection_QueryInterface
(
IExternalConnection
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
...
...
@@ -174,28 +176,31 @@ static HRESULT WINAPI ExternalConnection_QueryInterface(IExternalConnection *ifa
static
ULONG
WINAPI
ExternalConnection_AddRef
(
IExternalConnection
*
iface
)
{
return
2
;
struct
test_factory
*
factory
=
impl_from_IExternalConnection
(
iface
);
return
IClassFactory_AddRef
(
&
factory
->
IClassFactory_iface
);
}
static
ULONG
WINAPI
ExternalConnection_Release
(
IExternalConnection
*
iface
)
{
return
1
;
struct
test_factory
*
factory
=
impl_from_IExternalConnection
(
iface
);
return
IClassFactory_Release
(
&
factory
->
IClassFactory_iface
);
}
static
DWORD
WINAPI
ExternalConnection_AddConnection
(
IExternalConnection
*
iface
,
DWORD
extconn
,
DWORD
reserved
)
{
ok
(
extconn
==
EXTCONN_STRONG
,
"extconn = %d
\n
"
,
extconn
);
struct
test_factory
*
factory
=
impl_from_IExternalConnection
(
iface
);
ok
(
extconn
==
EXTCONN_STRONG
,
"Unexpected connection type %d
\n
"
,
extconn
);
ok
(
!
reserved
,
"reserved = %x
\n
"
,
reserved
);
return
++
external_connections
;
return
++
factory
->
external_connections
;
}
static
DWORD
WINAPI
ExternalConnection_ReleaseConnection
(
IExternalConnection
*
iface
,
DWORD
extconn
,
DWORD
reserved
,
BOOL
fLastReleaseCloses
)
{
ok
(
extconn
==
EXTCONN_STRONG
,
"extconn = %d
\n
"
,
extconn
);
struct
test_factory
*
factory
=
impl_from_IExternalConnection
(
iface
);
ok
(
extconn
==
EXTCONN_STRONG
,
"Unexpected connection type %d
\n
"
,
extconn
);
ok
(
!
reserved
,
"reserved = %x
\n
"
,
reserved
);
return
--
external_connections
;
return
--
factory
->
external_connections
;
}
static
const
IExternalConnectionVtbl
ExternalConnectionVtbl
=
{
...
...
@@ -206,70 +211,70 @@ static const IExternalConnectionVtbl ExternalConnectionVtbl = {
ExternalConnection_ReleaseConnection
};
static
IExternalConnection
ExternalConnection
=
{
&
ExternalConnectionVtbl
};
static
HRESULT
WINAPI
Test_IClassFactory_QueryInterface
(
LPCLASSFACTORY
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
test_factory_QueryInterface
(
IClassFactory
*
iface
,
REFIID
riid
,
void
**
obj
)
{
if
(
ppvObj
==
NULL
)
return
E_POINTER
;
struct
test_factory
*
factory
=
impl_from_IClassFactory
(
iface
);
if
(
!
obj
)
return
E_POINTER
;
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IClassFactory
))
{
*
ppvObj
=
iface
;
IClassFactory_AddRef
(
iface
);
return
S_OK
;
*
obj
=
iface
;
}
if
(
IsEqualGUID
(
riid
,
&
IID_IExternalConnection
))
{
*
ppvObj
=
&
ExternalConnection
;
return
S_OK
;
else
if
(
IsEqualGUID
(
riid
,
&
IID_IExternalConnection
))
{
*
obj
=
&
factory
->
IExternalConnection_iface
;
}
else
{
*
obj
=
NULL
;
return
E_NOINTERFACE
;
}
*
ppvObj
=
NULL
;
return
E_NOINTERFACE
;
IUnknown_AddRef
((
IUnknown
*
)
*
obj
)
;
return
S_OK
;
}
static
ULONG
WINAPI
Test_IClassFactory_AddRef
(
LPCLASSFACTORY
iface
)
static
ULONG
WINAPI
test_factory_AddRef
(
IClassFactory
*
iface
)
{
LockModule
(
);
return
2
;
/* non-heap-based object */
struct
test_factory
*
factory
=
impl_from_IClassFactory
(
iface
);
return
InterlockedIncrement
(
&
factory
->
refcount
);
}
static
ULONG
WINAPI
Test_IClassFactory_Release
(
LPCLASSFACTORY
iface
)
static
ULONG
WINAPI
test_factory_Release
(
IClassFactory
*
iface
)
{
UnlockModule
(
);
return
1
;
/* non-heap-based object */
struct
test_factory
*
factory
=
impl_from_IClassFactory
(
iface
);
return
InterlockedDecrement
(
&
factory
->
refcount
);
}
static
HRESULT
WINAPI
Test_IClassFactory_CreateInstance
(
LPCLASSFACTORY
iface
,
LPUNKNOWN
pUnkOuter
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
test_factory_CreateInstance
(
IClassFactory
*
iface
,
IUnknown
*
outer
,
REFIID
riid
,
void
**
obj
)
{
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
Test_IClassFactory_LockServer
(
LPCLASSFACTORY
iface
,
BOOL
fLock
)
static
HRESULT
WINAPI
test_factory_LockServer
(
IClassFactory
*
iface
,
BOOL
lock
)
{
return
S_OK
;
}
static
const
IClassFactoryVtbl
TestClassFactory_V
tbl
=
static
const
IClassFactoryVtbl
test_factory_v
tbl
=
{
Test_IClassF
actory_QueryInterface
,
Test_IClassF
actory_AddRef
,
Test_IClassF
actory_Release
,
Test_IClassF
actory_CreateInstance
,
Test_IClassF
actory_LockServer
test_f
actory_QueryInterface
,
test_f
actory_AddRef
,
test_f
actory_Release
,
test_f
actory_CreateInstance
,
test_f
actory_LockServer
};
static
IClassFactory
Test_ClassFactory
=
{
&
TestClassFactory_Vtbl
};
static
void
test_factory_init
(
struct
test_factory
*
factory
)
{
factory
->
IClassFactory_iface
.
lpVtbl
=
&
test_factory_vtbl
;
factory
->
IExternalConnection_iface
.
lpVtbl
=
&
ExternalConnectionVtbl
;
factory
->
refcount
=
1
;
factory
->
external_connections
=
0
;
}
typedef
struct
{
...
...
@@ -796,6 +801,7 @@ static void test_ROT(void)
IMoniker
*
pMoniker
=
NULL
;
struct
test_moniker
*
test_moniker
;
IRunningObjectTable
*
pROT
=
NULL
;
struct
test_factory
factory
;
DWORD
dwCookie
;
static
const
char
*
methods_register_no_ROTData
[]
=
{
...
...
@@ -830,7 +836,7 @@ static void test_ROT(void)
NULL
};
cLocks
=
0
;
test_factory_init
(
&
factory
)
;
hr
=
GetRunningObjectTable
(
0
,
&
pROT
);
ok_ole_success
(
hr
,
GetRunningObjectTable
);
...
...
@@ -839,15 +845,13 @@ static void test_ROT(void)
test_moniker
->
no_IROTData
=
TRUE
;
expected_method_list
=
methods_register_no_ROTData
;
external_connections
=
0
;
/* try with our own moniker that doesn't support IROTData */
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
Test_ClassFactory
,
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
&
test_moniker
->
IMoniker_iface
,
&
dwCookie
);
ok
(
hr
==
S_OK
,
"Failed to register interface, hr %#x.
\n
"
,
hr
);
ok
(
!*
expected_method_list
,
"Method sequence starting from %s not called
\n
"
,
*
expected_method_list
);
ok
(
external_connections
==
1
,
"external_connections = %d
\n
"
,
external_connections
);
ok_more_than_one_lock
();
ok
(
factory
.
external_connections
==
1
,
"external_connections = %d
\n
"
,
factory
.
external_connections
);
ok
(
factory
.
refcount
>
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
expected_method_list
=
methods_isrunning_no_ROTData
;
hr
=
IRunningObjectTable_IsRunning
(
pROT
,
&
test_moniker
->
IMoniker_iface
);
...
...
@@ -856,19 +860,17 @@ static void test_ROT(void)
hr
=
IRunningObjectTable_Revoke
(
pROT
,
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Revoke
);
ok
(
external_connections
==
0
,
"external_connections = %d
\n
"
,
external_connections
);
ok_no_locks
();
ok
(
!
factory
.
external_connections
,
"external_connections = %d
\n
"
,
factory
.
external_connections
);
ok
(
factory
.
refcount
==
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
expected_method_list
=
methods_register
;
/* try with our own moniker */
test_moniker
->
no_IROTData
=
FALSE
;
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
Test_ClassFactory
,
&
test_moniker
->
IMoniker_iface
,
&
dwCookie
);
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
&
test_moniker
->
IMoniker_iface
,
&
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
ok
(
!*
expected_method_list
,
"Method sequence starting from %s not called
\n
"
,
*
expected_method_list
);
ok_more_than_one_lock
();
ok
(
factory
.
refcount
>
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
expected_method_list
=
methods_isrunning
;
hr
=
IRunningObjectTable_IsRunning
(
pROT
,
&
test_moniker
->
IMoniker_iface
);
...
...
@@ -877,50 +879,47 @@ static void test_ROT(void)
hr
=
IRunningObjectTable_Revoke
(
pROT
,
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Revoke
);
ok_no_locks
();
ok
(
factory
.
refcount
==
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
hr
=
CreateFileMoniker
(
wszFileName
,
&
pMoniker
);
ok_ole_success
(
hr
,
CreateClassMoniker
);
/* test flags: 0 */
external_connections
=
0
;
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie
);
factory
.
external_connections
=
0
;
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
ok
(
external_connections
==
0
,
"external_connections = %d
\n
"
,
external_connections
);
ok_more_than_one_lock
();
ok
(
!
factory
.
external_connections
,
"external_connections = %d
\n
"
,
factory
.
external_connections
);
ok
(
factory
.
refcount
>
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
hr
=
IRunningObjectTable_Revoke
(
pROT
,
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Revoke
);
ok_no_locks
();
ok
(
factory
.
refcount
==
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
/* test flags: ROTFLAGS_REGISTRATIONKEEPSALIVE */
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie
);
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
ok_more_than_one_lock
();
ok
(
factory
.
refcount
>
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
hr
=
IRunningObjectTable_Revoke
(
pROT
,
dwCookie
);
ok_ole_success
(
hr
,
IRunningObjectTable_Revoke
);
ok_no_locks
();
ok
(
factory
.
refcount
==
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
/* test flags: ROTFLAGS_REGISTRATIONKEEPSALIVE|ROTFLAGS_ALLOWANYCLIENT */
/* only succeeds when process is started by SCM and has LocalService
* or RunAs AppId values */
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
|
ROTFLAGS_ALLOWANYCLIENT
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie
);
hr
=
IRunningObjectTable_Register
(
pROT
,
ROTFLAGS_REGISTRATIONKEEPSALIVE
|
ROTFLAGS_ALLOWANYCLIENT
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie
);
todo_wine
{
ok
(
hr
==
CO_E_WRONG_SERVER_IDENTITY
,
"Unexpected hr %#x.
\n
"
,
hr
);
}
if
(
SUCCEEDED
(
hr
))
{
hr
=
IRunningObjectTable_Revoke
(
pROT
,
dwCookie
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#x.
\n
"
,
hr
);
}
hr
=
IRunningObjectTable_Register
(
pROT
,
0xdeadbeef
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie
);
hr
=
IRunningObjectTable_Register
(
pROT
,
0xdeadbeef
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie
);
ok
(
hr
==
E_INVALIDARG
,
"IRunningObjectTable_Register should have returned E_INVALIDARG instead of 0x%08x
\n
"
,
hr
);
IMoniker_Release
(
pMoniker
);
...
...
@@ -938,6 +937,9 @@ static void test_ROT_multiple_entries(void)
IUnknown
*
pObject
=
NULL
;
static
const
WCHAR
moniker_path
[]
=
{
'\\'
,
'w'
,
'i'
,
'n'
,
'd'
,
'o'
,
'w'
,
's'
,
'\\'
,
's'
,
'y'
,
's'
,
't'
,
'e'
,
'm'
,
'\\'
,
't'
,
'e'
,
's'
,
't'
,
'1'
,
'.'
,
'd'
,
'o'
,
'c'
,
0
};
struct
test_factory
factory
;
test_factory_init
(
&
factory
);
hr
=
GetRunningObjectTable
(
0
,
&
pROT
);
ok_ole_success
(
hr
,
GetRunningObjectTable
);
...
...
@@ -945,10 +947,10 @@ static void test_ROT_multiple_entries(void)
hr
=
CreateFileMoniker
(
moniker_path
,
&
pMoniker
);
ok_ole_success
(
hr
,
CreateFileMoniker
);
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie1
);
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie1
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pMoniker
,
&
dwCookie2
);
hr
=
IRunningObjectTable_Register
(
pROT
,
0
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pMoniker
,
&
dwCookie2
);
ok
(
hr
==
MK_S_MONIKERALREADYREGISTERED
,
"IRunningObjectTable_Register should have returned MK_S_MONIKERALREADYREGISTERED instead of 0x%08x
\n
"
,
hr
);
ok
(
dwCookie1
!=
dwCookie2
,
"cookie returned for registering duplicate object shouldn't match cookie of original object (0x%x)
\n
"
,
dwCookie1
);
...
...
@@ -1103,6 +1105,9 @@ static void test_MkParseDisplayName(void)
{
&
pbc
,
wszEmpty
,
&
eaten
,
NULL
},
{
&
pbc
,
wszEmpty
,
&
eaten
,
&
pmk
},
};
struct
test_factory
factory
;
test_factory_init
(
&
factory
);
hr
=
CreateBindCtx
(
0
,
&
pbc
);
ok_ole_success
(
hr
,
CreateBindCtx
);
...
...
@@ -1143,7 +1148,7 @@ todo_wine
ok_ole_success
(
hr
,
CreateFileMoniker
);
hr
=
IBindCtx_GetRunningObjectTable
(
pbc
,
&
pprot
);
ok_ole_success
(
hr
,
IBindCtx_GetRunningObjectTable
);
hr
=
IRunningObjectTable_Register
(
pprot
,
0
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pmk
,
&
pdwReg1
);
hr
=
IRunningObjectTable_Register
(
pprot
,
0
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pmk
,
&
pdwReg1
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
IMoniker_Release
(
pmk
);
pmk
=
NULL
;
...
...
@@ -1164,7 +1169,7 @@ todo_wine
ok_ole_success
(
hr
,
CreateFileMoniker
);
hr
=
IBindCtx_GetRunningObjectTable
(
pbc
,
&
pprot
);
ok_ole_success
(
hr
,
IBindCtx_GetRunningObjectTable
);
hr
=
IRunningObjectTable_Register
(
pprot
,
0
,
(
IUnknown
*
)
&
Test_ClassFactory
,
pmk
,
&
pdwReg1
);
hr
=
IRunningObjectTable_Register
(
pprot
,
0
,
(
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
pmk
,
&
pdwReg1
);
ok_ole_success
(
hr
,
IRunningObjectTable_Register
);
IMoniker_Release
(
pmk
);
pmk
=
NULL
;
...
...
@@ -3032,6 +3037,7 @@ todo_wine
static
void
test_pointer_moniker
(
void
)
{
IMoniker
*
moniker
,
*
moniker2
,
*
prefix
,
*
inverse
,
*
anti
;
struct
test_factory
factory
;
IEnumMoniker
*
enummoniker
;
DWORD
hash
,
size
;
HRESULT
hr
;
...
...
@@ -3045,13 +3051,13 @@ static void test_pointer_moniker(void)
LARGE_INTEGER
pos
;
CLSID
clsid
;
cLocks
=
0
;
test_factory_init
(
&
factory
)
;
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
Test_ClassFactory
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"
CreatePointerMoniker(x, NULL) should have returned E_INVALIDARG instead of 0x%08x
\n
"
,
hr
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"
Unexpected hr %#x.
\n
"
,
hr
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
Test_ClassFactory
,
&
moniker
);
ok
_ole_success
(
hr
,
CreatePointerMonike
r
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
&
moniker
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#x.
\n
"
,
h
r
);
hr
=
IMoniker_QueryInterface
(
moniker
,
&
IID_IMoniker
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#x.
\n
"
,
hr
);
...
...
@@ -3089,7 +3095,7 @@ static void test_pointer_moniker(void)
IMarshal_Release
(
marshal
);
ok
_more_than_one_lock
(
);
ok
(
factory
.
refcount
>
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
/* Display Name */
...
...
@@ -3122,9 +3128,7 @@ static void test_pointer_moniker(void)
/* Hashing */
hr
=
IMoniker_Hash
(
moniker
,
&
hash
);
ok_ole_success
(
hr
,
IMoniker_Hash
);
ok
(
hash
==
PtrToUlong
(
&
Test_ClassFactory
),
"Hash value should have been 0x%08x, instead of 0x%08x
\n
"
,
PtrToUlong
(
&
Test_ClassFactory
),
hash
);
ok
(
hash
==
PtrToUlong
(
&
factory
.
IClassFactory_iface
),
"Unexpected hash value %#x.
\n
"
,
hash
);
/* IsSystemMoniker test */
TEST_MONIKER_TYPE
(
moniker
,
MKSYS_POINTERMONIKER
);
...
...
@@ -3154,8 +3158,7 @@ static void test_pointer_moniker(void)
IMoniker_Release
(
moniker
);
todo_wine
ok
(
cLocks
==
0
,
"Number of locks should be 0, but actually is %d.
\n
"
,
cLocks
);
ok
(
factory
.
refcount
==
1
,
"Unexpected factory refcount %u.
\n
"
,
factory
.
refcount
);
hr
=
CreatePointerMoniker
(
NULL
,
&
moniker
);
ok_ole_success
(
hr
,
CreatePointerMoniker
);
...
...
@@ -3178,10 +3181,10 @@ todo_wine
IMoniker_Release
(
moniker
);
/* CommonPrefixWith() */
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
Test_ClassFactory
,
&
moniker
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
&
moniker
);
ok
(
hr
==
S_OK
,
"Failed to create moniker, hr %#x.
\n
"
,
hr
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
Test_ClassFactory
,
&
moniker2
);
hr
=
CreatePointerMoniker
((
IUnknown
*
)
&
factory
.
IClassFactory_iface
,
&
moniker2
);
ok
(
hr
==
S_OK
,
"Failed to create moniker, hr %#x.
\n
"
,
hr
);
hr
=
IMoniker_IsEqual
(
moniker
,
NULL
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment