]> jfr.im git - irc/quakenet/snircd.git/blob - ircd/test/ircd_chattr_t.c
Initial import of 2.10.12.01
[irc/quakenet/snircd.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