Condition Coverage

blib/lib/Atomic/Pipe.pm
Criterion Covered Total %
condition 121 236 51.2


and 3 conditions

line !l l&&!r l&&r condition
27 0 0 38 "POSIX"->can("PIPE_BUF") and eval { do { &POSIX::PIPE_BUF() } }
34 0 0 38 "POSIX"->can("SSIZE_MAX") and eval { do { &POSIX::SSIZE_MAX() } }
49 0 0 38 $can_thread &&= $] >= "5.008001"
50 0 38 0 $can_thread &&= $Atomic::Pipe::Config{'useithreads'}
53 38 0 0 $can_thread and $] == "5.01"
38 0 0 $can_thread and $] == "5.01" and $Atomic::Pipe::Config{'ccname'} eq "gcc"
0 0 0 $can_thread and $] == "5.01" and $Atomic::Pipe::Config{'ccname'} eq "gcc" and $Atomic::Pipe::Config{'gccversion'}
55 0 0 0 $parts[0] == 4 and $parts[1] >= 8
58 38 0 0 $can_thread &&= !$INC{'Devel/Cover.pm'}
163 25149 0 775042 $self->{'in_buffer_size'} and $self->{'in_buffer_size'} >= $size
166 1 0 0 $params{'eof_invalid'} and $self->{'eof'}
194 29 1 0 defined $buffer->{'lines'} and length $buffer->{'lines'}
195 29 1 0 defined $buffer->{'lines'} and length $buffer->{'burst'}
347 86 15 0 $self->eof and keys %{$$self{'state'}{'buffers'};} || keys %{$$self{'state'}{'parts'};}
355 37 0 8 $self->{'eof'} and not $self->{'in_buffer_size'}
37 0 8 $self->{'eof'} and not $self->{'in_buffer_size'} and defined $line
0 0 8 $self->{'eof'} and not $self->{'in_buffer_size'} and defined $line and length $line
358 35 0 2 $params{'peek_line'} and defined $line
35 0 2 $params{'peek_line'} and defined $line and length $line
365 0 0 0 $self->{'eof'} and not $self->{'in_buffer_size'}
410 26 0 2 $peek and not $self->{'eof'}
530 5 0 5 $self->{'rh'} and not $self->{'wh'}
0 0 5 $self->{'wh'} and not $self->{'rh'}
540 0 0 0 $r and $w
582 0 0 4 $self->{'rh'} and not $self->{'wh'}
588 0 0 4 $self->{'wh'} and not $self->{'rh'}

or 2 conditions

line l !l condition
112 0 0 $self->{'read_size'} ||= 65536
124 25233 29 $self->{'in_buffer_size'} //= 0
126 0 25262 $self->{'read_size'} || 65536
205 4 0 fcntl($fh, 3, 0) // (return undef)
319 0 30 $self->{'burst_prefix'} //= "\16"
320 0 30 $self->{'burst_postfix'} //= "\17"
321 0 30 $self->{'message_key'} //= "\20"
334 41 11 $self->{'mixed_buffer'} //= {"lines", "", "burst", "", "in_burst", 0, "in_message", 0, "do_extra_loop", 0, "strip_term", 0}
375 10 0 $self->_get_from_buffer(1, "eof_invalid", "EOF before message terminator") // (return)
382 16 0 $self->_peek_from_buffer(1, "eof_invalid", "Incomplete burst data received before end of pipe") // (next)
391 6 0 $buffer->{'burst'} //= ""
440 0 0 $buffer->{$key} // ""
460 0 0 'Win32::API'->new('kernel32', 'PeekNamedPipe', 'NPIPPP', 'N') || die(q[Can't load PeekNamedPipe from kernel32.dll])
480 0 0 'Win32::API'->new('kernel32', 'SetNamedPipeHandleState', 'NPPP', 'N') || die(q[Can't load SetNamedPipeHandleState from kernel32.dll])
640 3 32 $_[0]{'burst_prefix'} // ""
3 32 $_[0]{'burst_postfix'} // ""
657 3 1 $self->fits_in_burst($data) // (return undef)
659 1 2 $self->{'out_buffer'} //= []
681 592321 100024 ($params{'blocking'} // $self->{'write_blocking'}) // 1
683 692345 0 $self->{'out_buffer'} // (return)
706 5 1246388 $self->{'burst_prefix'} // ""
707 5 1246388 $self->{'burst_postfix'} // ""
715 1 1246392 $! == 32 or 0
720 846334 400058 $! == 11 or 0
723 0 0 $wrote //= ""
735 2 30 $self->{'message_key'} // ""
736 2 30 $self->{'burst_prefix'} // ""
737 2 30 $self->{'burst_postfix'} // ""
748 2 100027 $self->{'message_key'} // ""
765 4 12 $self->{'out_buffer'} //= []
775 400021 20 $self->{'out_buffer'} //= []
797 100028 22 $self->{'state'} //= {}
810 400077 0 $self->_get_from_buffer($key->{'size'}, "eof_invalid", "EOF before end of message") // (return)
814 300034 100043 $state->{'parts'}{$tag} //= []

or 3 conditions

line l !l&&r !l&&!r condition
55 0 0 0 $parts[0] > 4 or $parts[0] == 4 and $parts[1] >= 8
105 3 3 0 $self->{'invalid_state'} //= @_ ? shift() : "Unknown Error"
194 15 0 30 $buffer->{'lines'} or defined $buffer->{'lines'} and length $buffer->{'lines'}
195 0 0 30 $buffer->{'burst'} or defined $buffer->{'lines'} and length $buffer->{'burst'}
254 2 0 0 $class->_fh_mode($ifh) // croak("Could not determine filehandle mode, please specify '>&' or '<&'")
3 2 0 $mode //= $class->_fh_mode($ifh) // croak("Could not determine filehandle mode, please specify '>&' or '<&'")
255 5 0 0 $class->_mode_to_dir($mode) // croak("Invalid mode: $mode")
267 4 0 0 $class->_mode_to_dir($mode) // croak("Invalid mode: $mode")
328 52 0 0 $self->{'rh'} // croak("Not a read handle")
330 52 0 0 $self->{'burst_prefix'} // croak("missing 'burst_prefix', not in mixed_data_mode")
331 52 0 0 $self->{'burst_postfix'} // croak("missing 'burst_postfix', not in mixed_data_mode")
332 52 0 0 $self->{'message_key'} // croak("missing 'message_key', not in mixed_data_mode")
347 1 0 14 keys %{$$self{'state'}{'buffers'};} || keys %{$$self{'state'}{'parts'};}
349 59 0 41 $buffer->{'lines'} or length $buffer->{'lines'}
409 31 0 28 $self->{'in_buffer_size'} or $self->fill_buffer
460 0 0 0 $peek_named_pipe //= 'Win32::API'->new('kernel32', 'PeekNamedPipe', 'NPIPPP', 'N') || die(q[Can't load PeekNamedPipe from kernel32.dll])
480 0 0 0 $set_named_pipe_handle_state //= 'Win32::API'->new('kernel32', 'SetNamedPipeHandleState', 'NPPP', 'N') || die(q[Can't load SetNamedPipeHandleState from kernel32.dll])
541 0 0 0 $r or $w
548 0 0 0 $self->{'wh'} // $self->{'rh'}
557 3 0 0 $self->{'wh'} // $self->{'rh'}
570 0 0 0 $val || $ONE_MB
640 0 3 32 $_[0]{'delimiter_size'} //= &bytes::length(scalar($_[0]{'burst_prefix'} // "")) + &bytes::length(scalar($_[0]{'burst_postfix'} // ""))
647 5 1 2 $self->{'delimiter_size'} // $self->delimiter_size
681 0 592321 100024 $params{'blocking'} // $self->{'write_blocking'}
689 654064 15 592314 $blocking or defined $got
709 5 0 1246388 length $prefix or length $postfix
721 0 0 400058 not $wrote or $RETRY_ERRNO{0 + $!}
749 99997 32 0 $self->{'adjusted_dsize'} // $self->_adjusted_dsize
763 4 0 12 $self->{'delimiter_size'} // $self->delimiter_size
774 400021 2 18 $self->{'delimiter_size'} // $self->delimiter_size