Branch Coverage

XS.xs
Criterion Covered Total %
branch 119 136 87.5


line true false branch
70 0 24 PUSHMARK(SP);
76 552 24 for (i = 0; i < TSTR_FORMAT_TYPE_COUNT; i++)
80 528 24 while ((entry = hv_iternext(mapping))) {
82 0 528 const char *key = HePV(entry, klen);
87 0 528 if (fmt == TSTR_FORMAT_UNKNOWN)
92 0 528 if (!rx)
99 24 0 FREETMPS;
132 136 0 dXSTARG;
141 135 1 if (items < 1 || !(items & 1))
1 134 if (items < 1 || !(items & 1))
146 234 126 for (i = 1; i < items; i += 2) {
172 125 1 if (epoch < MIN_EPOCH || epoch > MAX_EPOCH)
1 124 if (epoch < MIN_EPOCH || epoch > MAX_EPOCH)
175 100 24 if (nanosecond < 0 && SvNOK(ST(0))) {
100 0 if (nanosecond < 0 && SvNOK(ST(0))) {
179 29 71 int scale_exp = (precision >= 0) ? precision : DEFAULT_PRECISION;
186 4 96 if (nanosecond >= NANOS_PER_SECOND) {
192 0 124 if (nanosecond < 0)
195 35 89 if (offset) {
197 34 1 if (local < MIN_EPOCH || local > MAX_EPOCH)
1 33 if (local < MIN_EPOCH || local > MAX_EPOCH)
201 4 118 if (fmt == TSTR_FORMAT_RFC5280) {
202 2 2 fmt = (epoch < EPOCH_20500101) ? TSTR_FORMAT_ASN1UT : TSTR_FORMAT_ASN1GT;
210 32 90 (void)SvUPGRADE(TARG, SVt_PV);
211 48 74 (void)SvGROW(TARG, 30);
32 16 (void)SvGROW(TARG, 30);
215 0 122 if (!tstr_time2str(aTHX_ TARG, &dt, precision, fmt))
217 0 122 PUSHTARG;
229 184 1 if (items < 1 || !(items & 1))
1 183 if (items < 1 || !(items & 1))
232 243 181 for (i = 1; i < items; i += 2) {
258 2 179 if (!(parsed.flags & TSTR_PARSED_HAS_OFFSET))
264 0 179 if (parsed.flags & TSTR_PARSED_HAS_MERIDIEM)
272 61 118 if (parsed.flags & TSTR_PARSED_HAS_NANOSECOND) {
273 60 1 int scale_exp = (precision >= 0) ? precision : DEFAULT_PRECISION;
296 780 1 if (items < 1 || !(items & 1))
1 779 if (items < 1 || !(items & 1))
299 779 775 for (i = 1; i < items; i += 2) {
322 0 760 if (GIMME_V == G_ARRAY) {
324 0 0 EXTEND(SP, tstr_parsed_field_count(&parsed) * 2);
0 0 EXTEND(SP, tstr_parsed_field_count(&parsed) * 2);
343 1 81 if (items != 1)
346 6 75 if (!tstr_token_parse_day(src, len, &value))
357 1 25 if (items != 1)
360 4 21 if (!tstr_token_parse_day_name(src, len, &value))
371 1 72 if (items != 1)
374 6 66 if (!tstr_token_parse_month(src, len, &value))
385 1 14 if (items != 1)
388 4 10 if (!tstr_token_parse_meridiem(src, len, &value))
399 1 44 if (items != 1)
402 12 32 if (!tstr_token_parse_tz_offset(src, len, &value))
414 1 17 if (items != 1)
416 8 9 if (tstr_calendar_leap_year((int)SvIV(ST(0))))
425 1 17 if (items != 2)
434 1 43 if (items != 3)
436 23 20 if (tstr_calendar_valid_ymd((int)SvIV(ST(0)), (int)SvIV(ST(1)), (int)SvIV(ST(2))))
445 1 43 if (items != 3)
456 1 17 if (items != 1)
459 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)
462 0 15 EXTEND(SP, 3);
472 1 32 if (items != 1)
475 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)
484 1 30 if (items != 3)
494 1 21 if (items != 2)
497 20 1 if (year < 0 || year > 99)
1 19 if (year < 0 || year > 99)