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_rrtype"
13
14 static struct u16str {
15 uint16_t u16;
16 const char *str;
17 } rrtypes[] = {
18 { WDNS_TYPE_A, "A" },
19 { WDNS_TYPE_A6, "A6" },
20 { WDNS_TYPE_AAAA, "AAAA" },
21 { WDNS_TYPE_AFSDB, "AFSDB" },
22 { WDNS_TYPE_ANY, "ANY" },
23 { WDNS_TYPE_APL, "APL" },
24 { WDNS_TYPE_ATMA, "ATMA" },
25 { WDNS_TYPE_AXFR, "AXFR" },
26 { WDNS_TYPE_CAA, "CAA" },
27 { WDNS_TYPE_CDNSKEY, "CDNSKEY" },
28 { WDNS_TYPE_CDS, "CDS" },
29 { WDNS_TYPE_CERT, "CERT" },
30 { WDNS_TYPE_CNAME, "CNAME" },
31 { WDNS_TYPE_CSYNC, "CSYNC" },
32 { WDNS_TYPE_DHCID, "DHCID" },
33 { WDNS_TYPE_DLV, "DLV" },
34 { WDNS_TYPE_DNAME, "DNAME" },
35 { WDNS_TYPE_DNSKEY, "DNSKEY" },
36 { WDNS_TYPE_DS, "DS" },
37 { WDNS_TYPE_EID, "EID" },
38 { WDNS_TYPE_EUI48, "EUI48" },
39 { WDNS_TYPE_EUI64, "EUI64" },
40 { WDNS_TYPE_GID, "GID" },
41 { WDNS_TYPE_GPOS, "GPOS" },
42 { WDNS_TYPE_HINFO, "HINFO" },
43 { WDNS_TYPE_HIP, "HIP" },
44 { WDNS_TYPE_IPSECKEY, "IPSECKEY" },
45 { WDNS_TYPE_ISDN, "ISDN" },
46 { WDNS_TYPE_IXFR, "IXFR" },
47 { WDNS_TYPE_KEY, "KEY" },
48 { WDNS_TYPE_KX, "KX" },
49 { WDNS_TYPE_L32, "L32" },
50 { WDNS_TYPE_L64, "L64" },
51 { WDNS_TYPE_LOC, "LOC" },
52 { WDNS_TYPE_LP, "LP" },
53 { WDNS_TYPE_MAILA, "MAILA" },
54 { WDNS_TYPE_MAILB, "MAILB" },
55 { WDNS_TYPE_MB, "MB" },
56 { WDNS_TYPE_MD, "MD" },
57 { WDNS_TYPE_MF, "MF" },
58 { WDNS_TYPE_MG, "MG" },
59 { WDNS_TYPE_MINFO, "MINFO" },
60 { WDNS_TYPE_MR, "MR" },
61 { WDNS_TYPE_MX, "MX" },
62 { WDNS_TYPE_NAPTR, "NAPTR" },
63 { WDNS_TYPE_NID, "NID" },
64 { WDNS_TYPE_NIMLOC, "NIMLOC" },
65 { WDNS_TYPE_NINFO, "NINFO" },
66 { WDNS_TYPE_NS, "NS" },
67 { WDNS_TYPE_NSAP, "NSAP" },
68 { WDNS_TYPE_NSAP_PTR, "NSAP-PTR" },
69 { WDNS_TYPE_NSEC, "NSEC" },
70 { WDNS_TYPE_NSEC3, "NSEC3" },
71 { WDNS_TYPE_NSEC3PARAM, "NSEC3PARAM" },
72 { WDNS_TYPE_NULL, "NULL" },
73 { WDNS_TYPE_NXT, "NXT" },
74 { WDNS_TYPE_OPENPGPKEY, "OPENPGPKEY" },
75 { WDNS_TYPE_OPT, "OPT" },
76 { WDNS_TYPE_PTR, "PTR" },
77 { WDNS_TYPE_PX, "PX" },
78 { WDNS_TYPE_RKEY, "RKEY" },
79 { WDNS_TYPE_RP, "RP" },
80 { WDNS_TYPE_RRSIG, "RRSIG" },
81 { WDNS_TYPE_RT, "RT" },
82 { WDNS_TYPE_SIG, "SIG" },
83 { WDNS_TYPE_SINK, "SINK" },
84 { WDNS_TYPE_SOA, "SOA" },
85 { WDNS_TYPE_SPF, "SPF" },
86 { WDNS_TYPE_SRV, "SRV" },
87 { WDNS_TYPE_SSHFP, "SSHFP" },
88 { WDNS_TYPE_TA, "TA" },
89 { WDNS_TYPE_TALINK, "TALINK" },
90 { WDNS_TYPE_TKEY, "TKEY" },
91 { WDNS_TYPE_TLSA, "TLSA" },
92 { WDNS_TYPE_TSIG, "TSIG" },
93 { WDNS_TYPE_TXT, "TXT" },
94 { WDNS_TYPE_UID, "UID" },
95 { WDNS_TYPE_UINFO, "UINFO" },
96 { WDNS_TYPE_UNSPEC, "UNSPEC" },
97 { WDNS_TYPE_URI, "URI" },
98 { WDNS_TYPE_WKS, "WKS" },
99 { WDNS_TYPE_X25, "X25" },
100 };
101
102 #define num_rrtypes (sizeof(rrtypes) / sizeof(struct u16str))
103
104 static size_t
test_str_to_rrtype(void)105 test_str_to_rrtype(void) {
106 size_t n;
107 size_t failures = 0;
108
109 for(n = 0; n < num_rrtypes; n++) {
110 uint16_t rrtype;
111 rrtype = wdns_str_to_rrtype(rrtypes[n].str);
112 if (rrtype != rrtypes[n].u16) {
113 fprintf (stderr, "FAIL: %s %d != %d\n", rrtypes[n].str, rrtype, rrtypes[n].u16);
114 failures++;
115 } else {
116 fprintf (stderr, "PASS: %s = %d\n", rrtypes[n].str, rrtype);
117 }
118 }
119
120 return failures;
121 }
122
main(void)123 int main (void) {
124 int ret = 0;
125
126 ret |= check(test_str_to_rrtype(), "test_cname", NAME);
127
128 if (ret)
129 return (EXIT_FAILURE);
130 return (EXIT_SUCCESS);
131 }
132