1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <inttypes.h>
5 #include <ctype.h>
6
7 #include "test-common.h"
8
9 #include <libmy/ubuf.h>
10 #include <wdns.h>
11
12 #define NAME "test-str_to_rcode"
13
14 static struct u16str {
15 uint16_t u16;
16 const char *str;
17 } rcodes[] = {
18 { WDNS_R_BADVERS, "BADVERS" },
19 { WDNS_R_FORMERR, "FORMERR" },
20 { WDNS_R_NOERROR, "NOERROR" },
21 { WDNS_R_NOTAUTH, "NOTAUTH" },
22 { WDNS_R_NOTIMP, "NOTIMP" },
23 { WDNS_R_NOTZONE, "NOTZONE" },
24 { WDNS_R_NXDOMAIN, "NXDOMAIN" },
25 { WDNS_R_NXRRSET, "NXRRSET" },
26 { WDNS_R_REFUSED, "REFUSED" },
27 { WDNS_R_SERVFAIL, "SERVFAIL" },
28 { WDNS_R_YXDOMAIN, "YXDOMAIN" },
29 { WDNS_R_YXRRSET, "YXRRSET" },
30 };
31
32 #define num_rcodes (sizeof(rcodes) / sizeof(struct u16str))
33
34 static size_t
test_str_to_rcode(void)35 test_str_to_rcode(void)
36 {
37 size_t n;
38 size_t failures = 0;
39
40 for (n = 0; n < num_rcodes; n++) {
41 uint16_t rcode;
42 wdns_res res;
43 res = wdns_str_to_rcode(rcodes[n].str, &rcode);
44 if (res != wdns_res_success) {
45 fprintf (stderr, "FAIL: %s res=%s\n", rcodes[n].str, wdns_res_to_str(res));
46 } else if (rcode != rcodes[n].u16) {
47 fprintf (stderr, "FAIL: %s %d != %d\n", rcodes[n].str, rcode, rcodes[n].u16);
48 failures++;
49 } else {
50 fprintf (stderr, "PASS: %s = %d\n", rcodes[n].str, rcode);
51 }
52 }
53
54 return failures;
55 }
56
main(void)57 int main (void)
58 {
59 int ret = 0;
60
61 ret |= check(test_str_to_rcode(), "test_rcode", NAME);
62
63 if (ret)
64 return (EXIT_FAILURE);
65 return (EXIT_SUCCESS);
66 }
67