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