Branch Coverage

ByteString.xs
Criterion Covered Total %
branch 146 392 37.2


line true false branch
26 0 50 if( visited_p >= visited_capacity ){
28 0 0 Renew(visited, visited_capacity, SV*);
35 267 34 for(unsigned char * str_end=str+len; str!=str_end; ++str){
36 0 267 if( *str < 0x20 ){
37 0 0 switch( *str ){
50 3 0 if( str!=str_begin && *(str-1)=='<' )
1 2 if( str!=str_begin && *(str-1)=='<' )
60 0 0 if( ch>9 )
66 0 0 if( ch<='9' )
68 0 0 if( ch<='Z' )
76 267 34 for(unsigned char * str_end=str+len; str!=str_end; ++str){
77 0 267 if( *str < 0x20 ){
110 3 0 if( str!=str_begin && *(str-1)=='<' )
1 2 if( str!=str_begin && *(str-1)=='<' )
156 9 1 if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' )
0 9 if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' )
0 0 if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' )
0 0 if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' )
162 53 8 while( str!=str_end && isSPACE(*str) )
0 53 while( str!=str_end && isSPACE(*str) )
168 2 0 return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}';
2 0 return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}';
2 0 return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}';
0 2 return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}';
0 0 return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}';
172 2 0 return !isSPACE(ch) && ch!=':';
2 0 return !isSPACE(ch) && ch!=':';
176 0 3 if( str==str_end )
181 3 0 if( *str=='+' || *str=='-' ){
0 3 if( *str=='+' || *str=='-' ){
186 3 0 if( str!=str_end && isDIGIT(*str) )
1 2 if( str!=str_end && isDIGIT(*str) )
188 4 0 while( str!=str_end && isDIGIT(*str) ){
1 3 while( str!=str_end && isDIGIT(*str) ){
192 3 0 if( str!=str_end && *str=='.' ){
0 3 if( str!=str_end && *str=='.' ){
196 3 0 if( str!=str_end && isDIGIT(*str) )
0 3 if( str!=str_end && isDIGIT(*str) )
198 3 0 while( str!=str_end && isDIGIT(*str) ){
0 3 while( str!=str_end && isDIGIT(*str) ){
202 2 1 if( !has_digit )
205 1 0 if( str!=str_end && (*str=='e' || *str=='E') ){
1 0 if( str!=str_end && (*str=='e' || *str=='E') ){
0 1 if( str!=str_end && (*str=='e' || *str=='E') ){
208 0 0 if( str!=str_end && (*str=='+' || *str=='-') ){
0 0 if( str!=str_end && (*str=='+' || *str=='-') ){
0 0 if( str!=str_end && (*str=='+' || *str=='-') ){
212 0 0 while( str!=str_end && isDIGIT(*str) ){
0 0 while( str!=str_end && isDIGIT(*str) ){
222 2 1 if( len<=0 ){
227 1 0 if( !*out ){
231 0 0 else if( *out_capacity_end - *out < len + 1 ){
240 1 0 if( *str=='+' || *str=='-' ){
0 1 if( *str=='+' || *str=='-' ){
245 1 1 while( len-- )
251 0 4 if( str==str_end )
253 1 3 if( *str=='"' || *str=='\'' ){
0 1 if( *str=='"' || *str=='\'' ){
258 0 28 if( str==str_end )
260 3 25 if( *str==delimiter )
262 0 25 if( *str=='\\' ){
268 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
270 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
272 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
274 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
277 0 0 if( d <= 0x7f )
279 0 0 else if( d <= 0x7ff )
281 0 0 else if( d <= 0xffff )
292 0 0 if( *(str-1)==delimiter )
306 1 1 while( str!=str_end && is_key(*str) ){
1 0 while( str!=str_end && is_key(*str) ){
315 0 7 if( str==str_end )
317 0 7 if( *str=='"' || *str=='\'' ){
0 0 if( *str=='"' || *str=='\'' ){
322 1 88 if( str==str_end )
324 6 82 if( *str==delimiter )
326 4 78 if( *str=='\\' ){
332 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
334 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
336 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
338 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
341 0 0 if( d <= 0x7f )
343 0 0 else if( d <= 0x7ff )
345 0 0 else if( d <= 0xffff )
356 1 1 if( *(str-1)==delimiter )
374 0 4 if( len==-1 ){
379 4 0 if( !*out ){
383 0 0 else if( *out_capacity_end - *out < len + 1 ){
392 1 3 if( *str=='"' || *str=='\'' ){
0 1 if( *str=='"' || *str=='\'' ){
396 3 25 if( *str==delimiter )
398 0 25 if( *str=='\\' ){
404 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
406 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
408 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
410 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
413 0 0 if( d <= 0x7f )
415 0 0 else if( d <= 0x7ff ){
419 0 0 else if( d <= 0xffff ){
455 0 0 if( *(str-1)!=delimiter )
465 1 1 while( str!=str_end && is_key(*str) )
1 0 while( str!=str_end && is_key(*str) )
473 1 6 if( len==-1 ){
478 6 0 if( !*out ){
482 0 0 else if( *out_capacity_end - *out < len + 1 ){
494 6 75 if( *str==delimiter )
496 4 71 if( *str=='\\' ){
502 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
504 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
506 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
508 0 0 if( str!=str_end && isXDIGIT(*str) )
0 0 if( str!=str_end && isXDIGIT(*str) )
511 0 0 if( d <= 0x7f )
513 0 0 else if( d <= 0x7ff ){
517 0 0 else if( d <= 0xffff ){
553 1 1 if( *(str-1)!=delimiter )
566 0 23 if( str==str_end )
576 0 10 if( str==str_end )
578 0 10 if( *str == ']' )
583 3 7 if( elem==NULL )
588 0 7 if( str==str_end )
590 4 3 if( *str == ']' )
592 3 0 if( *str==',' )
604 0 4 if( str==str_end ){
605 0 0 if( key_buffer )
609 0 4 if( *str=='}' ){
610 0 0 if( key_buffer )
615 0 4 if( !key_end ){
616 0 0 if( key_buffer )
623 3 1 if( *str==':' )
625 1 3 if( elem==NULL ){
632 0 3 if( str==str_end ){
636 3 0 if( *str=='}' ){
640 0 0 if( *str==',' )
652 1 6 if( !value_end )
663 5 0 if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){
2 3 if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){
2 0 if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){
664 2 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 2 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
0 0 if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){
668 2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
2 0 if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){
673 3 0 if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){
0 3 if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){
0 0 if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){
674 0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
0 0 if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){
682 1 2 if( value_end ){
714 0 15 if( cur - SvPVX(out_sv) != need_size )
729 0 4 if( cur - SvPVX(out_sv) != need_size )
744 0 1 if( cur - SvPVX(out_sv) != need_size )
759 0 0 if( cur - SvPVX(out_sv) + 1 != need_size )
771 9 0 str = (unsigned char*) SvPV(json, len);
774 3 6 if( str_end != str_adv ){
775 1 2 if( warn2die )
783 1 5 else if( out==NULL ){
784 0 1 if( warn2die )
800 1 0 str = (unsigned char*) SvPV(json, len);
803 0 1 if( str_end != str_adv ){
807 0 1 else if( out==NULL )
814 0 1 Newx(visited, visited_capacity, SV*);