diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2014-11-18 18:27:47 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2014-11-19 17:29:09 +0100 |
commit | b36422960466777495933ed1eb50befd1c34e9a9 (patch) | |
tree | 9ac1979b2cc7b44a5df81ca277514c092f3874ff /test | |
parent | 49a67cf67d5a7194214566bc730ee7e28d55bbe1 (diff) |
locale: Add wcsftime()
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/time/Makefile.in | 7 | ||||
-rw-r--r-- | test/time/tst_wcsftime.c | 70 |
2 files changed, 54 insertions, 23 deletions
diff --git a/test/time/Makefile.in b/test/time/Makefile.in index 02c8d910c..bb11e18bd 100644 --- a/test/time/Makefile.in +++ b/test/time/Makefile.in @@ -5,8 +5,13 @@ TESTS_DISABLED := bug-asctime bug-asctime_r time tst-mktime2 tst-posixtz \ tst-strftime tst-strptime tst-timezone ifneq ($(UCLIBC_HAS_XLOCALE),y) -TESTS_DISABLED += tst-ftime_l tst_wcsftime +TESTS_DISABLED += tst-ftime_l +endif + +ifneq ($(UCLIBC_HAS_WCHAR)$(UCLIBC_HAS_LOCALE),yy) +TESTS_DISABLED += tst_wcsftime endif CFLAGS_tst-strptime2 := -std=c99 DODIFF_futimens1 := 1 +DODIFF_tst_wcsftime := 1 diff --git a/test/time/tst_wcsftime.c b/test/time/tst_wcsftime.c index 6e35f1e6f..5631d952a 100644 --- a/test/time/tst_wcsftime.c +++ b/test/time/tst_wcsftime.c @@ -1,39 +1,65 @@ #include <stdio.h> #include <time.h> #include <features.h> -#ifdef __UCLIBC_HAS_WCHAR__ #include <wchar.h> +#include <locale.h> + +#define NUM_OF_DATES 7 +#define NUM_OF_LOCALES 3 +#define BUF_SIZE 256 int -main (int argc, char *argv[]) +main (void) { - wchar_t buf[200]; - time_t t; + wchar_t buf[BUF_SIZE]; struct tm *tp; - int result = 0; + time_t time_list[NUM_OF_DATES] = { + 500, 68200000, 694223999, + 694224000, 704900000, 705000000, + 705900000 + }; + char *locale_list[NUM_OF_LOCALES] = { + "C", + "fr_FR.ISO-8859-1", + "ja_JP.UTF-8" + }; + int result = 0, ddd, lll; size_t n; - time (&t); - tp = gmtime (&t); + for (lll = 0; lll < NUM_OF_LOCALES; lll++) { + printf ("\nUsing locale: %s\n", locale_list[lll]); + char* set = setlocale(LC_ALL, locale_list[lll]); + if (set == NULL) { + printf ("FAILED!\n\n"); + continue; + } else + printf ("\n"); + for (ddd = 0; ddd < NUM_OF_DATES; ddd++) { + tp = localtime(&time_list[ddd]); + printf ("%ld corresponds to ", time_list[ddd]); - n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]), - L"%H:%M:%S %Y-%m-%d\n", tp); - if (n != 21) - result = 1; + n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]), + L"%H:%M:%S %Y-%m-%d%n", tp); + if (n != 21) { + result = 1; + printf ("FAILED!\n"); + } - wprintf (L"It is now %ls", buf); + printf ("%ls", buf); - wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A\n", tp); + wcsftime (buf, sizeof (buf) / sizeof (buf[0]), + L"%tor, as %%D %%T: %D %T%n", tp); + printf ("%ls", buf); - wprintf (L"The weekday is %ls", buf); + wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A (%a)%n", tp); + printf ("The weekday was %ls", buf); + wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%B (%b) %Y%n", tp); + /* glibc bug? forgets aigu from french february février + * See s/printf (/wprintf (L/g */ + //wprintf (L"Month was %ls", buf); + printf ("Month was %ls", buf); + } + } return result; } - -#else -int main(void) -{ - puts("Test requires WCHAR support; skipping"); - return 0; -} -#endif |