Condition Coverage

blib/lib/PDF/Create.pm
Criterion Covered Total %
condition 110 144 76.3


and 2 conditions

line l !l condition
832 0 30 defined $outline->{'Kids'} and scalar @{$outline->{'Kids'};}
920 0 38 defined $page->{'Kids'} && scalar @{$page->{'Kids'};}

and 3 conditions

line !l l&&!r l&&r condition
191 8 0 26 exists $params{'PageMode'} and defined $params{'PageMode'}
202 31 0 2 exists $params{'Debug'} and defined $params{'Debug'}
205 1 0 1 $params{'Debug'} =~ /^\d+$/ and $params{'Debug'} >= 0
406 0 124 3 defined $value and not exists $valid_font_parameters{$key}{$value}
562 0 1 14 defined $self->{'fh'} and defined $self->{'filename'}
943 0 1 0 $k eq 'xobjects' and do { my $l = {}; map {$$l{"Image$_"} = $self->indirect_ref(@{$$self{'xobj'}{$_};});} keys %{$$page{'resources'}{'xobjects'};}; $resources->{'XObject'} = $self->dictionary(%$l) }
20 0 19 $k eq 'ProcSet' and do { my $l = []; if (ref $v eq 'ARRAY') { map {push @$l, $self->name($_);} @$v; } else { push @$l, $self->name($v); } ; $resources->{'ProcSet'} = $self->array(@$l) }
1 0 19 $k eq 'fonts' and do { my $l = {}; map {$$l{"F$_"} = $self->indirect_ref(@{$$self{'fontobj'}{$_};});} keys %{$$page{'resources'}{'fonts'};}; $resources->{'Font'} = $self->dictionary(%$l) }
1132 14 0 533 defined $page and defined $self->{'stream_page'}
14 4 529 defined $page and defined $self->{'stream_page'} and $page == $self->{'current_page'}
4 9 520 defined $page and defined $self->{'stream_page'} and $page == $self->{'current_page'} and $self->{'stream_page'} == $page
1309 0 27 158 defined $_[0][1] and ref $_[0][1] eq 'HASH'
27 34 124 defined $_[0][1] and ref $_[0][1] eq 'HASH' and defined $_[0][1]{'Type'}
1311 51 0 134 defined $name and defined $self->{'reservations'}{$name}
1 0 50 defined $type and defined $self->{'reservations'}{$type}
1472 4959 0 1243 $type eq 'null' || $type eq 'number' and do { 1 }
2044 0 2915 $type eq 'cr' and do { $val = "\n" }
2040 0 4 $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) }
2032 0 8 $type eq 'verbatim' and do { $val = "$val" }
1955 0 77 $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" }
1955 0 0 $type eq 'number' and do { $val = "$val" }
827 0 1128 $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" }
702 85 40 $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' }
505 142 55 $type eq 'dictionary' and do { my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $val = $s . '>>' }
319 107 79 $type eq 'object' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' obj'; $s .= &encode('cr'); $s .= &encode($val->[2][0], $val->[2][1]); $s .= &encode('cr'); $val = $s . 'endobj' }
4 0 315 $type eq 'ref' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' R'; $val = $s }
1 0 3 $type eq 'stream' and do { my $data = delete $val->{'Data'}; my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $s .= '>>' . &encode('cr') . 'stream' . &encode('cr'); $s .= $data . &encode('cr'); $val = $s . 'endstream' . &encode('cr') }

or 2 conditions

line l !l condition
213 25 7 $params{'Version'} || '1.2'
413 40 2 $params{'Subtype'} || 'Type1'
42 0 $params{'Encoding'} || 'WinAnsiEncoding'
40 2 $params{'BaseFont'} || 'Helvetica'

or 3 conditions

line l !l&&r !l&&!r condition
208 0 32 0 ref $this || $this
343 27 23 0 $params{'Parent'} || $self->{'pages'}
477 18 16 0 $params{'Parent'} || $self->{'outlines'}
754 1 0 0 $filename =~ /\.jpg$/i or $filename =~ /\.jpeg$/i
943 19 19 1 $k eq 'ProcSet' and do { my $l = []; if (ref $v eq 'ARRAY') { map {push @$l, $self->name($_);} @$v; } else { push @$l, $self->name($v); } ; $resources->{'ProcSet'} = $self->array(@$l) } or $k eq 'fonts' and do { my $l = {}; map {$$l{"F$_"} = $self->indirect_ref(@{$$self{'fontobj'}{$_};});} keys %{$$page{'resources'}{'fonts'};}; $resources->{'Font'} = $self->dictionary(%$l) }
1472 92 1151 4959 $type eq 'null' || $type eq 'number'
1243 2915 2044 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" }
2915 4 2040 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) }
4 8 2032 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" }
8 77 1955 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" }
77 0 1955 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" }
0 1128 827 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" }
1128 40 787 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" } or $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' }
125 55 647 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" } or $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' } or $type eq 'dictionary' and do { my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $val = $s . '>>' }
197 79 426 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" } or $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' } or $type eq 'dictionary' and do { my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $val = $s . '>>' } or $type eq 'object' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' obj'; $s .= &encode('cr'); $s .= &encode($val->[2][0], $val->[2][1]); $s .= &encode('cr'); $val = $s . 'endobj' }
186 315 4 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" } or $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' } or $type eq 'dictionary' and do { my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $val = $s . '>>' } or $type eq 'object' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' obj'; $s .= &encode('cr'); $s .= &encode($val->[2][0], $val->[2][1]); $s .= &encode('cr'); $val = $s . 'endobj' } or $type eq 'ref' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' R'; $val = $s }
315 3 1 $type eq 'null' || $type eq 'number' and do { 1 } or $type eq 'cr' and do { $val = "\n" } or $type eq 'boolean' and do { $val = $val eq 'true' ? $val : ($val eq 'false' ? $val : ($val eq '0' ? 'false' : 'true')) } or $type eq 'verbatim' and do { $val = "$val" } or $type eq 'string' and do { $val = '' unless defined $val; $val = "($val)" } or $type eq 'number' and do { $val = "$val" } or $type eq 'name' and do { $val = '' unless defined $val; $val = "/$val" } or $type eq 'array' and do { my $s = '['; foreach my $v (@$val) { $s .= &encode($v->[0], $v->[1]) . ' '; } ; chop $s; $val = $s . ']' } or $type eq 'dictionary' and do { my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $val = $s . '>>' } or $type eq 'object' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' obj'; $s .= &encode('cr'); $s .= &encode($val->[2][0], $val->[2][1]); $s .= &encode('cr'); $val = $s . 'endobj' } or $type eq 'ref' and do { my $s = &encode('number', $val->[0]) . ' ' . &encode('number', $val->[1]) . ' R'; $val = $s } or $type eq 'stream' and do { my $data = delete $val->{'Data'}; my $s = '<<' . &encode('cr'); foreach my $v (keys %$val) { $s .= &encode('name', $v) . ' '; $s .= &encode(do { $$val{$v} }->[0], do { $$val{$v} }->[1]); $s .= &encode('cr'); } ; $s .= '>>' . &encode('cr') . 'stream' . &encode('cr'); $s .= $data . &encode('cr'); $val = $s . 'endstream' . &encode('cr') }