Branch Coverage

Tlaloc.xs
Criterion Covered Total %
branch 145 302 48.0


line true false branch
61 42 0 if (wm) {
63 0 42 if (wm->wetness < 0) wm->wetness = 0;
72 197 0 if (wm) {
102 69 351 if (SvTYPE(sv) < SVt_PVMG) return NULL;
117 6 199 if (mg && mg->mg_ptr) {
6 0 if (mg && mg->mg_ptr) {
120 3 3 if (wm->wetness > WETNESS_MAX) wm->wetness = WETNESS_MAX;
121 0 6 if (evap_step >= 0) wm->evap_step = evap_step; /* Update evap if specified */
125 153 46 if (SvPOK(sv) && SvIsCOW(sv))
51 102 if (SvPOK(sv) && SvIsCOW(sv))
127 60 139 SvUPGRADE(sv, SVt_PVMG);
130 46 153 wm->evap_step = (evap_step >= 0) ? evap_step : EVAP_STEP_DEFAULT;
140 170 25 if (!mg || !mg->mg_ptr) return 0;
0 170 if (!mg || !mg->mg_ptr) return 0;
143 12 158 if (wm->wetness < 0) wm->wetness = 0;
160 4 76 if (tw->skip_evap) {
165 4 72 if (tw->wetness < 0) tw->wetness = 0;
184 0 35 if (items < 1)
188 2 33 if (items > 1)
191 11 24 if (SvROK(sv)) sv = SvRV(sv);
209 0 170 if (items < 1)
213 44 126 if (items > 1)
216 29 141 if (SvROK(sv)) sv = SvRV(sv);
234 0 9 if (items < 1)
238 4 5 if (SvROK(sv)) sv = SvRV(sv);
256 0 146 if (items < 1)
260 64 82 if (SvROK(sv)) sv = SvRV(sv);
264 0 146 XPUSHs(sv_2mortal(newSViv(wetness)));
279 0 18 if (items < 1)
283 8 10 if (SvROK(sv)) sv = SvRV(sv);
287 0 18 XPUSHs(wetness > 0 ? &PL_sv_yes : &PL_sv_no);
14 4 XPUSHs(wetness > 0 ? &PL_sv_yes : &PL_sv_no);
302 0 31 if (items < 1)
306 14 17 if (SvROK(sv)) sv = SvRV(sv);
310 0 31 XPUSHs(wetness == 0 ? &PL_sv_yes : &PL_sv_no);
29 2 XPUSHs(wetness == 0 ? &PL_sv_yes : &PL_sv_no);
327 0 20 if (items < 1)
331 10 10 if (SvROK(sv)) sv = SvRV(sv);
334 19 1 if (mg && mg->mg_ptr) {
19 0 if (mg && mg->mg_ptr) {
336 5 14 if (items > 1) {
343 0 20 XPUSHs(sv_2mortal(newSViv(result)));
433 0 81 if (!tlaloc_stash) return;
435 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)) {
439 81 0 if (SvTYPE(dst) != SVt_PVGV)
524 1 9 if (items == 1) {
529 9 9 for (i = 1; i < items; i++) {
531 9 0 if (strEQ(arg, "all")) {
532 81 9 for (j = 0; tlaloc_exports[j]; j++) {
537 0 0 for (j = 0; tlaloc_exports[j]; j++) {
538 0 0 if (strEQ(arg, tlaloc_exports[j])) {
543 0 0 if (!tlaloc_exports[j]) {
556 0 0 if (SvROK(sv)) sv = SvRV(sv);
557 0 0 if (items > 1) evap_step = SvIV(ST(1));
566 0 0 if (SvROK(sv)) sv = SvRV(sv);
567 0 0 if (items > 1) evap_step = SvIV(ST(1));
575 0 0 if (SvROK(sv)) sv = SvRV(sv);
582 0 0 if (SvROK(sv)) sv = SvRV(sv);
591 0 0 if (SvROK(sv)) sv = SvRV(sv);
592 0 0 RETVAL = (tlaloc_read_wetness(aTHX_ sv) > 0) ? 1 : 0;
600 0 0 if (SvROK(sv)) sv = SvRV(sv);
601 0 0 RETVAL = (tlaloc_read_wetness(aTHX_ sv) == 0) ? 1 : 0;
612 0 0 if (SvROK(sv)) sv = SvRV(sv);
614 0 0 if (!mg || !mg->mg_ptr) {
0 0 if (!mg || !mg->mg_ptr) {
618 0 0 if (items > 1) {
635 22 3 evap_step = (items > 1) ? SvIV(ST(1)) : EVAP_STEP_DEFAULT;
637 0 25 if (!SvROK(ref))
647 14 11 if (SvTYPE(sv) == SVt_PVAV) {
656 37 14 for (i = 0; i < len; i++) {
658 37 0 if (elem) av_store(copy, i, SvREFCNT_inc(*elem));
674 9 2 else if (SvTYPE(sv) == SVt_PVHV) {
682 15 9 while ((entry = hv_iternext(orig))) {
715 0 2 if (!SvROK(ref)) XSRETURN_EMPTY;
719 2 0 if (!mg || !mg->mg_obj) XSRETURN_EMPTY;
0 2 if (!mg || !mg->mg_obj) XSRETURN_EMPTY;
721 1 1 if (SvTYPE(sv) == SVt_PVAV) {
723 1 0 if (sv_derived_from(tied_sv, "Tlaloc::Tied::Array")) {
730 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)) {
737 3 1 for (i = 0; i < len; i++) {
739 3 0 if (elem) av_store(copy, i, SvREFCNT_inc(*elem));
748 3 1 for (i = 0; i < len; i++) {
750 3 0 if (elem) av_store(orig, i, SvREFCNT_inc(*elem));
756 1 0 else if (SvTYPE(sv) == SVt_PVHV) {
758 1 0 if (sv_derived_from(tied_sv, "Tlaloc::Tied::Hash")) {
764 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)) {
778 3 1 while ((entry = hv_iternext(data_hv))) {
800 14 0 if (tw) {
801 14 0 if (tw->data) SvREFCNT_dec(tw->data);
818 28 0 RETVAL = elem ? SvREFCNT_inc(*elem) : &PL_sv_undef;
849 0 6 RETVAL = av_len(data) + 1;
876 0 1 RETVAL = av_exists(data, idx);
891 0 0 if (!RETVAL) RETVAL = &PL_sv_undef;
917 1 1 for (i = 1; i < items; i++) {
920 0 1 RETVAL = av_len(data) + 1;
935 0 1 if (!RETVAL) RETVAL = &PL_sv_undef;
950 0 1 if (!RETVAL) RETVAL = &PL_sv_undef;
965 0 0 for (i = 1; i < items; i++) {
968 0 0 RETVAL = av_len(data) + 1;
986 0 0 offset = (items > 1) ? SvIV(ST(1)) : 0;
987 0 0 if (offset < 0) offset += sz;
988 0 0 if (offset < 0) offset = 0;
989 0 0 if (offset > sz) offset = sz;
991 0 0 length = (items > 2) ? SvIV(ST(2)) : sz - offset;
992 0 0 if (length < 0) length = 0;
993 0 0 if (offset + length > sz) length = sz - offset;
997 0 0 for (i = 0; i < length; i++) {
999 0 0 if (elem) av_push(result, SvREFCNT_inc(*elem));
1003 0 0 for (i = 0; i < length; i++) {
1008 0 0 if (length > 0 && offset < sz - length) {
0 0 if (length > 0 && offset < sz - length) {
1009 0 0 for (i = offset; i < sz - length; i++) {
1011 0 0 if (elem) av_store(data, i, SvREFCNT_inc(*elem));
1017 0 0 if (items > 3) {
1022 0 0 for (i = new_sz - 1; i >= offset; i--) {
1024 0 0 if (elem) av_store(data, i + new_count, SvREFCNT_inc(*elem));
1027 0 0 for (i = 0; i < new_count; i++) {
1034 0 0 EXTEND(SP, sz);
0 0 EXTEND(SP, sz);
1035 0 0 for (i = 0; i < sz; i++) {
1037 0 0 PUSHs(elem ? sv_2mortal(SvREFCNT_inc(*elem)) : &PL_sv_undef);
1049 0 16 RETVAL = tw->wetness;
1061 0 0 RETVAL = (tw->wetness > 0) ? 1 : 0;
1073 2 2 RETVAL = (tw->wetness == 0) ? 1 : 0;
1084 1 3 if (items > 1) {
1087 0 4 RETVAL = tw->evap_step;
1099 1 1 if (items > 1) {
1111 0 0 if (tw->wetness > WETNESS_MAX) tw->wetness = WETNESS_MAX;
1112 0 0 if (items > 1) {
1129 9 0 if (tw) {
1130 9 0 if (tw->data) SvREFCNT_dec(tw->data);
1150 13 0 RETVAL = val ? SvREFCNT_inc(*val) : &PL_sv_undef;
1185 0 1 RETVAL = hv_exists(data, kstr, klen);
1203 0 0 if (!RETVAL) RETVAL = &PL_sv_undef;
1232 2 0 if (entry) {
1252 3 2 if (entry) {
1270 0 0 RETVAL = newSViv(HvUSEDKEYS(data));
1282 0 9 RETVAL = tw->wetness;
1294 0 0 RETVAL = (tw->wetness > 0) ? 1 : 0;
1306 2 2 RETVAL = (tw->wetness == 0) ? 1 : 0;
1317 0 2 if (items > 1) {
1320 0 2 RETVAL = tw->evap_step;
1332 1 0 if (items > 1) {
1344 1 0 if (tw->wetness > WETNESS_MAX) tw->wetness = WETNESS_MAX;
1345 0 1 if (items > 1) {