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