| /** |
| * 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. |
| */ |
| |
| #define _CTYPE_DISABLE_MACROS |
| #include <assert.h> |
| #include <ctype.h> |
| #include <locale.h> |
| #include <stdlib.h> |
| |
| /* mingw-w64 headers */ |
| #include "ctype-test.h" |
| #include "libtest.h" |
| |
| /** |
| * Test conformance of ctype.h functions to POSIX specification. |
| * |
| * Reference: <https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/basedefs/V1_chap07.html#tag_07_03_01> |
| */ |
| |
| int main (void) { |
| mingw_test_init (); |
| |
| assert (setlocale (LC_ALL, "C") != NULL); |
| |
| for (int i = 0; i < (int) _countof (CharTypeTable); ++i) { |
| assert (!!isalnum (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_ALNUM)); |
| assert (!!isalpha (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_ALPHA)); |
| assert (!!isblank (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_BLANK)); |
| assert (!!iscntrl (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_CONTROL)); |
| assert (!!isdigit (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_DIGIT)); |
| assert (!!isgraph (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_GRAPH)); |
| assert (!!islower (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_LOWER)); |
| assert (!!isprint (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_PRINT)); |
| assert (!!isspace (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_SPACE)); |
| assert (!!isupper (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_UPPER)); |
| assert (!!isxdigit (i) == !!(CharTypeTable[i].CharType & CHARTYPE_BIT_XDIGIT)); |
| } |
| |
| return 0; |
| } |