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
066060a5
Commit
066060a5
authored
Jun 03, 2009
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rpcrt4/tests: Add tests for the contents of virtual table for delegated proxies.
parent
3c9571df
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
11 deletions
+65
-11
cstub.c
dlls/rpcrt4/tests/cstub.c
+65
-11
No files found.
dlls/rpcrt4/tests/cstub.c
View file @
066060a5
...
@@ -259,13 +259,14 @@ static CInterfaceStubVtbl if2_stub_vtbl =
...
@@ -259,13 +259,14 @@ static CInterfaceStubVtbl if2_stub_vtbl =
{
CStdStubBuffer_DELEGATING_METHODS
}
{
CStdStubBuffer_DELEGATING_METHODS
}
};
};
static
CINTERFACE_PROXY_VTABLE
(
4
)
if3_proxy_vtbl
=
static
CINTERFACE_PROXY_VTABLE
(
5
)
if3_proxy_vtbl
=
{
{
{
&
IID_if3
},
{
&
IID_if3
},
{
IUnknown_QueryInterface_Proxy
,
{
IUnknown_QueryInterface_Proxy
,
IUnknown_AddRef_Proxy
,
IUnknown_AddRef_Proxy
,
IUnknown_Release_Proxy
,
IUnknown_Release_Proxy
,
if1_fn1_Proxy
if1_fn1_Proxy
,
0
}
}
};
};
...
@@ -298,7 +299,7 @@ static CInterfaceStubVtbl if3_stub_vtbl =
...
@@ -298,7 +299,7 @@ static CInterfaceStubVtbl if3_stub_vtbl =
{
{
&
IID_if3
,
&
IID_if3
,
&
if3_server_info
,
&
if3_server_info
,
4
,
5
,
&
if1_table
[
-
3
]
&
if1_table
[
-
3
]
},
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
...
@@ -430,9 +431,14 @@ static const ProxyFileInfo *proxy_file_list[] = {
...
@@ -430,9 +431,14 @@ static const ProxyFileInfo *proxy_file_list[] = {
static
IPSFactoryBuffer
*
test_NdrDllGetClassObject
(
void
)
static
IPSFactoryBuffer
*
test_NdrDllGetClassObject
(
void
)
{
{
HMODULE
rpcrt4
=
GetModuleHandleA
(
"rpcrt4.dll"
);
IPSFactoryBuffer
*
ppsf
=
NULL
;
IPSFactoryBuffer
*
ppsf
=
NULL
;
const
PCInterfaceProxyVtblList
*
proxy_vtbl
;
const
PCInterfaceStubVtblList
*
stub_vtbl
;
const
CLSID
PSDispatch
=
{
0x20420
,
0
,
0
,
{
0xc0
,
0
,
0
,
0
,
0
,
0
,
0
,
0x46
}};
const
CLSID
PSDispatch
=
{
0x20420
,
0
,
0
,
{
0xc0
,
0
,
0
,
0
,
0
,
0
,
0
,
0x46
}};
const
CLSID
CLSID_Unknown
=
{
0x45678
,
0x1234
,
0x6666
,
{
0xff
,
0x67
,
0x45
,
0x98
,
0x76
,
0x12
,
0x34
,
0x56
}};
const
CLSID
CLSID_Unknown
=
{
0x45678
,
0x1234
,
0x6666
,
{
0xff
,
0x67
,
0x45
,
0x98
,
0x76
,
0x12
,
0x34
,
0x56
}};
static
const
GUID
*
const
interfaces
[]
=
{
&
IID_if1
,
&
IID_if2
,
&
IID_if3
,
&
IID_if4
};
UINT
i
;
HRESULT
r
;
HRESULT
r
;
HMODULE
hmod
=
GetModuleHandleA
(
"rpcrt4.dll"
);
HMODULE
hmod
=
GetModuleHandleA
(
"rpcrt4.dll"
);
void
*
CStd_QueryInterface
=
GetProcAddress
(
hmod
,
"CStdStubBuffer_QueryInterface"
);
void
*
CStd_QueryInterface
=
GetProcAddress
(
hmod
,
"CStdStubBuffer_QueryInterface"
);
...
@@ -457,22 +463,26 @@ static IPSFactoryBuffer *test_NdrDllGetClassObject(void)
...
@@ -457,22 +463,26 @@ static IPSFactoryBuffer *test_NdrDllGetClassObject(void)
ok
(
r
==
S_OK
,
"ret %08x
\n
"
,
r
);
ok
(
r
==
S_OK
,
"ret %08x
\n
"
,
r
);
ok
(
ppsf
!=
NULL
,
"ppsf == NULL
\n
"
);
ok
(
ppsf
!=
NULL
,
"ppsf == NULL
\n
"
);
proxy_vtbl
=
PSFactoryBuffer
.
pProxyFileList
[
0
]
->
pProxyVtblList
;
stub_vtbl
=
PSFactoryBuffer
.
pProxyFileList
[
0
]
->
pStubVtblList
;
ok
(
PSFactoryBuffer
.
pProxyFileList
==
proxy_file_list
,
"pfl not the same
\n
"
);
ok
(
PSFactoryBuffer
.
pProxyFileList
==
proxy_file_list
,
"pfl not the same
\n
"
);
ok
(
PSFactoryBuffer
.
pProxyFileList
[
0
]
->
pStubVtblList
==
(
PCInterfaceStubVtblList
*
)
&
cstub_StubVtblList
,
"stub vtbllist not the same
\n
"
);
ok
(
proxy_vtbl
==
(
PCInterfaceProxyVtblList
*
)
&
cstub_ProxyVtblList
,
"proxy vtbllist not the same
\n
"
);
ok
(
stub_vtbl
==
(
PCInterfaceStubVtblList
*
)
&
cstub_StubVtblList
,
"stub vtbllist not the same
\n
"
);
/* if1 is non-delegating, if2 is delegating, if3 is non-delegating
/* if1 is non-delegating, if2 is delegating, if3 is non-delegating
but I've zero'ed the vtbl entries, similarly if4 is delegating
but I've zero'ed the vtbl entries, similarly if4 is delegating
with zero'ed vtbl entries */
with zero'ed vtbl entries */
#define VTBL_TEST_NOT_CHANGE_TO(name, i) \
#define VTBL_TEST_NOT_CHANGE_TO(name, i) \
ok(
PSFactoryBuffer.pProxyFileList[0]->pStubVtblList
[i]->Vtbl.name != CStd_##name, #name "vtbl %d updated %p %p\n", \
ok(
stub_vtbl
[i]->Vtbl.name != CStd_##name, #name "vtbl %d updated %p %p\n", \
i,
PSFactoryBuffer.pProxyFileList[0]->pStubVtblList[i]->Vtbl.name, CStd_##name );
i,
stub_vtbl[i]->Vtbl.name, CStd_##name )
#define VTBL_TEST_CHANGE_TO(name, i) \
#define VTBL_TEST_CHANGE_TO(name, i) \
ok(
PSFactoryBuffer.pProxyFileList[0]->pStubVtblList
[i]->Vtbl.name == CStd_##name, #name "vtbl %d not updated %p %p\n", \
ok(
stub_vtbl
[i]->Vtbl.name == CStd_##name, #name "vtbl %d not updated %p %p\n", \
i,
PSFactoryBuffer.pProxyFileList[0]->pStubVtblList[i]->Vtbl.name, CStd_##name );
i,
stub_vtbl[i]->Vtbl.name, CStd_##name )
#define VTBL_TEST_ZERO(name, i) \
#define VTBL_TEST_ZERO(name, i) \
ok(PSFactoryBuffer.pProxyFileList[0]->pStubVtblList[i]->Vtbl.name == NULL, #name "vtbl %d not null %p\n", \
ok(stub_vtbl[i]->Vtbl.name == NULL, #name "vtbl %d not null %p\n", \
i, PSFactoryBuffer.pProxyFileList[0]->pStubVtblList[i]->Vtbl.name );
i, stub_vtbl[i]->Vtbl.name )
VTBL_TEST_NOT_CHANGE_TO
(
QueryInterface
,
0
);
VTBL_TEST_NOT_CHANGE_TO
(
QueryInterface
,
0
);
VTBL_TEST_NOT_CHANGE_TO
(
AddRef
,
0
);
VTBL_TEST_NOT_CHANGE_TO
(
AddRef
,
0
);
VTBL_TEST_NOT_CHANGE_TO
(
Release
,
0
);
VTBL_TEST_NOT_CHANGE_TO
(
Release
,
0
);
...
@@ -517,11 +527,55 @@ static IPSFactoryBuffer *test_NdrDllGetClassObject(void)
...
@@ -517,11 +527,55 @@ static IPSFactoryBuffer *test_NdrDllGetClassObject(void)
VTBL_TEST_CHANGE_TO
(
DebugServerQueryInterface
,
3
);
VTBL_TEST_CHANGE_TO
(
DebugServerQueryInterface
,
3
);
VTBL_TEST_CHANGE_TO
(
DebugServerRelease
,
3
);
VTBL_TEST_CHANGE_TO
(
DebugServerRelease
,
3
);
#define VTBL_PROXY_TEST(i,num,ptr) \
ok( proxy_vtbl[i]->Vtbl[num] == (ptr), "wrong proxy %u func %u %p/%p\n", \
(i), (num), proxy_vtbl[i]->Vtbl[num], (ptr) )
#define VTBL_PROXY_TEST_NOT_ZERO(i,num) \
ok( proxy_vtbl[i]->Vtbl[num] != NULL, "wrong proxy %u func %u is NULL\n", (i), (num))
VTBL_PROXY_TEST
(
0
,
0
,
IUnknown_QueryInterface_Proxy
);
VTBL_PROXY_TEST
(
0
,
1
,
IUnknown_AddRef_Proxy
);
VTBL_PROXY_TEST
(
0
,
2
,
IUnknown_Release_Proxy
);
VTBL_PROXY_TEST
(
0
,
3
,
if1_fn1_Proxy
);
VTBL_PROXY_TEST
(
0
,
4
,
if1_fn2_Proxy
);
VTBL_PROXY_TEST
(
1
,
0
,
GetProcAddress
(
rpcrt4
,
"IUnknown_QueryInterface_Proxy"
));
VTBL_PROXY_TEST
(
1
,
1
,
GetProcAddress
(
rpcrt4
,
"IUnknown_AddRef_Proxy"
));
VTBL_PROXY_TEST
(
1
,
2
,
GetProcAddress
(
rpcrt4
,
"IUnknown_Release_Proxy"
));
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
3
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
4
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
5
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
6
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
7
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
8
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
9
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
10
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
11
);
VTBL_PROXY_TEST_NOT_ZERO
(
1
,
12
);
VTBL_PROXY_TEST
(
2
,
0
,
IUnknown_QueryInterface_Proxy
);
VTBL_PROXY_TEST
(
2
,
1
,
IUnknown_AddRef_Proxy
);
VTBL_PROXY_TEST
(
2
,
2
,
IUnknown_Release_Proxy
);
VTBL_PROXY_TEST
(
2
,
3
,
if1_fn1_Proxy
);
todo_wine
VTBL_PROXY_TEST_NOT_ZERO
(
2
,
4
);
VTBL_PROXY_TEST
(
3
,
0
,
GetProcAddress
(
rpcrt4
,
"IUnknown_QueryInterface_Proxy"
));
VTBL_PROXY_TEST
(
3
,
1
,
GetProcAddress
(
rpcrt4
,
"IUnknown_AddRef_Proxy"
));
VTBL_PROXY_TEST
(
3
,
2
,
GetProcAddress
(
rpcrt4
,
"IUnknown_Release_Proxy"
));
VTBL_PROXY_TEST_NOT_ZERO
(
3
,
3
);
VTBL_PROXY_TEST_NOT_ZERO
(
3
,
4
);
VTBL_PROXY_TEST_NOT_ZERO
(
3
,
5
);
VTBL_PROXY_TEST_NOT_ZERO
(
3
,
6
);
#undef VTBL_TEST_NOT_CHANGE_TO
#undef VTBL_TEST_NOT_CHANGE_TO
#undef VTBL_TEST_CHANGE_TO
#undef VTBL_TEST_CHANGE_TO
#undef VTBL_TEST_ZERO
#undef VTBL_TEST_ZERO
#undef VTBL_PROXY_TEST
#undef VTBL_PROXY_TEST_NOT_ZERO
for
(
i
=
0
;
i
<
sizeof
(
interfaces
)
/
sizeof
(
interfaces
[
0
]);
i
++
)
ok
(
proxy_vtbl
[
i
]
->
header
.
piid
==
interfaces
[
i
],
"wrong proxy %u iid %p/%p
\n
"
,
i
,
proxy_vtbl
[
i
]
->
header
.
piid
,
interfaces
[
i
]
);
ok
(
PSFactoryBuffer
.
RefCount
==
1
,
"ref count %d
\n
"
,
PSFactoryBuffer
.
RefCount
);
ok
(
PSFactoryBuffer
.
RefCount
==
1
,
"ref count %d
\n
"
,
PSFactoryBuffer
.
RefCount
);
IPSFactoryBuffer_Release
(
ppsf
);
IPSFactoryBuffer_Release
(
ppsf
);
...
...
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