| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ | |
| #if !defined(_WIN32) && !defined(__APPLE__) && !defined(__OpenBSD__) | |
| /* NOLINTNEXTLINE(bugprone-reserved-identifier) */ | |
| # define _XOPEN_SOURCE 600 | |
| #endif | |
| #include "kwsysPrivate.h" | |
| #include KWSYS_HEADER(String.h) | |
| /* Work-around CMake dependency scanning limitation. This must | |
| duplicate the above list of headers. */ | |
| #if 0 | |
| # include "String.h.in" | |
| #endif | |
| #include <ctype.h> | |
| #include <locale.h> | |
| #include <stdio.h> | |
| #ifdef _WIN32 | |
| static int isprint_posix(int c) | |
| { | |
| return isprint(c) && c != '\t'; | |
| } | |
| # define isprint isprint_posix | |
| #endif | |
| #define MAKE_testString_(isXXXXX) \ | |
| static int testString_##isXXXXX(void) \ | |
| { \ | |
| int i = 0; \ | |
| for (; i < 128; ++i) { \ | |
| if (!!isXXXXX(i) != !!kwsysString_##isXXXXX((char)i)) { \ | |
| printf(#isXXXXX "(%d) failed: %d\n", i, \ | |
| kwsysString_##isXXXXX((char)i)); \ | |
| return 1; \ | |
| } \ | |
| } \ | |
| for (; i < 256; ++i) { \ | |
| if (kwsysString_##isXXXXX((char)i)) { \ | |
| printf(#isXXXXX "(%d) failed: %d\n", i, \ | |
| kwsysString_##isXXXXX((char)i)); \ | |
| return 1; \ | |
| } \ | |
| } \ | |
| return 0; \ | |
| } \ | |
| static int testString_##isXXXXX(void) | |
| MAKE_testString_(isalnum); | |
| MAKE_testString_(isalpha); | |
| MAKE_testString_(isascii); | |
| MAKE_testString_(isblank); | |
| MAKE_testString_(iscntrl); | |
| MAKE_testString_(isdigit); | |
| MAKE_testString_(isgraph); | |
| MAKE_testString_(islower); | |
| MAKE_testString_(isprint); | |
| MAKE_testString_(ispunct); | |
| MAKE_testString_(isspace); | |
| MAKE_testString_(isupper); | |
| MAKE_testString_(isxdigit); | |
| static int testString_tolower(void) | |
| { | |
| int i = 0; | |
| int j; | |
| for (; i < 'A'; ++i) { | |
| if ((j = kwsysString_tolower((char)i)) != i) { | |
| printf("tolower(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| for (; i <= 'Z'; ++i) { | |
| if ((j = kwsysString_tolower((char)i)) != i + 32) { | |
| printf("tolower(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| for (; i < 256; ++i) { | |
| if ((j = kwsysString_tolower((char)i)) != i) { | |
| printf("tolower(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| return 0; | |
| } | |
| static int testString_toupper(void) | |
| { | |
| int i = 0; | |
| int j; | |
| for (; i < 'a'; ++i) { | |
| if ((j = kwsysString_toupper((char)i)) != i) { | |
| printf("toupper(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| for (; i <= 'z'; ++i) { | |
| if ((j = kwsysString_toupper((char)i)) != i - 32) { | |
| printf("toupper(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| for (; i < 256; ++i) { | |
| if ((j = kwsysString_toupper((char)i)) != i) { | |
| printf("toupper(%d) failed: %d\n", i, j); | |
| return 1; | |
| } | |
| } | |
| return 0; | |
| } | |
| int testString(int argc, char* argv[]) | |
| { | |
| int result = 0; | |
| (void)argc; | |
| (void)argv; | |
| setlocale(LC_CTYPE, ""); | |
| result |= testString_isalnum(); | |
| result |= testString_isalpha(); | |
| result |= testString_isascii(); | |
| result |= testString_isblank(); | |
| result |= testString_iscntrl(); | |
| result |= testString_isdigit(); | |
| result |= testString_isgraph(); | |
| result |= testString_islower(); | |
| result |= testString_isprint(); | |
| result |= testString_ispunct(); | |
| result |= testString_isspace(); | |
| result |= testString_isupper(); | |
| result |= testString_isxdigit(); | |
| result |= testString_tolower(); | |
| result |= testString_toupper(); | |
| return result; | |
| } |