Condition Coverage

lib/DMS/Parser.pm
Criterion Covered Total %
condition 149 555 26.8


and 3 conditions

line !l l&&!r l&&r condition
1061 0 0 0 @stack > 1 and defined $stack[-1]{'ci'}
0 0 0 @stack > 1 and defined $stack[-1]{'ci'} and $stack[-1]{'ci'} > $ind
1069 0 0 0 @stack >= 2 and $stack[-2]{'ci'} >= $ind
1295 0 0 0 $cp >= 55296 and $cp <= 57343
1322 0 1 52 not utf8::is_utf8($src) and length $src >= 3
1 52 0 not utf8::is_utf8($src) and length $src >= 3 and substr($src, 0, 3) eq "\357\273\277"
1339 1 52 0 length $src >= 1 and substr($src, 0, 1) eq "\x{feff}"
1494 0 37 0 defined $c && ($c eq '_' || $c =~ /[A-Za-z]/)
1499 0 62 0 defined $c && ($c eq '_' || $c =~ /[A-Za-z0-9]/)
1555 0 0 123 defined $c and $c eq "\n"
1576 15 0 208 $c0 ne " " and $c0 ne "\t"
15 1 207 $c0 ne " " and $c0 ne "\t" and $c0 ne "\n"
1 0 207 $c0 ne " " and $c0 ne "\t" and $c0 ne "\n" and $c0 ne "\r"
1 37 170 $c0 ne " " and $c0 ne "\t" and $c0 ne "\n" and $c0 ne "\r" and $c0 ne "#"
37 0 170 $c0 ne " " and $c0 ne "\t" and $c0 ne "\n" and $c0 ne "\r" and $c0 ne "#" and $c0 ne "/"
1588 0 89 4 defined $c and $c eq "\n" || $c eq "\r"
0 49 40 defined $c and $c eq "#"
0 49 0 defined $c and $c eq "/"
49 0 0 defined $c and $c eq "/" and $self->_starts_with("//")
0 49 0 defined $c and $c eq "/"
49 0 0 defined $c and $c eq "/" and $self->_starts_with("/*")
1589 4 0 0 $c eq "\r" and not $self->_starts_with("\r\n")
1686 0 0 0 $c eq "/" and $self->_starts_with("/*")
0 0 0 $c eq "*" and $self->_starts_with("*/")
0 0 0 $c eq "\r" and $self->_starts_with("\r\n")
1705 0 2 0 defined $c and $c eq '_' || $c =~ /[A-Za-z0-9]/
1711 0 0 0 $c0 ne "_" and not $c0 =~ /[A-Za-z]/
1816 3 0 7 $lite and exists $table->{$ORDER_KEY}
1849 0 1 0 defined $first && !ref($first) && substr($first, 0, 1) eq '_'
1871 0 0 0 defined $first and not ref $first
0 0 0 defined $first and not ref $first and substr($first, 0, 1) eq "_"
1894 9 0 0 $c eq "+" and $self->_peek_after_plus_is_space_or_eol
1918 41 0 1 $c eq "+" and $self->_peek_after_plus_is_space_or_eol
1949 0 59 0 $p < $n and substr($s, $p, 1) eq "\""
0 59 0 $p < $n and substr($s, $p, 1) eq "'"
2038 148 0 6 $bulk and $self->{'pos'} == $self->{'line_start'}
2066 0 0 0 $cur > 0 and substr($$src_ref, $cur - 1, 1) ne "\n"
2124 5 0 95 $indent == 0 and $self->{'pos'} == $self->{'line_start'}
5 0 95 $indent == 0 and $self->{'pos'} == $self->{'line_start'} and substr($self->{'src'}, $self->{'pos'}, 1) ne " "
2188 0 0 9 defined $c and $c eq ' ' || $c eq "\t"
2229 4 0 3 $self->_peek eq "+" and $self->_peek_after_plus_is_space_or_eol
2309 0 100 0 defined $c and $c eq ' ' || $c eq "\t"
2315 0 93 0 defined $c2 and $c2 eq ' ' || $c2 eq "\t"
2324 0 93 0 defined $c2 and $c2 eq "/"
2357 0 102 0 defined $c and $c eq "\""
2369 0 102 0 defined $c and $c eq "'"
2437 0 113 0 defined $c and exists $RESERVED_DECORATOR_SIGIL{$c}
2446 41 2 70 $c ge 0 and $c le 9
2473 0 0 0 $self->_starts_with("true") and _is_value_terminator($self->_peek_at(4))
2477 0 0 0 $self->_starts_with("false") and _is_value_terminator($self->_peek_at(5))
2486 0 0 0 $self->_starts_with("inf") and _is_value_terminator($self->_peek_at(3))
2495 0 0 0 $self->_starts_with("nan") and _is_value_terminator($self->_peek_at(3))
2524 2 16 0 $len_src - $base >= 10 and $self->{'src'} =~ /\G\d\d\d\d-\d\d-\d\d/
2527 2 16 0 $len_src - $base >= 8 and $self->{'src'} =~ /\G\d\d:\d\d:\d\d/
2531 18 6 0 $starts_sign and substr($self->{'src'}, $base + 1, 3) eq "inf"
2566 0 3 21 not $self->{'lite'} and $s ne $n
2654 13 3 8 $radix == 10 and length $rest > 1
16 8 0 $radix == 10 and length $rest > 1 and substr($rest, 0, 1) eq 0
2674 11 0 0 length $clean == length $bound and $clean gt $bound
2682 6 7 0 $radix == 16 and length $clean > 16
10 3 0 $radix == 8 and length $clean > 22
10 3 0 $radix == 2 and length $clean > 64
2690 7 0 0 length $val_lc == 16 && substr($val_lc, 0, 1) ge '8'
2691 3 0 0 length $val_lc == 22 && substr($val_lc, 0, 1) gt '0'
2692 3 0 0 length $val_lc == 64 && substr($val_lc, 0, 1) eq '1'
2695 0 0 0 $radix == 16 and $val_lc eq "8000000000000000"
0 0 0 $radix == 8 and $val_lc eq "1000000000000000000000"
0 0 0 $radix == 2 and $val_lc eq "1000000000000000000000000000000000000000000000000000000000000000"
2738 0 0 0 _valid_underscores($parts[0]) and _valid_underscores($parts[1])
2774 0 0 0 _valid_underscores($ip) and _valid_underscores($fp)
2849 0 0 0 substr($rest2, 0, 1) ne "T" and substr($rest2, 0, 1) ne " "
2861 0 0 0 length $after_ws > 0 and substr($after_ws, 0, 1) =~ /\d/
2877 0 0 0 $k < length $after_time and substr($after_time, $k, 1) =~ /\d/
2924 0 0 0 $k < length $after and substr($after, $k, 1) =~ /\d/
3029 0 0 0 $v >= 55296 and $v <= 57343
3088 0 0 0 $j < $len and substr($text, $j, 1) eq "\\"
3090 0 0 0 $run % 2 == 1 and $j < $len
3093 0 0 0 $n > 0 and $j + 1 + $n <= $len
3102 0 0 0 $cp >= 55296 and $cp <= 57343
3164 0 17 3 defined $c and _is_label_start($c)
3267 11 0 0 $idx != -1 and $idx == length($trimmed_end) - 1
3269 0 0 0 $k >= 0 and substr($trimmed_end, $k, 1) eq "\\"
3310 0 0 0 $i < @chars and $$charset{$chars[$i]}
3324 0 0 0 $end < @chars and $$charset{$chars[$end]}
3333 0 3 0 $start > 0 and $$charset{$chars[$start - 1]}
3443 2 0 0 $c ne " " and $c ne "\t"
2 0 0 $c ne " " and $c ne "\t" and $c ne "\n"
0 0 0 $c ne " " and $c ne "\t" and $c ne "\n" and $c ne "\r"
3500 5 0 0 $self->_peek eq "\"" and $self->_starts_with("\"\"\"")
3503 5 0 0 $self->_peek eq "'" and $self->_starts_with("'''")
3544 17 0 0 $c ne "#" and $c ne "/"
17 0 0 $c ne "#" and $c ne "/" and $c ne "\r"
3558 0 0 17 $first_iter and $hot_had_ws
3561 0 0 17 defined $c and $c eq "#"
0 0 17 defined $c and $c eq "#" and not $self->_starts_with("###")
0 0 0 defined $c and $c eq "/"
0 0 0 defined $c and $c eq "/" and $self->_starts_with("//")
0 0 0 defined $c and $c eq "/"
0 0 0 defined $c and $c eq "/" and $self->_starts_with("/*")
3594 0 0 0 $c eq "\r" and $self->_starts_with("\r\n")

or 3 conditions

line l !l&&r !l&&!r condition
1294 0 0 0 $cp < $cp_lo or $cp > $cp_hi
1443 0 0 41 $self->{'lite'} or not $self->{'record_forms'}
1588 4 0 89 $c eq "\n" || $c eq "\r"
1705 0 0 2 $c eq '_' || $c =~ /[A-Za-z0-9]/
1717 2 0 0 $self->_consume_eol or $self->_eof
1727 0 4 14 not defined $c or $c eq "\n"
4 0 14 not defined $c or $c eq "\n" or $c eq "\r"
1765 11 0 0 $self->_consume_eol or $self->_eof
1776 0 23 217 not defined $c or $c eq "\n"
23 0 217 not defined $c or $c eq "\n" or $c eq "\r"
1889 0 0 9 $c eq " " or $c eq "\t"
1914 0 0 42 $c eq " " or $c eq "\t"
1941 0 0 0 $nxt eq ' ' || $nxt eq "\t" || $nxt eq "\n" || $nxt eq "\r"
1953 0 0 0 $ch eq "\n" or $ch eq "\r"
1962 0 0 0 $ch eq "\n" or $ch eq "\r"
1975 0 9 50 $p >= $n or substr($s, $p, 1) ne ":"
1978 2 0 0 $nxt eq ' ' || $nxt eq "\t" || $nxt eq "\n" || $nxt eq "\r"
2026 49 5 0 $BULK_RE_CACHE{$indent} //= do { my $sp = $indent == 0 ? "" : "[ ]{$indent}"; qr/\G$sp([A-Za-z_][A-Za-z0-9_-]*):[ ](?:(0|[1-9][0-9]{0,17})|(-[1-9][0-9]{0,17})|(true|false)|"([\x20-\x21\x23-\x5b\x5d-\x7e]*)"|(\[\]|\{\})|(-?(?:0|[1-9][0-9]*)\.[0-9]+))\r?\n/ }
2113 6 0 0 pos $$src_ref // $self->{'pos'}
2188 9 0 0 $c eq ' ' || $c eq "\t"
0 0 0 not defined $c or $c eq "\n"
0 0 0 not defined $c or $c eq "\n" or $c eq "\r"
2193 0 0 9 not defined $c2 or $c2 eq "\n"
0 0 9 not defined $c2 or $c2 eq "\n" or $c2 eq "\r"
2309 93 0 7 $c eq ' ' || $c eq "\t"
2315 0 0 93 $c2 eq ' ' || $c2 eq "\t"
2329 0 0 93 not defined $c2 or $c2 eq "\n"
0 0 93 not defined $c2 or $c2 eq "\n" or $c2 eq "\r"
2342 0 7 0 not defined $c or $c eq "\n"
7 0 0 not defined $c or $c eq "\n" or $c eq "\r"
2413 0 9 0 $p >= $self->{'len'} or substr($self->{'src'}, $p, 1) ne "/"
9 0 0 $p >= $self->{'len'} or substr($self->{'src'}, $p, 1) ne "/" or substr($self->{'src'}, $p, 2) ne "/*"
2416 0 0 0 $p >= $self->{'len'} or substr($self->{'src'}, $p, 2) ne "/*"
2462 0 0 6 $c eq "t" or $c eq "f"
2465 3 3 0 $c eq "+" or $c eq "-"
2519 3 3 18 $first eq '+' || $first eq '-'
2614 0 0 0 substr($s, 0, 1) eq "_" or substr($s, -1, 1) eq "_"
2652 0 0 24 substr($body, 0, 1) eq "_" or substr($body, -1, 1) eq "_"
2674 0 0 11 length $clean > length $bound or length $clean == length $bound and $clean gt $bound
2695 0 0 0 $radix == 16 and $val_lc eq "8000000000000000" or $radix == 8 and $val_lc eq "1000000000000000000000"
0 0 0 $radix == 16 and $val_lc eq "8000000000000000" or $radix == 8 and $val_lc eq "1000000000000000000000" or $radix == 2 and $val_lc eq "1000000000000000000000000000000000000000000000000000000000000000"
2717 0 0 0 substr($rest, 0, 2) eq "0x" or substr($rest, 0, 2) eq "0o"
0 0 0 substr($rest, 0, 2) eq "0x" or substr($rest, 0, 2) eq "0o" or substr($rest, 0, 2) eq "0b"
2728 0 0 0 $c eq "e" or $c eq "E"
2734 0 0 0 @parts != 2 or $parts[0] eq ""
0 0 0 @parts != 2 or $parts[0] eq "" or $parts[1] eq ""
2770 0 0 0 $ip eq "" or $fp eq ""
2805 0 0 0 $m == 1 or $m == 3
0 0 0 $m == 1 or $m == 3 or $m == 5
0 0 0 $m == 1 or $m == 3 or $m == 5 or $m == 7
0 0 0 $m == 1 or $m == 3 or $m == 5 or $m == 7 or $m == 8
0 0 0 $m == 1 or $m == 3 or $m == 5 or $m == 7 or $m == 8 or $m == 10
0 0 0 $m == 1 or $m == 3 or $m == 5 or $m == 7 or $m == 8 or $m == 10 or $m == 12
2806 0 0 0 $m == 4 or $m == 6
0 0 0 $m == 4 or $m == 6 or $m == 9
0 0 0 $m == 4 or $m == 6 or $m == 9 or $m == 11
2808 0 0 0 $y % 4 == 0 && $y % 100 != 0 || $y % 400 == 0
2815 0 0 0 length $s != 10 or substr($s, 4, 1) ne "-"
0 0 0 length $s != 10 or substr($s, 4, 1) ne "-" or substr($s, 7, 1) ne "-"
2823 0 0 0 $mo < 1 or $mo > 12
2824 0 0 0 $d < 1 or $d > _days_in_month($y, $mo)
2829 0 0 0 length $s != 8 or substr($s, 2, 1) ne ":"
0 0 0 length $s != 8 or substr($s, 2, 1) ne ":" or substr($s, 5, 1) ne ":"
2885 0 0 0 substr($after_frac, 0, 1) eq "Z" or substr($after_frac, 0, 1) eq "z"
2891 0 0 0 substr($after_frac, 0, 1) eq "+" or substr($after_frac, 0, 1) eq "-"
2892 0 0 0 length $after_frac < 6 or not substr($after_frac, 1, 1) =~ /\d/
0 0 0 length $after_frac < 6 or not substr($after_frac, 1, 1) =~ /\d/ or not substr($after_frac, 2, 1) =~ /\d/
0 0 0 length $after_frac < 6 or not substr($after_frac, 1, 1) =~ /\d/ or not substr($after_frac, 2, 1) =~ /\d/ or substr($after_frac, 3, 1) ne ":"
0 0 0 length $after_frac < 6 or not substr($after_frac, 1, 1) =~ /\d/ or not substr($after_frac, 2, 1) =~ /\d/ or substr($after_frac, 3, 1) ne ":" or not substr($after_frac, 4, 1) =~ /\d/
0 0 0 length $after_frac < 6 or not substr($after_frac, 1, 1) =~ /\d/ or not substr($after_frac, 2, 1) =~ /\d/ or substr($after_frac, 3, 1) ne ":" or not substr($after_frac, 4, 1) =~ /\d/ or not substr($after_frac, 5, 1) =~ /\d/
2900 0 0 0 $oh > 23 or $om > 59
2967 0 0 3 $c eq "\n" or $c eq "\r"
2979 0 0 0 $esc eq "u" or $esc eq "U"
3010 0 0 24 $c eq "\n" or $c eq "\r"
3047 11 0 0 $self->_consume_eol or $self->_eof
3123 6 0 0 $self->_consume_eol or $self->_eof
3221 0 34 201 not defined $c or $c eq "\n"
34 0 201 not defined $c or $c eq "\n" or $c eq "\r"
3356 0 0 3 $has_star or $has_pipe
0 0 3 $has_star or $has_pipe or $has_lt
0 3 0 $has_star or $has_pipe or $has_lt or $has_gt
3375 0 0 3 @$args < 2 or @$args > 3
3443 0 0 2 not defined $c or $c ne " " and $c ne "\t" and $c ne "\n" and $c ne "\r"
3490 0 0 0 $n eq "/" or $n eq "*"
3527 17 0 0 $c eq " " or $c eq "\t"