diff options
Diffstat (limited to 'localedata/tst-strptime.c')
-rw-r--r-- | localedata/tst-strptime.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/localedata/tst-strptime.c b/localedata/tst-strptime.c index b5ab232..a95b2c2 100644 --- a/localedata/tst-strptime.c +++ b/localedata/tst-strptime.c @@ -1,22 +1,43 @@ #include <locale.h> #include <time.h> #include <stdio.h> +#include <string.h> static int do_test (void) { + int result = 0; + if (setlocale (LC_ALL, "vi_VN.TCVN5712-1") == NULL) { puts ("cannot set locale"); return 1; } struct tm tm; + memset (&tm, '\0', sizeof (tm)); /* This is November in Vietnamese encoded using TCVN5712-1. */ static const char s[] = "\ -\x54\x68\xb8\x6e\x67\x20\x6d\xad\xea\x69\x20\x6d\xe9\x74"; +\x54\x68\xb8\x6e\x67\x20\x6d\xad\xea\x69\x20\x6d\xe9\x74\0"; char *r = strptime (s, "%b", &tm); printf ("r = %p, r-s = %tu, tm.tm_mon = %d\n", r, r - s, tm.tm_mon); - return r == NULL || r - s != 14 || tm.tm_mon != 10; + result = r == NULL || r - s != 14 || tm.tm_mon != 10; + + if (setlocale (LC_ALL, "ja_JP.UTF-8") == NULL) + { + puts ("cannot set locale"); + return 1; + } + static const char s2[] = "\ +\x32\x35\x20\x30\x36\x20\xe5\xb9\xb3\xe6\x88\x90\x32\x30\0"; + memset (&tm, '\0', sizeof (tm)); + r = strptime (s2, "%d %m %EC%Ey", &tm); + printf ("\ +r = %p, r-s2 = %tu, tm.tm_mday = %d, tm.tm_mon = %d, tm.tm_year = %d\n", + r, r - s2, tm.tm_mday, tm.tm_mon, tm.tm_year); + result = (r == NULL || r - s2 != 14 || tm.tm_mday != 25 || tm.tm_mon != 5 + || tm.tm_year != 108); + + return result; } #define TEST_FUNCTION do_test () |