Skip to content
Snippets Groups Projects
Commit 5fac7229 authored by Nagy Tibor's avatar Nagy Tibor
Browse files

ctype: Fix iscntrl, isgraph, ispunct, make tests exhaustive

iscntrl: Didn't handle the EOF macro correctly
isgraph: Didn't handle '~' (tilde) correctly
ispunct: Several issues
parent 38da5552
No related branches found
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@ pub extern "C" fn isblank(c: c_int) -> c_int {
#[no_mangle]
pub extern "C" fn iscntrl(c: c_int) -> c_int {
(c < 0x20 || c == 0x7f) as c_int
((c >= 0x00 && c <= 0x1f) || c == 0x7f) as c_int
}
#[no_mangle]
......@@ -34,7 +34,7 @@ pub extern "C" fn isdigit(c: c_int) -> c_int {
#[no_mangle]
pub extern "C" fn isgraph(c: c_int) -> c_int {
(c >= 0x21 && c < 0x7e) as c_int
(c >= 0x21 && c <= 0x7e) as c_int
}
#[no_mangle]
......@@ -49,7 +49,10 @@ pub extern "C" fn isprint(c: c_int) -> c_int {
#[no_mangle]
pub extern "C" fn ispunct(c: c_int) -> c_int {
(isgraph(c) != 0 && !isalnum(c) != 0) as c_int
((c >= b'!' as c_int && c <= b'/' as c_int)
|| (c >= b':' as c_int && c <= b'@' as c_int)
|| (c >= b'[' as c_int && c <= b'`' as c_int)
|| (c >= b'{' as c_int && c <= b'~' as c_int)) as c_int
}
#[no_mangle]
......
......@@ -2,7 +2,7 @@
#include <stdio.h>
struct test_case {
char c;
int c;
int isalnum;
int isalpha;
int isascii;
......@@ -17,42 +17,304 @@ struct test_case {
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
{ 'A', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
{ 'z', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{ ' ', 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0},
{ '1', 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},
{0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
// 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);
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\n", tc.c, tc.fn); \
printf("Unexpected result: " #fn "('%c') != %d // Char value: %d\n", tc.c, tc.fn, tc.c); \
}
int main(int argc, char* argv[]) {
int i;
int retval = 0;
for(i = 0; i < num_test_cases; ++i) {
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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment