| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #include <assert.h> | |
| #include <locale.h> | |
| #include <wctype.h> | |
| /* mingw-w64 headers */ | |
| #include "libtest.h" | |
| /** | |
| * Test Summary: | |
| * | |
| * Verify that `towctrans` is consistent with mapping-specific wctype.h | |
| * functions. | |
| * | |
| * `towctrans (wc, wctrans ("tolower"))` must be equivalent to `towlower (wc)`. | |
| * `towctrans (wc, wctrans ("toupper"))` must be equivalent to `towupper (wc)`. | |
| * | |
| * POSIX requires that if second argument to `towctrans` is `(wctrans_t)0`, | |
| * then `wc` is returned unchanged. | |
| */ | |
| int main (void) { | |
| mingw_test_init (); | |
| if (setlocale (LC_ALL, "English_United States") == NULL) { | |
| return 77; | |
| } | |
| wctrans_t lower = 0; | |
| wctrans_t upper = 0; | |
| assert ((lower = wctrans ("tolower")) != (wctrans_t) 0); | |
| assert ((upper = wctrans ("toupper")) != (wctrans_t) 0); | |
| for (wint_t wc = 0;; ++wc) { | |
| assert (towctrans (wc, (wctrans_t) 0) == wc); | |
| assert (towlower (wc) == towctrans (wc, lower)); | |
| assert (towupper (wc) == towctrans (wc, upper)); | |
| if (wc == WEOF) { | |
| break; | |
| } | |
| } | |
| return 0; | |
| } |