// lib_common_ctype.c // // This file is part of // cc65 - a freeware C compiler for 6502 based systems // // https://cc65.github.io // // See "LICENSE" file for legal information. // // Unit test for character classification functions ("is..") // #include #include #include "unittest.h" #define NUMTESTS 257 typedef struct { bool isalnum; bool isalpha; bool isascii; bool iscntrl; bool isdigit; bool isgraph; bool islower; bool isprint; bool ispunct; bool isspace; bool isupper; bool isxdigit; bool isblank; } CTypeClassifications; CTypeClassifications testSet[NUMTESTS] = { //alnum, alpha, ascii, cntrl, digit, graph, lower, print, punct, space, upper, xdigit,blank {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 00 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 01 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 02 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 03 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 04 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 05 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 06 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 07 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 08 {false, false, true, true, false, false, false, false, false, true, false, false, true }, // 09 {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0A {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0B {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0C {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0D {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0E {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0F {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 10 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 11 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 12 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 13 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 14 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 15 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 16 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 17 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 18 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 19 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1A {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1B {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1C {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1D {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1E {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1F {false, false, true, false, false, false, false, true, false, true, false, false, true }, // 20 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 21 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 22 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 23 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 24 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 25 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 26 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 27 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 28 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 29 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2F {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 30 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 31 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 32 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 33 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 34 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 35 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 36 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 37 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 38 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 39 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3F {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 40 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 41 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 42 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 43 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 44 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 45 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 46 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 47 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 48 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 49 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4A {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4B {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4C {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4D {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4E {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4F {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 50 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 51 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 52 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 53 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 54 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 55 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 56 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 57 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 58 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 59 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 5A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5F {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 60 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 61 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 62 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 63 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 64 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 65 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 66 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 67 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 68 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 69 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6A {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6B {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6C {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6D {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6E {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6F {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 70 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 71 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 72 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 73 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 74 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 75 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 76 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 77 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 78 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 79 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 7A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7E {false, false, true, false, false, true, false, true, true, true, false, false, false}, // 7F {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 80 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 81 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 82 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 83 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 84 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 85 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 86 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 87 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 88 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 89 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8A {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8B {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8C {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8D {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8E {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8F {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 90 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 91 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 92 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 93 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 94 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 95 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 96 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 97 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 98 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 99 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9A {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9B {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9C {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9D {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9E {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9F {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // ED {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FF // out of range test {false, false, false, false, false, false, false, false, false, false, false, false, false} // 100 }; TEST { int i = 0; while (i= __CC65_STD_C99__ // isblank() ASSERT_AreEqual(testSet[i].isblank, (isblank(i) ? true : false), "%d", "Invalid 'isblank(%d)' classification!" COMMA i); #endif ++i; } } ENDTEST