Branch Coverage

Config.xs
Criterion Covered Total %
branch 113 134 84.3


line true false branch
46 13492 276 for ( max = ptr + len ; ptr < max; ++ptr ) {
47 2 13490 if ( ! *ptr ) continue; /* skip \0 so we can parse binaries strings */
48 58 13432 if ( *ptr == line_feed ) continue; /* ignore \r */
53 1144 12288 if ( found_comment ) {
54 83 1061 if ( *ptr == eol ) found_comment = 0;
58 5852 6436 if ( (need_field == 0 && found_sep) || (need_field && found_sep == need_field) ) {
5425 427 if ( (need_field == 0 && found_sep) || (need_field && found_sep == need_field) ) {
6436 5425 if ( (need_field == 0 && found_sep) || (need_field && found_sep == need_field) ) {
193 6243 if ( (need_field == 0 && found_sep) || (need_field && found_sep == need_field) ) {
59 568 52 if ( *ptr == ' ' || *ptr == '\t' ) continue;
3 565 if ( *ptr == ' ' || *ptr == '\t' ) continue;
60 383 182 if (need_field == 0) found_sep = 0;
67 876 11357 if ( found_eol ) { /* starting a line */
69 845 31 if ( *ptr == ' ' || *ptr == '\t' || *ptr == line_feed )
837 8 if ( *ptr == ' ' || *ptr == '\t' || *ptr == line_feed )
0 837 if ( *ptr == ' ' || *ptr == '\t' || *ptr == line_feed )
71 83 754 if ( *ptr == comment ) {
85 1747 10364 if ( *ptr == sep ) {
87 1137 610 if (need_field) ++found_sep;
88 628 1119 if ( !end_key ) {
90 383 245 if ( !need_field) found_sep = 1;
93 1137 610 if ( need_field && found_sep == need_field + 2 ) {
142 995 if ( need_field && found_sep == need_field + 2 ) {
98 724 9640 } else if ( *ptr == eol ) { /* only handle the line once we reach a \n */
125 275 449 __PARSE_STRING_LINE_FIELD
133 142 __PARSE_STRING_LINE_FIELD
582 0 __PARSE_STRING_LINE_FIELD
724 0 __PARSE_STRING_LINE_FIELD
0 724 __PARSE_STRING_LINE_FIELD
600 124 __PARSE_STRING_LINE_FIELD
594 6 __PARSE_STRING_LINE_FIELD
577 63 __PARSE_STRING_LINE_FIELD
535 42 __PARSE_STRING_LINE_FIELD
22 513 __PARSE_STRING_LINE_FIELD
21 492 __PARSE_STRING_LINE_FIELD
3 489 __PARSE_STRING_LINE_FIELD
531 63 __PARSE_STRING_LINE_FIELD
489 42 __PARSE_STRING_LINE_FIELD
133 41 235 if ( start_key ) {
134 0 41 __PARSE_STRING_LINE_FIELD
0 0 __PARSE_STRING_LINE_FIELD
41 0 __PARSE_STRING_LINE_FIELD
41 0 __PARSE_STRING_LINE_FIELD
0 41 __PARSE_STRING_LINE_FIELD
28 13 __PARSE_STRING_LINE_FIELD
28 0 __PARSE_STRING_LINE_FIELD
28 0 __PARSE_STRING_LINE_FIELD
28 0 __PARSE_STRING_LINE_FIELD
0 28 __PARSE_STRING_LINE_FIELD
0 28 __PARSE_STRING_LINE_FIELD
0 28 __PARSE_STRING_LINE_FIELD
28 0 __PARSE_STRING_LINE_FIELD
28 0 __PARSE_STRING_LINE_FIELD
146 294 0 if ( sv && SvPOK(sv) ) {
292 2 if ( sv && SvPOK(sv) ) {
149 2 290 if ( items > 3 )
151 194 96 if ( items >= 2 ) {
153 194 0 if ( !SvOK(sv_field) || !looks_like_number(sv_field) )
2 192 if ( !SvOK(sv_field) || !looks_like_number(sv_field) )
156 3 189 if ( field < 0 )
159 50 235 if ( items == 3 ) {
163 50 0 if ( !SvOK(sv_sep) || !SvPOK(sv_sep) )
2 48 if ( !SvOK(sv_sep) || !SvPOK(sv_sep) )
166 3 45 if ( sep_len != 1 )
168 43 2 if ( sep_str[0] == '\n' || sep_str[0] == '\r' || sep_str[0] == '\0' )
42 1 if ( sep_str[0] == '\n' || sep_str[0] == '\r' || sep_str[0] == '\0' )
1 41 if ( sep_str[0] == '\n' || sep_str[0] == '\r' || sep_str[0] == '\0' )