Piotr Caban : msvcp90/tests: Added destructor tests for class with virtual inheritance.
Alexandre Julliard
julliard at winehq.org
Mon Jul 9 14:56:36 CDT 2012
Module: wine
Branch: master
Commit: 3adb3a3c283c277c04976354744c396b851fe963
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3adb3a3c283c277c04976354744c396b851fe963
Author: Piotr Caban <piotr at codeweavers.com>
Date: Wed Jul 4 16:16:01 2012 +0200
msvcp90/tests: Added destructor tests for class with virtual inheritance.
---
dlls/msvcp90/tests/misc.c | 45 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcp90/tests/misc.c b/dlls/msvcp90/tests/misc.c
index 7d9ef39..5faa03c 100644
--- a/dlls/msvcp90/tests/misc.c
+++ b/dlls/msvcp90/tests/misc.c
@@ -80,16 +80,22 @@ static char* (__thiscall *p_char_allocate)(void*, size_t);
static void (__thiscall *p_char_construct)(void*, char*, const char*);
static size_t (__thiscall *p_char_max_size)(void*);
-void* (__thiscall *p_collate_char_ctor_refs)(void*, size_t);
-int (__thiscall *p_collate_char_compare)(const void*, const char*,
+static void* (__thiscall *p_collate_char_ctor_refs)(void*, size_t);
+static int (__thiscall *p_collate_char_compare)(const void*, const char*,
const char*, const char*, const char*);
-void (__thiscall *p_collate_char_dtor)(void*);
-void* (__thiscall *p_numpunct_char_ctor)(void*);
-basic_string_char* (__thiscall *p_numpunct_char_falsename)(void*,basic_string_char*);
-void (__thiscall *p_numpunct_char_dtor)(void*);
+static void (__thiscall *p_collate_char_dtor)(void*);
+static void* (__thiscall *p_numpunct_char_ctor)(void*);
+static basic_string_char* (__thiscall *p_numpunct_char_falsename)(void*,basic_string_char*);
+static void (__thiscall *p_numpunct_char_dtor)(void*);
static void (__thiscall *p_basic_string_char_dtor)(basic_string_char*);
static const char* (__thiscall *p_basic_string_char_cstr)(basic_string_char*);
+static const int *basic_ostringstream_char_vbtable;
+static /*basic_ostringstream_char*/void* (__thiscall *p_basic_ostringstream_char_ctor_mode)(
+ /*basic_ostringstream_char*/void*, int, /*MSVCP_bool*/int);
+static void (__thiscall *p_basic_ostringstream_char_dtor)(/*basic_ostringstream_char*/void*);
+static void (__thiscall *p_basic_ostringstream_char_vbase_dtor)(/*basic_ostringstream_char*/void*);
+
static int invalid_parameter = 0;
static void __cdecl test_invalid_parameter_handler(const wchar_t *expression,
const wchar_t *function, const wchar_t *file,
@@ -179,6 +185,7 @@ static BOOL init(void)
SET(p_wctype, "wctype");
SET(p__Getctype, "_Getctype");
SET(p__Getcoll, "_Getcoll");
+ SET(basic_ostringstream_char_vbtable, "??_8?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@7B@");
if(sizeof(void*) == 8) { /* 64-bit initialization */
SET(p_char_assign, "?assign@?$char_traits at D@std@@SAXAEADAEBD at Z");
SET(p_wchar_assign, "?assign@?$char_traits at _W@std@@SAXAEA_WAEB_W at Z");
@@ -207,6 +214,13 @@ static BOOL init(void)
"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ");
SET(p_basic_string_char_cstr,
"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ");
+
+ SET(p_basic_ostringstream_char_ctor_mode,
+ "??0?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at H@Z");
+ SET(p_basic_ostringstream_char_dtor,
+ "??1?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@UEAA at XZ");
+ SET(p_basic_ostringstream_char_vbase_dtor,
+ "??_D?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXXZ");
} else {
SET(p_char_assign, "?assign@?$char_traits at D@std@@SAXAADABD at Z");
SET(p_wchar_assign, "?assign@?$char_traits at _W@std@@SAXAA_WAB_W at Z");
@@ -235,6 +249,13 @@ static BOOL init(void)
"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE at XZ");
SET(p_basic_string_char_cstr,
"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEPBDXZ");
+
+ SET(p_basic_ostringstream_char_ctor_mode,
+ "??0?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE at H@Z");
+ SET(p_basic_ostringstream_char_dtor,
+ "??1?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@UAE at XZ");
+ SET(p_basic_ostringstream_char_vbase_dtor,
+ "??_D?$basic_ostringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXXZ");
}
init_thiscall_thunk();
@@ -464,6 +485,17 @@ static void test_virtual_call(void)
call_func1(p_numpunct_char_dtor, this);
}
+static void test_virtual_base_dtors(void)
+{
+ char this[512];
+
+ call_func3(p_basic_ostringstream_char_ctor_mode, this, 0, 1);
+ call_func1(p_basic_ostringstream_char_vbase_dtor, this);
+
+ call_func3(p_basic_ostringstream_char_ctor_mode, this, 0, 0);
+ call_func1(p_basic_ostringstream_char_dtor, this+basic_ostringstream_char_vbtable[1]);
+}
+
START_TEST(misc)
{
if(!init())
@@ -476,6 +508,7 @@ START_TEST(misc)
test__Getctype();
test__Getcoll();
test_virtual_call();
+ test_virtual_base_dtors();
test_allocator_char();
More information about the wine-cvs
mailing list