mirror of
https://github.com/solemnwarning/directplay-lite
synced 2024-12-30 16:45:37 +01:00
Improve DirectPlay8Peer object management in tests.
This commit is contained in:
parent
d10a456883
commit
1dd9e45145
@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
#include "../src/DirectPlay8Peer.hpp"
|
#include "../src/DirectPlay8Peer.hpp"
|
||||||
|
|
||||||
|
// #define INSTANTIATE_FROM_COM
|
||||||
|
|
||||||
static const GUID APP_GUID_1 = { 0xa6133957, 0x6f42, 0x46ce, { 0xa9, 0x88, 0x22, 0xf7, 0x79, 0x47, 0x08, 0x16 } };
|
static const GUID APP_GUID_1 = { 0xa6133957, 0x6f42, 0x46ce, { 0xa9, 0x88, 0x22, 0xf7, 0x79, 0x47, 0x08, 0x16 } };
|
||||||
static const GUID APP_GUID_2 = { 0x5917faae, 0x7ab0, 0x42d2, { 0xae, 0x13, 0x9c, 0x54, 0x1b, 0x7f, 0xb5, 0xab } };
|
static const GUID APP_GUID_2 = { 0x5917faae, 0x7ab0, 0x42d2, { 0xae, 0x13, 0x9c, 0x54, 0x1b, 0x7f, 0xb5, 0xab } };
|
||||||
|
|
||||||
@ -14,11 +16,47 @@ static HRESULT CALLBACK callback_shim(PVOID pvUserContext, DWORD dwMessageType,
|
|||||||
return (*callback)(dwMessageType, pMessage);
|
return (*callback)(dwMessageType, pMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class IDP8PeerInstance
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
IDirectPlay8Peer *instance;
|
||||||
|
|
||||||
|
IDP8PeerInstance()
|
||||||
|
{
|
||||||
|
#ifdef INSTANTIATE_FROM_COM
|
||||||
|
CoInitialize(NULL);
|
||||||
|
CoCreateInstance(CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (void**)(&instance));
|
||||||
|
#else
|
||||||
|
instance = new DirectPlay8Peer(NULL);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
~IDP8PeerInstance()
|
||||||
|
{
|
||||||
|
#ifdef INSTANTIATE_FROM_COM
|
||||||
|
instance->Release();
|
||||||
|
CoUninitialize();
|
||||||
|
#else
|
||||||
|
instance->Release();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
IDirectPlay8Peer &operator*()
|
||||||
|
{
|
||||||
|
return *instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
IDirectPlay8Peer *operator->()
|
||||||
|
{
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/* Wrapper around a DirectPlay8Peer which hosts a session. */
|
/* Wrapper around a DirectPlay8Peer which hosts a session. */
|
||||||
struct SessionHost
|
struct SessionHost
|
||||||
{
|
{
|
||||||
DirectPlay8Peer dp8p;
|
|
||||||
std::function<HRESULT(DWORD,PVOID)> cb;
|
std::function<HRESULT(DWORD,PVOID)> cb;
|
||||||
|
IDP8PeerInstance dp8p;
|
||||||
|
|
||||||
SessionHost(
|
SessionHost(
|
||||||
GUID application_guid,
|
GUID application_guid,
|
||||||
@ -28,10 +66,9 @@ struct SessionHost
|
|||||||
{
|
{
|
||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
}):
|
}):
|
||||||
dp8p(NULL),
|
|
||||||
cb(cb)
|
cb(cb)
|
||||||
{
|
{
|
||||||
if(dp8p.Initialize(&(this->cb), &callback_shim, 0) != S_OK)
|
if(dp8p->Initialize(&(this->cb), &callback_shim, 0) != S_OK)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("DirectPlay8Peer::Initialize failed");
|
throw std::runtime_error("DirectPlay8Peer::Initialize failed");
|
||||||
}
|
}
|
||||||
@ -44,7 +81,7 @@ struct SessionHost
|
|||||||
app_desc.guidApplication = application_guid;
|
app_desc.guidApplication = application_guid;
|
||||||
app_desc.pwszSessionName = (wchar_t*)(session_description);
|
app_desc.pwszSessionName = (wchar_t*)(session_description);
|
||||||
|
|
||||||
if(dp8p.Host(&app_desc, NULL, 0, NULL, NULL, NULL, 0) != S_OK)
|
if(dp8p->Host(&app_desc, NULL, 0, NULL, NULL, NULL, 0) != S_OK)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("DirectPlay8Peer::Host failed");
|
throw std::runtime_error("DirectPlay8Peer::Host failed");
|
||||||
}
|
}
|
||||||
@ -160,13 +197,13 @@ TEST(DirectPlay8Peer, EnumHostsSync)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&client_cb, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&client_cb, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -245,13 +282,13 @@ TEST(DirectPlay8Peer, EnumHostsAsync)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&callback, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&callback, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -314,13 +351,13 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelByHandle)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&callback, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&callback, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -334,7 +371,7 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelByHandle)
|
|||||||
0 /* dwFlags */
|
0 /* dwFlags */
|
||||||
), DPNSUCCESS_PENDING);
|
), DPNSUCCESS_PENDING);
|
||||||
|
|
||||||
ASSERT_EQ(client.CancelAsyncOperation(async_handle, 0), S_OK);
|
ASSERT_EQ(client->CancelAsyncOperation(async_handle, 0), S_OK);
|
||||||
|
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
|
|
||||||
@ -377,13 +414,13 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelAllEnums)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&callback, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&callback, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -397,7 +434,7 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelAllEnums)
|
|||||||
0 /* dwFlags */
|
0 /* dwFlags */
|
||||||
), DPNSUCCESS_PENDING);
|
), DPNSUCCESS_PENDING);
|
||||||
|
|
||||||
ASSERT_EQ(client.CancelAsyncOperation(0, DPNCANCEL_ENUM), S_OK);
|
ASSERT_EQ(client->CancelAsyncOperation(0, DPNCANCEL_ENUM), S_OK);
|
||||||
|
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
|
|
||||||
@ -440,13 +477,13 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelAllOperations)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&callback, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&callback, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -460,7 +497,7 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelAllOperations)
|
|||||||
0 /* dwFlags */
|
0 /* dwFlags */
|
||||||
), DPNSUCCESS_PENDING);
|
), DPNSUCCESS_PENDING);
|
||||||
|
|
||||||
ASSERT_EQ(client.CancelAsyncOperation(0, DPNCANCEL_ALL_OPERATIONS), S_OK);
|
ASSERT_EQ(client->CancelAsyncOperation(0, DPNCANCEL_ALL_OPERATIONS), S_OK);
|
||||||
|
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
|
|
||||||
@ -503,13 +540,13 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelByClose)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&callback, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&callback, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DWORD start = GetTickCount();
|
DWORD start = GetTickCount();
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -523,7 +560,7 @@ TEST(DirectPlay8Peer, EnumHostsAsyncCancelByClose)
|
|||||||
0 /* dwFlags */
|
0 /* dwFlags */
|
||||||
), DPNSUCCESS_PENDING);
|
), DPNSUCCESS_PENDING);
|
||||||
|
|
||||||
ASSERT_EQ(client.Close(0), S_OK);
|
ASSERT_EQ(client->Close(0), S_OK);
|
||||||
|
|
||||||
EXPECT_TRUE(got_async_op_complete);
|
EXPECT_TRUE(got_async_op_complete);
|
||||||
|
|
||||||
@ -610,9 +647,9 @@ TEST(DirectPlay8Peer, EnumHostsFilterByApplicationGUID)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&client_cb, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&client_cb, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DPN_APPLICATION_DESC app_desc;
|
DPN_APPLICATION_DESC app_desc;
|
||||||
memset(&app_desc, 0, sizeof(app_desc));
|
memset(&app_desc, 0, sizeof(app_desc));
|
||||||
@ -620,7 +657,7 @@ TEST(DirectPlay8Peer, EnumHostsFilterByApplicationGUID)
|
|||||||
app_desc.dwSize = sizeof(app_desc);
|
app_desc.dwSize = sizeof(app_desc);
|
||||||
app_desc.guidApplication = APP_GUID_2;
|
app_desc.guidApplication = APP_GUID_2;
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
&app_desc, /* pApplicationDesc */
|
&app_desc, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -673,9 +710,9 @@ TEST(DirectPlay8Peer, EnumHostsFilterByNULLApplicationGUID)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&client_cb, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&client_cb, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
DPN_APPLICATION_DESC app_desc;
|
DPN_APPLICATION_DESC app_desc;
|
||||||
memset(&app_desc, 0, sizeof(app_desc));
|
memset(&app_desc, 0, sizeof(app_desc));
|
||||||
@ -683,7 +720,7 @@ TEST(DirectPlay8Peer, EnumHostsFilterByNULLApplicationGUID)
|
|||||||
app_desc.dwSize = sizeof(app_desc);
|
app_desc.dwSize = sizeof(app_desc);
|
||||||
app_desc.guidApplication = GUID_NULL;
|
app_desc.guidApplication = GUID_NULL;
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
&app_desc, /* pApplicationDesc */
|
&app_desc, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -761,11 +798,11 @@ TEST(DirectPlay8Peer, EnumHostsDataInQuery)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&client_cb, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&client_cb, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
@ -858,11 +895,11 @@ TEST(DirectPlay8Peer, EnumHostsDataInResponse)
|
|||||||
return DPN_OK;
|
return DPN_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
DirectPlay8Peer client(NULL);
|
IDP8PeerInstance client;
|
||||||
|
|
||||||
ASSERT_EQ(client.Initialize(&client_cb, &callback_shim, 0), S_OK);
|
ASSERT_EQ(client->Initialize(&client_cb, &callback_shim, 0), S_OK);
|
||||||
|
|
||||||
ASSERT_EQ(client.EnumHosts(
|
ASSERT_EQ(client->EnumHosts(
|
||||||
NULL, /* pApplicationDesc */
|
NULL, /* pApplicationDesc */
|
||||||
NULL, /* pdpaddrHost */
|
NULL, /* pdpaddrHost */
|
||||||
NULL, /* pdpaddrDeviceInfo */
|
NULL, /* pdpaddrDeviceInfo */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user