X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Ftest%2Fircd_chattr_t.c;fp=ircd%2Ftest%2Fircd_chattr_t.c;h=04051e27c23f5fa6d8d957657859552c7dd3e29a;hp=0000000000000000000000000000000000000000;hb=0400a5a6479398d82526785c18c0df8bc8b92dce;hpb=d17e10da972ce5776c60b4c317267c6abe0e1ead diff --git a/ircd/test/ircd_chattr_t.c b/ircd/test/ircd_chattr_t.c new file mode 100644 index 0000000..04051e2 --- /dev/null +++ b/ircd/test/ircd_chattr_t.c @@ -0,0 +1,160 @@ +/* + * ircd_chattr_t.c - Test file for character attributes + */ +#include "ircd_chattr.h" +/* #include -- not used here */ +#include + +typedef int (*EvalFn)(char); + +int eval_alnum(char c) +{ + return (0 != IsAlnum(c)); +} + +int eval_alpha(char c) +{ + return (0 != IsAlpha(c)); +} + +int eval_digit(char c) +{ + return (0 != IsDigit(c)); +} + +int eval_lower(char c) +{ + return (0 != IsLower(c)); +} + +int eval_space(char c) +{ + return (0 != IsSpace(c)); +} + +int eval_upper(char c) +{ + return (0 != IsUpper(c)); +} + +int eval_cntrl(char c) +{ + return (0 != IsCntrl(c)); +} + +int eval_channel_char(char c) +{ + return (0 != IsChannelChar(c)); +} + +int eval_channel_lower(char c) +{ + return (0 != IsChannelLower(c)); +} + +int eval_channel_prefix(char c) +{ + return (0 != IsChannelPrefix(c)); +} + +int eval_nick_char(char c) +{ + return (0 != IsNickChar(c)); +} + +int eval_user_char(char c) +{ + return (0 != IsUserChar(c)); +} + +int eval_host_char(char c) +{ + return (0 != IsHostChar(c)); +} + +int eval_ip_char(char c) +{ + return (0 != IsIPChar(c)); +} + +int eval_eol(char c) +{ + return (0 != IsEol(c)); +} + +int eval_ktime_char(char c) +{ + return (0 != IsKTimeChar(c)); +} + +struct CharTest { + const char* name; + EvalFn evaluator; +} testList[] = { + { "IsAlnum: ", eval_alnum }, + { "IsAlpha: ", eval_alpha }, + { "IsDigit: ", eval_digit }, + { "IsLower: ", eval_lower }, + { "IsSpace: ", eval_space }, + { "IsUpper: ", eval_upper }, + { "IsCntrl: ", eval_cntrl }, + { "IsChannelChar: ", eval_channel_char }, + { "IsChannelLower: ", eval_channel_lower }, + { "IsChannelPrefix: ", eval_channel_prefix }, + { "IsNickChar: ", eval_nick_char }, + { "IsUserChar: ", eval_user_char }, + { "IsHostChar: ", eval_host_char }, + { "IsIPChar: ", eval_ip_char }, + { "IsEol: ", eval_eol }, + { "IsKTimeChar: ", eval_ktime_char } +}; + +#define TESTLIST_SIZE sizeof(testList) / sizeof(struct CharTest) + +void print_char(unsigned char c) +{ + if (c < 0x20) { + switch (c) { + case '\a': printf("\\a"); break; + case '\b': printf("\\b"); break; + case '\f': printf("\\f"); break; + case '\n': printf("\\n"); break; + case '\r': printf("\\r"); break; + case '\t': printf("\\t"); break; + case '\v': printf("\\v"); break; + default: + printf("\\%x", c); break; + } + } + else if (c < 0x7F) { + printf("%c", c); + } + else { + printf("\\%x", c); + } +} + +void print_char_attr(struct CharTest* test) +{ + int i; + + printf("%s", test->name); + + for (i = 0; i < 256; ++i) { + if ((*test->evaluator)(i)) + print_char(i); + } + printf("\n"); +} + + +int main(void) +{ + int i; + + for (i = 0; i < TESTLIST_SIZE; ++i) + print_char_attr(&testList[i]); + + return 0; +} +