Branch Coverage

lib/Net/BART/XS.xs
Criterion Covered Total %
branch 51 86 59.3


line true false branch
11 274 0 if (val) SvREFCNT_dec((SV*)val);
17 0 35 if (!node) return;
19 8 35 for (i = 0; i < node->prefixes.len; i++) {
23 277 35 for (i = 0; i < node->children.len; i++) {
51 280 0 if (slash) {
60 3 277 if (is_ipv6) {
63 0 3 if (inet_pton(AF_INET6, buf, &in6) != 1) {
68 0 3 if (*prefix_len < 0) *prefix_len = 128;
70 0 277 if (!parse_ipv4(buf, addr)) {
75 0 277 if (*prefix_len < 0) *prefix_len = 32;
85 3 18 if (is_ipv6) {
87 0 3 if (inet_pton(AF_INET6, str, &in6) != 1) {
92 0 18 if (!parse_ipv4(str, addr)) {
135 3 273 bart_node_t *root = is_ipv6 ? t->root6 : t->root4;
141 1 275 if (!is_new && old_val) {
1 0 if (!is_new && old_val) {
144 275 1 if (is_new) {
145 3 272 if (is_ipv6) t->size6++; else t->size4++;
147 255 21 RETVAL = is_new;
161 15 3 if (found && val) {
15 0 if (found && val) {
162 0 15 XPUSHs(sv_2mortal(newSVsv((SV*)val)));
163 0 15 XPUSHs(sv_2mortal(newSViv(1)));
165 0 3 XPUSHs(&PL_sv_undef);
166 0 3 XPUSHs(sv_2mortal(newSViv(0)));
192 2 1 if (found && val) {
2 0 if (found && val) {
193 0 2 XPUSHs(sv_2mortal(newSVsv((SV*)val)));
194 0 2 XPUSHs(sv_2mortal(newSViv(1)));
196 0 1 XPUSHs(&PL_sv_undef);
197 0 1 XPUSHs(sv_2mortal(newSViv(0)));
209 0 1 bart_node_t *root = is_ipv6 ? t->root6 : t->root4;
212 1 0 if (found) {
213 0 1 if (is_ipv6) t->size6--; else t->size4--;
214 1 0 if (val) {
215 0 1 XPUSHs(sv_2mortal(newSVsv((SV*)val)));
218 0 0 XPUSHs(&PL_sv_undef);
220 0 1 XPUSHs(sv_2mortal(newSViv(1)));
222 0 0 XPUSHs(&PL_sv_undef);
223 0 0 XPUSHs(sv_2mortal(newSViv(0)));
231 0 5 RETVAL = t->size4 + t->size6;
240 0 1 RETVAL = t->size4;
249 0 2 RETVAL = t->size6;