Condition Coverage

lib/HTTP/Promise/Message.pm
Criterion Covered Total %
condition 108 209 51.6


and 3 conditions

line !l l&&!r l&&r condition
39 57 5 34 @_ == 1 and ref $_[0] eq "HASH"
15 47 0 @_ >= 1 and $self->_is_array($_[0]) || $self->_is_a($_[0], 'HTTP::Promise::Headers') || $self->_is_a($_[0], 'HTTP::Headers') || !defined($_[0])
15 0 1 @_ and ref $_[0] ne "HASH"
60 13 4 29 !ref($_[0]) || ref $_[0] && overload::Method($_[0], '""') || $self->_is_a($_[0], 'HTTP::Promise::Body') || $self->_is_a($_[0], 'HTTP::Promise::Body::Form') and @_ == 1 || @_ > 2 && @_ % 2 && ref $_[1] ne 'HASH' || @_ == 2 && ref $_[1] eq 'HASH'
105 29 66 0 not defined $content and $headers->exists("Content")
212 1 0 0 $ent->body and not $ent->body->is_empty
1 1 0 $ent->parts->is_empty and ($ent->body and not $ent->body->is_empty)
235 0 4 0 defined $this and !ref($this) || $self->_is_scalar($this) && overload::Method($this, '""')
275 0 0 0 $self->can("uri") and $uri = $self->uri
0 0 0 $self->can("uri") and $uri = $self->uri and $uri->query
0 0 0 defined $payload && length $payload
0 0 0 $self->can("uri") and $uri = $self->uri and $uri->query and not defined $payload && length $payload
355 0 2 1 $self->entity and $self->entity->body
370 0 2 7 $ent = $self->entity and $opts->{'clone_entity'}
384 8 0 1 defined $proto and length $proto
385 0 8 1 defined $vers and length $vers
399 14 1 1 ref $_ and not $self->_is_scalar($_)
438 0 14 1 @_ == 1 && $self->_is_scalar($_[0])
552 3 0 15 exists $opts->{'binmode'} and length $opts->{'binmode'}
3 0 15 exists $opts->{'binmode'} and length $opts->{'binmode'} and lc substr($opts->{'binmode'}, 0, 3) eq "utf"
627 0 7 4 $ent and $ent->body
736 94 194 3 $self->_is_a($self->{'entity'}, "HTTP::Promise::Entity") and not $self->{'entity'}{'http_message'}
783 0 0 2 defined $enc and length $enc
802 12 0 0 not exists $opts->{'debug'} and ref $self
838 0 8 6 $ent and $ent->parts->is_empty
8 3 3 $ent and $ent->parts->is_empty and $ent->body
11 1 2 $ent and $ent->parts->is_empty and $ent->body and not $ent->body->is_empty
0 8 4 $ent and $ent->parts->is_empty
8 3 1 $ent and $ent->parts->is_empty and $ent->body
11 0 1 $ent and $ent->parts->is_empty and $ent->body and $ent->body->is_empty
940 0 0 2 defined $type and length $type
981 2 0 0 not $def and warnings::enabled()
1078 3 0 0 scalar @args == 1 && ref $args[0] eq 'ARRAY'
1079 0 0 3 defined $ref && ref $ref eq 'ARRAY' && scalar @$ref > 1
1091 0 0 3 exists $self->{'headers'} and defined $self->{'headers'}
0 0 3 exists $self->{'headers'} and defined $self->{'headers'} and ref $self->{'headers'}
0 0 3 exists $self->{'headers'} and defined $self->{'headers'} and ref $self->{'headers'} and $self->{'headers'}->isa("HTTP::Promise::Headers")
1099 0 0 3 exists $self->{'entity'} and exists $self->{'entity'}{'headers'}

or 2 conditions

line l !l condition
184 1 0 $ent->new_body('string', $_[0]) || (return $self->pass_error($ent->error))
212 3 1 $self->content_type || ''
249 0 0 'HTTP::Promise::Entity'->new('headers', $this->headers, 'debug', $self->debug) || (return $self->pass_error)
271 0 0 $type // ""
307 0 0 $payload // ""
333 0 26 $self->debug // 0
342 12 0 $self->UNIVERSAL::can($method) || die(qq[AUTOLOAD inconsistency error for dynamic sub "$method".])
365 2 7 $opts->{'clone_entity'} //= 1
427 15 0 $body->open('+>', {'binmode', 'raw', 'autoflush', 1}) || (return $self->pass_error($body->error))
485 2 0 'HTTP::Promise::Stream'->decodable('browser') || (return $self->error('HTTP::Promise::Stream'->pass_error))
496 5 0 $self->entity || (return 1)
499 4 1 $ent->decode_body($encodings) || (return $self->pass_error($ent->error))
509 20 0 $self->entity || (return 0)
511 20 0 $ent->body || (return 0)
517 10 1 $ent->decode_body($ce->split(qr/[[:blank:]\h]*\,[[:blank:]\h]*/)->reverse->object, scalar keys %$opts ? $opts : ()) || (return $self->pass_error($ent->error))
527 1 19 $opts->{'charset_strict'} //= 0
629 4 0 $ent->body->open('<', {'binmode', 'raw'}) || (return $self->pass_error($ent->error))
685 3 6 $opts->{'update_header'} //= 1
704 6 0 $self->entity || (return 1)
706 5 1 $ent->encode_body($encodings) || (return $self->pass_error($ent->error))
856 0 0 'HTTP::Promise::Entity'->new('headers', $self->headers, 'debug', $self->debug) || (return $self->pass_error('HTTP::Promise::Entity'->error))
865 3 2 $self->content_type || ''
887 0 0 'HTTP::Promise::Entity'->new('headers', $_->headers, 'debug', $self->debug) || (return $self->pass_error)
936 2 0 $self->entity || (return $self->error('No entity object is set.'))
947 0 0 $body->open('+<', {'binmode', 'raw'}) || (return $self->pass_error($ent->body->error))
950 0 0 'HTTP::Promise::IO'->new($fh, 'max_read_buffer', 4096, 'debug', $self->debug) || (return $self->pass_error('HTTP::Promise::IO'->error))
960 0 0 $parser->parse_multi_part('entity', $ent, 'reader', $reader) || (return $parser->pass_error)
968 2 0 $body->open('+<', {'binmode', 'raw'}) || (return $self->pass_error($ent->body->error))
971 2 0 'HTTP::Promise::IO'->new($fh, 'max_read_buffer', 4096, 'debug', $self->debug) || (return $self->pass_error('HTTP::Promise::IO'->error))
986 2 0 $parser->parse($fh, 'reader', $reader) || (return $self->pass_error($parser->error))
994 1 0 'HTTP::Promise::Request'->new(@$def{'method', 'uri'}, $headers, {'protocol', $def->{'protocol'}, 'version', $def->{'http_version'}}) || (return $self->pass_error('HTTP::Promise::Request'->error))
999 1 0 'HTTP::Promise::Response'->new(@$def{'code', 'status'}, $headers, {'protocol', $def->{'protocol'}, 'version', $def->{'http_version'}}) || (return $self->pass_error('HTTP::Promise::Response'->error))
1014 0 0 $body->open('+<', {'binmode', 'raw'}) || (return $self->pass_error($ent->body->error))
1017 0 0 $parser->parse($fh) || (return $self->pass_error($parser->error))

or 3 conditions

line l !l&&r !l&&!r condition
39 16 1 1 $self->_is_array($_[0]) || $self->_is_a($_[0], 'HTTP::Promise::Headers') || $self->_is_a($_[0], 'HTTP::Headers') || !defined($_[0])
60 0 0 13 !ref($_[0]) || ref $_[0] && overload::Method($_[0], '""') || $self->_is_a($_[0], 'HTTP::Promise::Body') || $self->_is_a($_[0], 'HTTP::Promise::Body::Form')
0 26 1 @_ == 1 || @_ > 2 && @_ % 2 && ref $_[1] ne 'HASH' || @_ == 2 && ref $_[1] eq 'HASH'
86 16 0 29 $self->_is_a($headers, "HTTP::Promise::Headers") or $self->_is_a($headers, "HTTP::Headers")
235 0 0 4 !ref($this) || $self->_is_scalar($this) && overload::Method($this, '""')
495 1 0 5 not $ce or $ce->is_empty
703 1 0 6 not $encodings or $encodings->is_empty
1030 0 0 0 not $self->entity or $_[1]
1079 0 0 0 ref $self || $self