ircu2.10.12 pk910 fork
[ircu2.10.12-pk.git] / ircd / test / ircd_chattr_t.c
1 /*
2  * ircd_chattr_t.c - Test file for character attributes
3  */
4 #include "ircd_chattr.h"
5 /* #include <assert.h> -- not used here */
6 #include <stdio.h>
7
8 typedef int (*EvalFn)(char);
9
10 int eval_alnum(char c)
11 {
12   return (0 != IsAlnum(c));
13 }
14
15 int eval_alpha(char c)
16 {
17   return (0 != IsAlpha(c));
18 }
19
20 int eval_digit(char c)
21 {
22   return (0 != IsDigit(c));
23 }
24
25 int eval_lower(char c)
26 {
27   return (0 != IsLower(c));
28 }
29
30 int eval_space(char c)
31 {
32   return (0 != IsSpace(c));
33 }
34
35 int eval_upper(char c)
36 {
37   return (0 != IsUpper(c));
38 }
39
40 int eval_cntrl(char c)
41 {
42   return (0 != IsCntrl(c));
43 }
44
45 int eval_channel_char(char c)
46 {
47   return (0 != IsChannelChar(c));
48 }
49
50 int eval_channel_lower(char c)
51 {
52   return (0 != IsChannelLower(c));
53 }
54
55 int eval_channel_prefix(char c)
56 {
57   return (0 != IsChannelPrefix(c));
58 }
59
60 int eval_nick_char(char c)
61 {
62   return (0 != IsNickChar(c));
63 }
64
65 int eval_user_char(char c)
66 {
67   return (0 != IsUserChar(c));
68 }
69
70 int eval_host_char(char c)
71 {
72   return (0 != IsHostChar(c));
73 }
74
75 int eval_ip_char(char c)
76 {
77   return (0 != IsIPChar(c));
78 }
79
80 int eval_eol(char c)
81 {
82   return (0 != IsEol(c));
83 }
84
85 int eval_ktime_char(char c)
86 {
87   return (0 != IsKTimeChar(c));
88 }
89
90 struct CharTest {
91   const char* name;
92   EvalFn      evaluator;
93 } testList[] = {
94   { "IsAlnum:         ", eval_alnum },
95   { "IsAlpha:         ", eval_alpha },
96   { "IsDigit:         ", eval_digit },
97   { "IsLower:         ", eval_lower },
98   { "IsSpace:         ", eval_space },
99   { "IsUpper:         ", eval_upper },
100   { "IsCntrl:         ", eval_cntrl },
101   { "IsChannelChar:   ", eval_channel_char },
102   { "IsChannelLower:  ", eval_channel_lower },
103   { "IsChannelPrefix: ", eval_channel_prefix },
104   { "IsNickChar:      ", eval_nick_char },
105   { "IsUserChar:      ", eval_user_char },
106   { "IsHostChar:      ", eval_host_char },
107   { "IsIPChar:        ", eval_ip_char },
108   { "IsEol:           ", eval_eol },
109   { "IsKTimeChar:     ", eval_ktime_char }
110 };
111
112 #define TESTLIST_SIZE sizeof(testList) / sizeof(struct CharTest)
113
114 void print_char(unsigned char c)
115 {
116   if (c < 0x20) {
117     switch (c) {
118     case '\a': printf("\\a"); break;
119     case '\b': printf("\\b"); break;
120     case '\f': printf("\\f"); break;
121     case '\n': printf("\\n"); break;
122     case '\r': printf("\\r"); break;
123     case '\t': printf("\\t"); break;
124     case '\v': printf("\\v"); break;
125     default:
126       printf("\\%x", c); break;
127     }
128   }
129   else if (c < 0x7F) {
130     printf("%c", c);
131   }
132   else {
133     printf("\\%x", c);
134   }
135 }
136
137 void print_char_attr(struct CharTest* test)
138 {
139   int i;
140
141   printf("%s", test->name);
142
143   for (i = 0; i < 256; ++i) {
144     if ((*test->evaluator)(i))
145       print_char(i);
146   }
147   printf("\n");
148 }
149
150     
151 int main(void)
152 {
153   int i;
154
155   for (i = 0; i < TESTLIST_SIZE; ++i)
156     print_char_attr(&testList[i]);
157
158   return 0;
159 }
160