]> jfr.im git - irc/quakenet/snircd.git/blame - ircd/test/ircd_chattr_t.c
Initial import of 2.10.12.01
[irc/quakenet/snircd.git] / ircd / test / ircd_chattr_t.c
CommitLineData
189935b1 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
8typedef int (*EvalFn)(char);
9
10int eval_alnum(char c)
11{
12 return (0 != IsAlnum(c));
13}
14
15int eval_alpha(char c)
16{
17 return (0 != IsAlpha(c));
18}
19
20int eval_digit(char c)
21{
22 return (0 != IsDigit(c));
23}
24
25int eval_lower(char c)
26{
27 return (0 != IsLower(c));
28}
29
30int eval_space(char c)
31{
32 return (0 != IsSpace(c));
33}
34
35int eval_upper(char c)
36{
37 return (0 != IsUpper(c));
38}
39
40int eval_cntrl(char c)
41{
42 return (0 != IsCntrl(c));
43}
44
45int eval_channel_char(char c)
46{
47 return (0 != IsChannelChar(c));
48}
49
50int eval_channel_lower(char c)
51{
52 return (0 != IsChannelLower(c));
53}
54
55int eval_channel_prefix(char c)
56{
57 return (0 != IsChannelPrefix(c));
58}
59
60int eval_nick_char(char c)
61{
62 return (0 != IsNickChar(c));
63}
64
65int eval_user_char(char c)
66{
67 return (0 != IsUserChar(c));
68}
69
70int eval_host_char(char c)
71{
72 return (0 != IsHostChar(c));
73}
74
75int eval_ip_char(char c)
76{
77 return (0 != IsIPChar(c));
78}
79
80int eval_eol(char c)
81{
82 return (0 != IsEol(c));
83}
84
85int eval_ktime_char(char c)
86{
87 return (0 != IsKTimeChar(c));
88}
89
90struct 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
114void 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
137void 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
151int 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