blob: 978a105e78de1b076b6b9b3b30ad1f87af8b4544 [file] [log] [blame]
/**
* 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>
/**
* 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) {
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;
}