X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-mbsrtowcs.c;h=81e67c1c87cf6b1491890b876edc40931f58a739;hb=757fcfd1ef1892f1472c0712acdf8a2d4ec774da;hp=e1989c37505d3fdbc96702bf232964d2be896e4f;hpb=681366779f25822887d18f7b75926d547925f461;p=gnulib.git diff --git a/tests/test-mbsrtowcs.c b/tests/test-mbsrtowcs.c index e1989c375..81e67c1c8 100644 --- a/tests/test-mbsrtowcs.c +++ b/tests/test-mbsrtowcs.c @@ -64,14 +64,14 @@ main (int argc, char *argv[]) ASSERT (ret == 0); ASSERT (mbsinit (&state)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; src = ""; ret = mbsrtowcs (&wc, &src, 0, &state); ASSERT (ret == 0); - ASSERT (wc == 0xBADFACE); + ASSERT (wc == (wchar_t) 0xBADFACE); ASSERT (mbsinit (&state)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; src = ""; ret = mbsrtowcs (&wc, &src, 1, &state); ASSERT (ret == 0); @@ -88,11 +88,12 @@ main (int argc, char *argv[]) #define BUFSIZE 10 wchar_t buf[BUFSIZE]; const char *src; + mbstate_t temp_state; { size_t i; for (i = 0; i < BUFSIZE; i++) - buf[i] = 0xBADFACE; + buf[i] = (wchar_t) 0xBADFACE; } switch (argv[1][0]) @@ -103,14 +104,14 @@ main (int argc, char *argv[]) char input[] = "B\374\337er"; /* "Büßer" */ memset (&state, '\0', sizeof (mbstate_t)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 1, &state); ASSERT (ret == 1); ASSERT (wc == 'B'); ASSERT (mbsinit (&state)); input[0] = '\0'; - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 1, 1, &state); ASSERT (ret == 1); ASSERT (wctob (wc) == (unsigned char) '\374'); @@ -118,7 +119,8 @@ main (int argc, char *argv[]) input[1] = '\0'; src = input + 2; - ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 1, &state); + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 1, &temp_state); ASSERT (ret == 3); ASSERT (src == input + 2); ASSERT (mbsinit (&state)); @@ -133,13 +135,13 @@ main (int argc, char *argv[]) ASSERT (buf[1] == 'e'); ASSERT (buf[2] == 'r'); ASSERT (buf[3] == 0); - ASSERT (buf[4] == 0xBADFACE); + ASSERT (buf[4] == (wchar_t) 0xBADFACE); } else - ASSERT (buf[1] == 0xBADFACE); + ASSERT (buf[1] == (wchar_t) 0xBADFACE); ASSERT (mbsinit (&state)); } - return 0; + break; case '2': /* Locale encoding is UTF-8. */ @@ -147,22 +149,23 @@ main (int argc, char *argv[]) char input[] = "B\303\274\303\237er"; /* "Büßer" */ memset (&state, '\0', sizeof (mbstate_t)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 1, &state); ASSERT (ret == 1); ASSERT (wc == 'B'); ASSERT (mbsinit (&state)); input[0] = '\0'; - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 1, 1, &state); ASSERT (ret == (size_t)(-2)); - ASSERT (wc == 0xBADFACE); + ASSERT (wc == (wchar_t) 0xBADFACE); ASSERT (!mbsinit (&state)); input[1] = '\0'; src = input + 2; - ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state); + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); ASSERT (ret == 4); ASSERT (src == input + 2); ASSERT (!mbsinit (&state)); @@ -178,58 +181,66 @@ main (int argc, char *argv[]) ASSERT (buf[2] == 'e'); ASSERT (buf[3] == 'r'); ASSERT (buf[4] == 0); - ASSERT (buf[5] == 0xBADFACE); + ASSERT (buf[5] == (wchar_t) 0xBADFACE); } else - ASSERT (buf[2] == 0xBADFACE); + ASSERT (buf[2] == (wchar_t) 0xBADFACE); ASSERT (mbsinit (&state)); } - return 0; + break; case '3': /* Locale encoding is EUC-JP. */ { - char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ + char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */ memset (&state, '\0', sizeof (mbstate_t)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 1, &state); ASSERT (ret == 1); - ASSERT (wc == 'B'); + ASSERT (wc == '<'); ASSERT (mbsinit (&state)); input[0] = '\0'; - wc = 0xBADFACE; - ret = mbrtowc (&wc, input + 1, 1, &state); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); ASSERT (ret == (size_t)(-2)); - ASSERT (wc == 0xBADFACE); + ASSERT (wc == (wchar_t) 0xBADFACE); ASSERT (!mbsinit (&state)); - input[1] = '\0'; + input[3] = '\0'; - src = input + 2; - ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state); - ASSERT (ret == 4); - ASSERT (src == input + 2); + src = input + 4; + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); + ASSERT (ret == 3); + ASSERT (src == input + 4); ASSERT (!mbsinit (&state)); - src = input + 2; + src = input + 4; ret = mbsrtowcs (buf, &src, unlimited ? BUFSIZE : 2, &state); - ASSERT (ret == (unlimited ? 4 : 2)); + ASSERT (ret == (unlimited ? 3 : 2)); ASSERT (src == (unlimited ? NULL : input + 7)); ASSERT (wctob (buf[0]) == EOF); ASSERT (wctob (buf[1]) == EOF); if (unlimited) { - ASSERT (buf[2] == 'e'); - ASSERT (buf[3] == 'r'); - ASSERT (buf[4] == 0); - ASSERT (buf[5] == 0xBADFACE); + ASSERT (buf[2] == '>'); + ASSERT (buf[3] == 0); + ASSERT (buf[4] == (wchar_t) 0xBADFACE); } else - ASSERT (buf[2] == 0xBADFACE); + ASSERT (buf[2] == (wchar_t) 0xBADFACE); ASSERT (mbsinit (&state)); } - return 0; + break; case '4': /* Locale encoding is GB18030. */ @@ -237,22 +248,23 @@ main (int argc, char *argv[]) char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ memset (&state, '\0', sizeof (mbstate_t)); - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 1, &state); ASSERT (ret == 1); ASSERT (wc == 'B'); ASSERT (mbsinit (&state)); input[0] = '\0'; - wc = 0xBADFACE; + wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input + 1, 1, &state); ASSERT (ret == (size_t)(-2)); - ASSERT (wc == 0xBADFACE); + ASSERT (wc == (wchar_t) 0xBADFACE); ASSERT (!mbsinit (&state)); input[1] = '\0'; src = input + 2; - ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &state); + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); ASSERT (ret == 4); ASSERT (src == input + 2); ASSERT (!mbsinit (&state)); @@ -268,13 +280,13 @@ main (int argc, char *argv[]) ASSERT (buf[2] == 'e'); ASSERT (buf[3] == 'r'); ASSERT (buf[4] == 0); - ASSERT (buf[5] == 0xBADFACE); + ASSERT (buf[5] == (wchar_t) 0xBADFACE); } else - ASSERT (buf[2] == 0xBADFACE); + ASSERT (buf[2] == (wchar_t) 0xBADFACE); ASSERT (mbsinit (&state)); } - return 0; + break; default: return 1;