Piotr Caban : msvcp90/tests: Added operator+ tests (basic_string<char>).

Alexandre Julliard julliard at winehq.org
Fri Apr 1 09:41:00 CDT 2011


Module: wine
Branch: master
Commit: 223ac3cc09d1b160098877649feda498f113b28f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=223ac3cc09d1b160098877649feda498f113b28f

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Apr  1 02:01:16 2011 +0200

msvcp90/tests: Added operator+ tests (basic_string<char>).

---

 dlls/msvcp90/tests/string.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/dlls/msvcp90/tests/string.c b/dlls/msvcp90/tests/string.c
index 3147018..4f84264 100644
--- a/dlls/msvcp90/tests/string.c
+++ b/dlls/msvcp90/tests/string.c
@@ -49,6 +49,8 @@ typedef struct _basic_string_wchar
 } basic_string_wchar;
 
 static void* (__cdecl *p_set_invalid_parameter_handler)(void*);
+static basic_string_char* (WINAPI *p_basic_string_char_concatenate)(basic_string_char*, const basic_string_char*, const basic_string_char*);
+static basic_string_char* (WINAPI *p_basic_string_char_concatenate_cstr)(basic_string_char*, const basic_string_char*, const char*);
 
 #ifdef __i386__
 static basic_string_char* (WINAPI *p_basic_string_char_ctor)(void);
@@ -375,6 +377,10 @@ static BOOL init(void)
                 "?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAH_K0AEBV12 at 00@Z");
         p_basic_string_char_compare_substr_cstr_len = (void*)GetProcAddress(msvcp,
                 "?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAH_K0PEBD0 at Z");
+        p_basic_string_char_concatenate = (void*)GetProcAddress(msvcp,
+                "??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@0 at Z");
+        p_basic_string_char_concatenate_cstr = (void*)GetProcAddress(msvcp,
+                "??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@PEBD at Z");
 
         p_basic_string_wchar_ctor = (void*)GetProcAddress(msvcp,
                 "??0?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAA at XZ");
@@ -429,6 +435,10 @@ static BOOL init(void)
                 "?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEHIIABV12 at II@Z");
         p_basic_string_char_compare_substr_cstr_len = (void*)GetProcAddress(msvcp,
                 "?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEHIIPBDI at Z");
+        p_basic_string_char_concatenate = (void*)GetProcAddress(msvcp,
+                "??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@0 at Z");
+        p_basic_string_char_concatenate_cstr = (void*)GetProcAddress(msvcp,
+                "??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@PBD at Z");
 
         p_basic_string_wchar_ctor = (void*)GetProcAddress(msvcp,
                 "??0?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAE at XZ");
@@ -644,6 +654,34 @@ static void test_basic_string_char_compare(void) {
     call_func1(p_basic_string_char_dtor, &str2);
 }
 
+static void test_basic_string_char_concatenate(void) {
+    basic_string_char str, ret;
+    const char *cstr;
+
+    if(!p_basic_string_char_ctor_cstr || !p_basic_string_char_concatenate
+            || !p_basic_string_char_concatenate_cstr || !p_basic_string_char_cstr
+            || !p_basic_string_char_dtor) {
+        win_skip("basic_string<wchar> unavailable\n");
+        return;
+    }
+
+    call_func2(p_basic_string_char_ctor_cstr, &str, "test ");
+    /* CDECL calling convention with return bigger than 8 bytes */
+    p_basic_string_char_concatenate(&ret, &str, &str);
+    cstr = call_func1(p_basic_string_char_cstr, &ret);
+    ok(cstr != NULL, "cstr = NULL\n");
+    ok(!strcmp(cstr, "test test "), "cstr = %s\n", cstr);
+    call_func1(p_basic_string_char_dtor, &ret);
+
+    p_basic_string_char_concatenate_cstr(&ret, &str, "passed");
+    cstr = call_func1(p_basic_string_char_cstr, &ret);
+    ok(cstr != NULL, "cstr = NULL\n");
+    ok(!strcmp(cstr, "test passed"), "cstr = %s\n", cstr);
+    call_func1(p_basic_string_char_dtor, &ret);
+
+    call_func1(p_basic_string_char_dtor, &str);
+}
+
 static void test_basic_string_wchar(void) {
     static const wchar_t test[] = { 't','e','s','t',0 };
 
@@ -768,6 +806,7 @@ START_TEST(string)
     test_basic_string_char_swap();
     test_basic_string_char_append();
     test_basic_string_char_compare();
+    test_basic_string_char_concatenate();
     test_basic_string_wchar();
     test_basic_string_wchar_swap();
 




More information about the wine-cvs mailing list