Piotr Caban : msvcrt: Add some _mbstok tests.

Alexandre Julliard julliard at winehq.org
Fri Jun 21 11:28:10 CDT 2013


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Jun 21 12:17:43 2013 +0200

msvcrt: Add some _mbstok tests.

---

 dlls/msvcr90/tests/msvcr90.c |    5 +++++
 dlls/msvcrt/tests/string.c   |   19 +++++++++++++++++++
 2 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/dlls/msvcr90/tests/msvcr90.c b/dlls/msvcr90/tests/msvcr90.c
index fe3fa58..e4eee04 100644
--- a/dlls/msvcr90/tests/msvcr90.c
+++ b/dlls/msvcr90/tests/msvcr90.c
@@ -93,6 +93,7 @@ static __msvcrt_ulong* (__cdecl *p_doserrno)(void);
 static void (__cdecl *p_srand)(unsigned int);
 static char* (__cdecl *p_strtok)(char*, const char*);
 static wchar_t* (__cdecl *p_wcstok)(wchar_t*, const wchar_t*);
+static unsigned char* (__cdecl *p__mbstok)(unsigned char*, const unsigned char*);
 static char* (__cdecl *p_strerror)(int);
 static wchar_t* (__cdecl *p_wcserror)(int);
 static char* (__cdecl *p_tmpnam)(char*);
@@ -279,6 +280,7 @@ static BOOL init(void)
     SET(p_srand, "srand");
     SET(p_strtok, "strtok");
     SET(p_wcstok, "wcstok");
+    SET(p__mbstok, "_mbstok");
     SET(p_strerror, "strerror");
     SET(p_wcserror, "_wcserror");
     SET(p_tmpnam, "tmpnam");
@@ -1038,6 +1040,7 @@ static void test_getptd(void)
     DWORD tid = GetCurrentThreadId();
     wchar_t testW[] = {'t','e','s','t',0}, tW[] = {'t',0}, *wp;
     char test[] = "test", *p;
+    unsigned char mbstok_test[] = "test", *up;
     struct tm time;
     __time64_t secs = 0;
     int dec, sign;
@@ -1053,6 +1056,8 @@ static void test_getptd(void)
     ok(ptd->strtok_next == p+3, "ptd->strtok_next is incorrect\n");
     wp = p_wcstok(testW, tW);
     ok(ptd->wcstok_next == wp+3, "ptd->wcstok_next is incorrect\n");
+    up = p__mbstok(mbstok_test, (unsigned char*)"t");
+    ok(ptd->mbstok_next == up+3, "ptd->mbstok_next is incorrect\n");
     ok(p_strerror(0) == ptd->strerror_buffer, "ptd->strerror_buffer is incorrect\n");
     ok(p_wcserror(0) == ptd->wcserror_buffer, "ptd->wcserror_buffer is incorrect\n");
     ok(p_tmpnam(NULL) == ptd->tmpnam_buffer, "ptd->tmpnam_buffer is incorrect\n");
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index 6115377..15b6e4d 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -2193,6 +2193,24 @@ static void test__mbslwr_s(void)
        buffer);
 }
 
+static void test__mbstok(void)
+{
+    const unsigned char delim[] = "t";
+
+    char str[] = "!.!test";
+    unsigned char *ret;
+
+    strtok(str, "!");
+
+    ret = _mbstok(NULL, delim);
+    /* most versions of msvcrt use the same buffer for strtok and _mbstok */
+    ok(!ret || broken((char*)ret==str+4),
+            "_mbstok(NULL, \"t\") = %p, expected NULL (%p)\n", ret, str);
+
+    ret = _mbstok(NULL, delim);
+    ok(!ret, "_mbstok(NULL, \"t\") = %p, expected NULL\n", ret);
+}
+
 static void test__ultoa_s(void)
 {
     errno_t ret;
@@ -2615,6 +2633,7 @@ START_TEST(string)
     test_mbctombb();
     test_ismbclegal();
     test_strtok();
+    test__mbstok();
     test_wcscpy_s();
     test__wcsupr_s();
     test_strtol();




More information about the wine-cvs mailing list