Branch Coverage

XS.xs
Criterion Covered Total %
branch 262 316 82.9


line true false branch
71 0 28 PUSHMARK(SP);
77 644 28 for (i = 0; i < TSTR_FORMAT_TYPE_COUNT; i++)
81 616 28 while ((entry = hv_iternext(mapping))) {
83 0 616 const char *key = HePV(entry, klen);
88 0 616 if (fmt == TSTR_FORMAT_UNKNOWN)
93 0 616 if (!rx)
100 28 0 FREETMPS;
133 136 0 dXSTARG;
142 135 1 if (items < 1 || !(items & 1))
1 134 if (items < 1 || !(items & 1))
147 234 126 for (i = 1; i < items; i += 2) {
173 125 1 if (epoch < MIN_EPOCH || epoch > MAX_EPOCH)
1 124 if (epoch < MIN_EPOCH || epoch > MAX_EPOCH)
176 100 24 if (nanosecond < 0 && SvNOK(ST(0))) {
100 0 if (nanosecond < 0 && SvNOK(ST(0))) {
180 29 71 int scale_exp = (precision >= 0) ? precision : DEFAULT_PRECISION;
187 4 96 if (nanosecond >= NANOS_PER_SECOND) {
193 0 124 if (nanosecond < 0)
196 35 89 if (offset) {
198 34 1 if (local < MIN_EPOCH || local > MAX_EPOCH)
1 33 if (local < MIN_EPOCH || local > MAX_EPOCH)
202 4 118 if (fmt == TSTR_FORMAT_RFC5280) {
203 2 2 fmt = (epoch < EPOCH_20500101) ? TSTR_FORMAT_ASN1UT : TSTR_FORMAT_ASN1GT;
211 32 90 (void)SvUPGRADE(TARG, SVt_PV);
212 48 74 (void)SvGROW(TARG, 30);
32 16 (void)SvGROW(TARG, 30);
216 0 122 if (!tstr_time2str(aTHX_ TARG, &dt, precision, fmt))
218 0 122 PUSHTARG;
230 184 1 if (items < 1 || !(items & 1))
1 183 if (items < 1 || !(items & 1))
233 243 181 for (i = 1; i < items; i += 2) {
259 2 179 if (!(parsed.flags & TSTR_PARSED_HAS_OFFSET))
265 0 179 if (parsed.flags & TSTR_PARSED_HAS_MERIDIEM)
273 61 118 if (parsed.flags & TSTR_PARSED_HAS_NANOSECOND) {
274 60 1 int scale_exp = (precision >= 0) ? precision : DEFAULT_PRECISION;
297 780 1 if (items < 1 || !(items & 1))
1 779 if (items < 1 || !(items & 1))
300 779 775 for (i = 1; i < items; i += 2) {
323 0 760 if (GIMME_V == G_ARRAY) {
325 0 0 EXTEND(SP, tstr_parsed_field_count(&parsed) * 2);
0 0 EXTEND(SP, tstr_parsed_field_count(&parsed) * 2);
344 1 81 if (items != 1)
347 6 75 if (!tstr_token_parse_day(src, len, &value))
358 1 25 if (items != 1)
361 4 21 if (!tstr_token_parse_day_name(src, len, &value))
372 1 72 if (items != 1)
375 6 66 if (!tstr_token_parse_month(src, len, &value))
386 1 14 if (items != 1)
389 4 10 if (!tstr_token_parse_meridiem(src, len, &value))
400 1 44 if (items != 1)
403 12 32 if (!tstr_token_parse_tz_offset(src, len, &value))
415 1 29 if (items != 1)
417 16 13 if (tstr_calendar_leap_year((int)SvIV(ST(0))))
426 1 17 if (items != 2)
435 1 43 if (items != 3)
437 23 20 if (tstr_calendar_valid_ymd((int)SvIV(ST(0)), (int)SvIV(ST(1)), (int)SvIV(ST(2))))
446 1 51 if (items != 3)
456 1 30 if (items != 3)
466 1 94 if (items != 2)
470 0 90 EXTEND(SP, 2);
480 1 17 if (items != 1)
483 16 1 if (rdn < TSTR_CALENDAR_RDN_MIN || rdn > TSTR_CALENDAR_RDN_MAX)
1 15 if (rdn < TSTR_CALENDAR_RDN_MIN || rdn > TSTR_CALENDAR_RDN_MAX)
486 0 15 EXTEND(SP, 3);
496 1 32 if (items != 1)
499 31 1 if (rdn < TSTR_CALENDAR_RDN_MIN || rdn > TSTR_CALENDAR_RDN_MAX)
1 30 if (rdn < TSTR_CALENDAR_RDN_MIN || rdn > TSTR_CALENDAR_RDN_MAX)
508 1 58 if (items != 3)
518 1 305 if (items != 4)
524 304 1 if (y < 1 || y > 9999)
1 303 if (y < 1 || y > 9999)
526 302 1 if (m < 1 || m > 12)
1 301 if (m < 1 || m > 12)
528 300 1 if (ord < -4 || ord > 4 || ord == 0)
299 1 if (ord < -4 || ord > 4 || ord == 0)
1 298 if (ord < -4 || ord > 4 || ord == 0)
530 297 1 if (dow < 1 || dow > 7)
1 296 if (dow < 1 || dow > 7)
539 1 21 if (items != 2)
542 20 1 if (year < 0 || year > 99)
1 19 if (year < 0 || year > 99)
554 1 11 if (items != 3)
556 5 6 if (tstr_time_valid_hms((int)SvIV(ST(0)), (int)SvIV(ST(1)), (int)SvIV(ST(2))))
563 1 9 if (items != 3)
565 3 6 if (tstr_time_valid_hms60((int)SvIV(ST(0)), (int)SvIV(ST(1)), (int)SvIV(ST(2))))
574 1 393 if (items != 6)
582 392 1 if (y < 1 || y > 9999)
1 391 if (y < 1 || y > 9999)
584 390 1 if (m < 1 || m > 12)
1 389 if (m < 1 || m > 12)
586 388 1 if (d < 1 || d > tstr_calendar_month_days(y, m))
2 386 if (d < 1 || d > tstr_calendar_month_days(y, m))
588 386 0 if (H < 0 || H > 23)
1 385 if (H < 0 || H > 23)
590 385 0 if (M < 0 || M > 59)
1 384 if (M < 0 || M > 59)
592 384 0 if (S < 0 || S > 59)
1 383 if (S < 0 || S > 59)
606 1 21 if (items != 1)
613 20 1 if (epoch < TSTR_TIME_EPOCH_MIN || epoch > TSTR_TIME_EPOCH_MAX)
1 19 if (epoch < TSTR_TIME_EPOCH_MIN || epoch > TSTR_TIME_EPOCH_MAX)
616 0 19 EXTEND(SP, 9);
633 0 84 if (items != 1)
640 84 0 if (epoch < TSTR_TIME_EPOCH_MIN || epoch > TSTR_TIME_EPOCH_MAX)
0 84 if (epoch < TSTR_TIME_EPOCH_MIN || epoch > TSTR_TIME_EPOCH_MAX)
643 0 84 EXTEND(SP, 1);
651 1 9 if (items != 6)
659 8 1 if (y < -1899 || y > 8099)
1 7 if (y < -1899 || y > 8099)
662 6 1 if (m < 0 || m > 11)
1 5 if (m < 0 || m > 11)
665 5 0 if (d < 1 || d > tstr_calendar_month_days(y, m))
0 5 if (d < 1 || d > tstr_calendar_month_days(y, m))
667 5 0 if (H < 0 || H > 23)
0 5 if (H < 0 || H > 23)
669 5 0 if (M < 0 || M > 59)
0 5 if (M < 0 || M > 59)
671 5 0 if (S < 0 || S > 59)
0 5 if (S < 0 || S > 59)
689 21 1 if (items < 2 || items > 4)
0 21 if (items < 2 || items > 4)
691 20 1 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
0 20 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
697 2 18 lo = (items >= 3) ? SvIV(ST(2)) : 0;
698 2 18 hi = (items >= 4) ? SvIV(ST(3)) : len;
699 20 0 if (lo < 0 || lo > len)
0 20 if (lo < 0 || lo > len)
701 20 0 if (hi < 0 || hi > len)
0 20 if (hi < 0 || hi > len)
703 0 20 if (lo > hi)
706 45 20 while (lo < hi) {
710 45 0 if (elem && SvIV(*elem) < value)
16 29 if (elem && SvIV(*elem) < value)
724 1 12 if (items != 3)
726 11 1 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
0 11 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
731 1 10 if (min_value > max_value)
737 24 10 while (lo < hi) {
741 24 0 if (elem && SvIV(*elem) < min_value)
8 16 if (elem && SvIV(*elem) < min_value)
749 23 3 while (hi < len) {
751 23 0 if (elem && SvIV(*elem) <= max_value)
16 7 if (elem && SvIV(*elem) <= max_value)
756 0 10 EXTEND(SP, 2);
766 77 1 if (items < 2 || items > 4)
0 77 if (items < 2 || items > 4)
768 76 1 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
0 76 if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV)
774 2 74 lo = (items >= 3) ? SvIV(ST(2)) : 0;
775 2 74 hi = (items >= 4) ? SvIV(ST(3)) : len;
776 76 0 if (lo < 0 || lo > len)
0 76 if (lo < 0 || lo > len)
778 76 0 if (hi < 0 || hi > len)
0 76 if (hi < 0 || hi > len)
780 0 76 if (lo > hi)
783 168 76 while (lo < hi) {
787 168 0 if (elem && SvIV(*elem) <= value)
67 101 if (elem && SvIV(*elem) <= value)