#include #include struct test_case { int c; int isalnum; int isalpha; int isascii; int isblank; int iscntrl; int isdigit; int isgraph; int islower; int isprint; int ispunct; int isspace; int isupper; int isxdigit; } test_cases[] = { // a a a b c d g l p p s u x // l l s l n i r o r u p p d // n p c a t g a w i n a p i // u h i n r i p e n c c e g // m a i k l t h r t t e r i { 0x00, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x01, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x02, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x03, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x04, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x05, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x06, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x07, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x08, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x09, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0}, { 0x0A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, { 0x0B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, { 0x0C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, { 0x0D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, { 0x0E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x0F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x10, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x11, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x12, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x13, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x14, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x16, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x17, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x18, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x19, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x1F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { ' ', 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0}, { '!', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '"', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '#', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '$', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '%', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '&', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '\'', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '(', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { ')', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '*', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '+', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { ',', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '-', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '.', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '/', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '0', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '1', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '2', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '3', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '4', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '5', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '6', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '7', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '8', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { '9', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1}, { ':', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { ';', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '<', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '=', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '>', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '?', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '@', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { 'A', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'B', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'C', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'D', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'E', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'F', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1}, { 'G', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'H', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'I', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'J', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'K', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'L', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'M', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'N', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'O', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'P', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'Q', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'R', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'S', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'T', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'U', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'V', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'W', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'X', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'Y', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { 'Z', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, { '[', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '\\', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { ']', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '^', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '_', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '`', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { 'a', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'b', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'c', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'd', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'e', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'f', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1}, { 'g', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'h', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'i', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'j', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'k', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'l', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'm', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'n', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'o', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'p', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'q', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'r', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 's', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 't', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'u', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'v', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'w', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'x', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'y', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { 'z', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, { '{', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '|', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '}', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { '~', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0}, { 0x7F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x8F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0x9F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xA9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xAF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xB9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xBF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xC9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xCF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xD9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xDF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xE9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xEA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xEB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xEC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xEE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xEF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xF9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SUSv2 states that these isxxxxx functions should also accept EOF. { EOF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; size_t num_test_cases = sizeof(test_cases) / sizeof(struct test_case); #define CHECK_TEST(tc, fn, retval) \ if (fn(tc.c) != tc.fn) { \ retval = -1; \ printf("Unexpected result: " #fn "('%c') != %d // Char value: %d\n", tc.c, tc.fn, tc.c); \ } int main(int argc, char* argv[]) { int retval = 0; for(int i = 0; i < num_test_cases; ++i) { struct test_case tc = test_cases[i]; CHECK_TEST(tc, isalnum, retval); CHECK_TEST(tc, isalpha, retval); CHECK_TEST(tc, isascii, retval); CHECK_TEST(tc, isblank, retval); CHECK_TEST(tc, iscntrl, retval); CHECK_TEST(tc, isdigit, retval); CHECK_TEST(tc, isgraph, retval); CHECK_TEST(tc, islower, retval); CHECK_TEST(tc, isprint, retval); CHECK_TEST(tc, ispunct, retval); CHECK_TEST(tc, isspace, retval); CHECK_TEST(tc, isupper, retval); CHECK_TEST(tc, isxdigit, retval); } if (!retval) { printf("Success: %d\n", retval); } else { printf("Failure: %d\n", retval); } return retval; }