Branch Coverage

Tlaloc.xs
Criterion Covered Total %
branch 145 302 48.0


line true false branch
54 42 0 if (wm) {
56 0 42 if (wm->wetness < 0) wm->wetness = 0;
65 197 0 if (wm) {
95 69 351 if (SvTYPE(sv) < SVt_PVMG) return NULL;
110 6 199 if (mg && mg->mg_ptr) {
6 0 if (mg && mg->mg_ptr) {
113 3 3 if (wm->wetness > WETNESS_MAX) wm->wetness = WETNESS_MAX;
114 0 6 if (evap_step >= 0) wm->evap_step = evap_step; /* Update evap if specified */
118 153 46 if (SvPOK(sv) && SvIsCOW(sv))
51 102 if (SvPOK(sv) && SvIsCOW(sv))
120 60 139 SvUPGRADE(sv, SVt_PVMG);
123 46 153 wm->evap_step = (evap_step >= 0) ? evap_step : EVAP_STEP_DEFAULT;
133 170 25 if (!mg || !mg->mg_ptr) return 0;
0 170 if (!mg || !mg->mg_ptr) return 0;
136 12 158 if (wm->wetness < 0) wm->wetness = 0;
153 4 79 if (tw->skip_evap) {
158 4 75 if (tw->wetness < 0) tw->wetness = 0;
177 0 35 if (items < 1)
181 2 33 if (items > 1)
184 11 24 if (SvROK(sv)) sv = SvRV(sv);
202 0 170 if (items < 1)
206 44 126 if (items > 1)
209 29 141 if (SvROK(sv)) sv = SvRV(sv);
227 0 9 if (items < 1)
231 4 5 if (SvROK(sv)) sv = SvRV(sv);
249 0 146 if (items < 1)
253 64 82 if (SvROK(sv)) sv = SvRV(sv);
257 0 146 XPUSHs(sv_2mortal(newSViv(wetness)));
272 0 18 if (items < 1)
276 8 10 if (SvROK(sv)) sv = SvRV(sv);
280 0 18 XPUSHs(wetness > 0 ? &PL_sv_yes : &PL_sv_no);
14 4 XPUSHs(wetness > 0 ? &PL_sv_yes : &PL_sv_no);
295 0 31 if (items < 1)
299 14 17 if (SvROK(sv)) sv = SvRV(sv);
303 0 31 XPUSHs(wetness == 0 ? &PL_sv_yes : &PL_sv_no);
29 2 XPUSHs(wetness == 0 ? &PL_sv_yes : &PL_sv_no);
320 0 20 if (items < 1)
324 10 10 if (SvROK(sv)) sv = SvRV(sv);
327 19 1 if (mg && mg->mg_ptr) {
19 0 if (mg && mg->mg_ptr) {
329 5 14 if (items > 1) {
336 0 20 XPUSHs(sv_2mortal(newSViv(result)));
426 0 81 if (!tlaloc_stash) return;
428 81 0 if (src_gvp && *src_gvp && GvCV(*src_gvp)) {
81 0 if (src_gvp && *src_gvp && GvCV(*src_gvp)) {
81 0 if (src_gvp && *src_gvp && GvCV(*src_gvp)) {
432 81 0 if (SvTYPE(dst) != SVt_PVGV)
517 1 9 if (items == 1) {
522 9 9 for (i = 1; i < items; i++) {
524 9 0 if (strEQ(arg, "all")) {
525 81 9 for (j = 0; tlaloc_exports[j]; j++) {
530 0 0 for (j = 0; tlaloc_exports[j]; j++) {
531 0 0 if (strEQ(arg, tlaloc_exports[j])) {
536 0 0 if (!tlaloc_exports[j]) {
549 0 0 if (SvROK(sv)) sv = SvRV(sv);
550 0 0 if (items > 1) evap_step = SvIV(ST(1));
559 0 0 if (SvROK(sv)) sv = SvRV(sv);
560 0 0 if (items > 1) evap_step = SvIV(ST(1));
568 0 0 if (SvROK(sv)) sv = SvRV(sv);
575 0 0 if (SvROK(sv)) sv = SvRV(sv);
584 0 0 if (SvROK(sv)) sv = SvRV(sv);
585 0 0 RETVAL = (tlaloc_read_wetness(aTHX_ sv) > 0) ? 1 : 0;
593 0 0 if (SvROK(sv)) sv = SvRV(sv);
594 0 0 RETVAL = (tlaloc_read_wetness(aTHX_ sv) == 0) ? 1 : 0;
605 0 0 if (SvROK(sv)) sv = SvRV(sv);
607 0 0 if (!mg || !mg->mg_ptr) {
0 0 if (!mg || !mg->mg_ptr) {
611 0 0 if (items > 1) {
628 22 3 evap_step = (items > 1) ? SvIV(ST(1)) : EVAP_STEP_DEFAULT;
630 0 25 if (!SvROK(ref))
640 14 11 if (SvTYPE(sv) == SVt_PVAV) {
649 37 14 for (i = 0; i < len; i++) {
651 37 0 if (elem) av_store(copy, i, SvREFCNT_inc(*elem));
667 9 2 else if (SvTYPE(sv) == SVt_PVHV) {
675 15 9 while ((entry = hv_iternext(orig))) {
708 0 2 if (!SvROK(ref)) XSRETURN_EMPTY;
712 2 0 if (!mg || !mg->mg_obj) XSRETURN_EMPTY;
0 2 if (!mg || !mg->mg_obj) XSRETURN_EMPTY;
714 1 1 if (SvTYPE(sv) == SVt_PVAV) {
716 1 0 if (sv_derived_from(tied_sv, "Tlaloc::Tied::Array")) {
723 1 0 if (tw && tw->data && SvROK(tw->data)) {
1 0 if (tw && tw->data && SvROK(tw->data)) {
1 0 if (tw && tw->data && SvROK(tw->data)) {
730 3 1 for (i = 0; i < len; i++) {
732 3 0 if (elem) av_store(copy, i, SvREFCNT_inc(*elem));
741 3 1 for (i = 0; i < len; i++) {
743 3 0 if (elem) av_store(orig, i, SvREFCNT_inc(*elem));
749 1 0 else if (SvTYPE(sv) == SVt_PVHV) {
751 1 0 if (sv_derived_from(tied_sv, "Tlaloc::Tied::Hash")) {
757 1 0 if (tw && tw->data && SvROK(tw->data)) {
1 0 if (tw && tw->data && SvROK(tw->data)) {
1 0 if (tw && tw->data && SvROK(tw->data)) {
771 3 1 while ((entry = hv_iternext(data_hv))) {
793 14 0 if (tw) {
794 14 0 if (tw->data) SvREFCNT_dec(tw->data);
811 25 0 RETVAL = elem ? SvREFCNT_inc(*elem) : &PL_sv_undef;
839 0 6 RETVAL = av_len(data) + 1;
866 0 1 RETVAL = av_exists(data, idx);
881 0 0 if (!RETVAL) RETVAL = &PL_sv_undef;
907 1 1 for (i = 1; i < items; i++) {
910 0 1 RETVAL = av_len(data) + 1;
925 0 1 if (!RETVAL) RETVAL = &PL_sv_undef;
940 0 1 if (!RETVAL) RETVAL = &PL_sv_undef;
955 0 0 for (i = 1; i < items; i++) {
958 0 0 RETVAL = av_len(data) + 1;
976 0 0 offset = (items > 1) ? SvIV(ST(1)) : 0;
977 0 0 if (offset < 0) offset += sz;
978 0 0 if (offset < 0) offset = 0;
979 0 0 if (offset > sz) offset = sz;
981 0 0 length = (items > 2) ? SvIV(ST(2)) : sz - offset;
982 0 0 if (length < 0) length = 0;
983 0 0 if (offset + length > sz) length = sz - offset;
987 0 0 for (i = 0; i < length; i++) {
989 0 0 if (elem) av_push(result, SvREFCNT_inc(*elem));
993 0 0 for (i = 0; i < length; i++) {
998 0 0 if (length > 0 && offset < sz - length) {
0 0 if (length > 0 && offset < sz - length) {
999 0 0 for (i = offset; i < sz - length; i++) {
1001 0 0 if (elem) av_store(data, i, SvREFCNT_inc(*elem));
1007 0 0 if (items > 3) {
1012 0 0 for (i = new_sz - 1; i >= offset; i--) {
1014 0 0 if (elem) av_store(data, i + new_count, SvREFCNT_inc(*elem));
1017 0 0 for (i = 0; i < new_count; i++) {
1024 0 0 EXTEND(SP, sz);
0 0 EXTEND(SP, sz);
1025 0 0 for (i = 0; i < sz; i++) {
1027 0 0 PUSHs(elem ? sv_2mortal(SvREFCNT_inc(*elem)) : &PL_sv_undef);
1039 0 16 RETVAL = tw->wetness;
1051 0 0 RETVAL = (tw->wetness > 0) ? 1 : 0;
1063 2 2 RETVAL = (tw->wetness == 0) ? 1 : 0;
1074 1 3 if (items > 1) {
1077 0 4 RETVAL = tw->evap_step;
1089 1 1 if (items > 1) {
1101 0 0 if (tw->wetness > WETNESS_MAX) tw->wetness = WETNESS_MAX;
1102 0 0 if (items > 1) {
1119 9 0 if (tw) {
1120 9 0 if (tw->data) SvREFCNT_dec(tw->data);
1140 13 0 RETVAL = val ? SvREFCNT_inc(*val) : &PL_sv_undef;
1175 0 1 RETVAL = hv_exists(data, kstr, klen);
1193 0 0 if (!RETVAL) RETVAL = &PL_sv_undef;
1222 2 0 if (entry) {
1242 3 2 if (entry) {
1260 0 0 RETVAL = newSViv(HvUSEDKEYS(data));
1272 0 9 RETVAL = tw->wetness;
1284 0 0 RETVAL = (tw->wetness > 0) ? 1 : 0;
1296 2 2 RETVAL = (tw->wetness == 0) ? 1 : 0;
1307 0 2 if (items > 1) {
1310 0 2 RETVAL = tw->evap_step;
1322 1 0 if (items > 1) {
1334 1 0 if (tw->wetness > WETNESS_MAX) tw->wetness = WETNESS_MAX;
1335 0 1 if (items > 1) {