Branch Coverage

blib/lib/Excel/Writer/XLSX/Chart.pm
Criterion Covered Total %
branch 592 668 88.6


line true false branch
51 0 405 if $@
154 374 20 if $self->{'_embedded'}
183 0 943 unless (exists $arg{'values'})
187 0 943 if ($self->{'_requires_category'} and not exists $arg{'categories'})
191 0 943 if (@{$self->{'_series'};} == 255)
214 7 936 if ($arg{'border'})
228 56 887 if ($pattern)
233 11 932 if ($gradient)
265 13 930 if ($x2_axis or $y2_axis)
270 7 936 if (defined $arg{'gap'})
271 2 5 if ($y2_axis) { }
280 7 936 if (defined $arg{'overlap'})
281 2 5 if ($y2_axis) { }
471 6 0 defined $_[0] ? :
473 2 4 if ($style_id < 0 or $style_id > 48)
492 0 6 unless $option
501 0 6 unless (exists $valid{$option})
535 1 2 if $args{'width'}
536 1 2 if $args{'height'}
537 1 2 if $args{'x_scale'}
538 1 2 if $args{'y_scale'}
539 1 2 if $args{'x_offset'}
540 1 2 if $args{'y_offset'}
566 2 1 if defined $args{'horizontal'}
567 2 1 if defined $args{'vertical'}
568 2 1 if defined $args{'outline'}
569 2 1 if defined $args{'show_keys'}
588 0 3 if (defined $args{'up'}{'border'})
591 1 2 if (defined $args{'down'}{'border'})
712 997 1420 defined $arg{'visible'} ? :
717 781 1131 if ($arg{'major_gridlines'} and $arg{'major_gridlines'}{'visible'})
723 9 0 if ($arg{'minor_gridlines'} and $arg{'minor_gridlines'}{'visible'})
730 11 2406 if (defined $arg{'display_units_visible'}) { }
738 495 1922 if (defined $axis->{'_position'})
743 3 2414 if (defined $axis->{'_position_axis'})
744 2 1 if ($axis->{'_position_axis'} eq 'on_tick') { }
1 0 elsif ($axis->{'_position_axis'} eq 'between') { }
758 4 2413 if ($arg{'date_axis'})
763 1 2416 if ($arg{'text_axis'})
802 4842 52 unless $args
818 8 44 if $font->{'_size'}
821 21 31 if ($font->{'_rotation'})
841 1853 33 unless ref $data
861 81 3303 if (defined $name)
863 1 80 if (ref $name eq 'ARRAY') { }
19 61 elsif ($name =~ /^=[^!]+!\$/) { }
894 0 255 unless defined $data
895 0 255 if @$data == 0
897 3 252 if (ref $data->[0] eq 'ARRAY')
903 1 1219 unless defined $token
904 9 1210 unless $token =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/
932 4042 1225 unless $formula
939 1106 119 if (not exists $self->{'_formula_ids'}{$formula}) { }
953 114 5 unless (defined $self->{'_formula_data'}[$id])
974 177 61 if (defined $color and $color =~ /^#[0-9a-fA-F]{6}$/)
982 0 61 unless ($index)
1050 2 0 if (exists $patterns{$value}) { }
1085 1 0 if (exists $weights{$value}) { }
1107 4242 49 unless $line
1129 25 24 if (defined $dash_type)
1130 25 0 if (exists $dash_types{$dash_type}) { }
1156 3413 46 unless $fill
1176 978 58 unless $args
1179 0 58 unless ($args->{'pattern'})
1185 0 58 unless ($args->{'fg_color'})
1251 58 0 if (exists $types{$pattern_type}) { }
1260 49 9 if (not $args->{'bg_color'}) { }
1292 1023 13 unless $args
1295 0 13 if (not $args->{'colors'} or ref $args->{'colors'} ne 'ARRAY')
1301 0 13 if (@{$args->{'colors'};} < 2)
1308 2 11 if ($args->{'positions'}) { }
1311 0 2 if (@{$args->{'positions'};} != @{$args->{'colors'};})
1318 0 5 if ($pos < 0 or $pos > 100)
1329 1 10 if (@{$args->{'colors'};} == 2) { }
9 1 elsif (@{$args->{'colors'};} == 3) { }
1 0 elsif (@{$args->{'colors'};} == 4) { }
1345 2 11 if (defined $args->{'angle'}) { }
1348 0 2 if ($angle < 0 or $angle > 359.9)
1360 3 10 if (defined $args->{'type'}) { }
1363 0 3 unless (exists $types{$type})
1388 932 11 if not $marker and ref $marker ne 'HASH'
1413 11 0 if (defined $marker_type)
1414 6 5 if ($marker_type eq 'automatic')
1418 11 0 if (exists $types{$marker_type}) { }
1431 0 11 if ($marker->{'border'})
1445 0 11 if ($pattern)
1450 0 11 if ($gradient)
1476 930 13 if not $trendline and ref $trendline ne 'HASH'
1493 13 0 if (exists $types{$trend_type}) { }
1505 0 13 if ($trendline->{'border'})
1519 0 13 if ($pattern)
1524 0 13 if ($gradient)
1549 1872 14 if not $args and ref $args ne 'HASH'
1578 14 0 if (exists $types{$error_type}) { }
1587 3 11 if (defined $args->{'value'})
1592 1 13 if (defined $args->{'end_style'})
1597 2 12 if (defined $args->{'direction'})
1598 1 1 if ($args->{'direction'} eq 'minus') { }
1 0 elsif ($args->{'direction'} eq 'plus') { }
1610 3 11 if (defined $args->{'plus_values'})
1613 3 11 if (defined $args->{'minus_values'})
1616 1 13 if (defined $args->{'plus_data'})
1619 1 13 if (defined $args->{'minus_data'})
1663 896 65 if not $labels and ref $labels ne 'HASH'
1669 46 19 if (my $position = $labels->{'position'})
1671 46 0 if (exists $self->{'_label_positions'}{$position}) { }
1672 11 35 if ($position eq $self->{'_label_position_default'}) { }
1686 5 60 if (my $separator = $labels->{'separator'})
1696 5 0 if (exists $separators{$separator}) { }
1705 5 60 if ($labels->{'font'})
1727 2 18 if ($arg{'color'})
1732 1 19 if ($arg{'line_weight'})
1738 2 18 if ($arg{'line_pattern'})
1741 1 1 if ($pattern eq 'none') { }
1750 1 19 if ($arg{'line_color'})
1761 13 7 if ($arg{'border'})
1775 2 18 if ($pattern)
1780 2 18 if ($gradient)
1818 2 29 if ($arg{'none'})
1826 1 30 if ($arg{'border'})
1840 0 31 if ($pattern)
1845 0 31 if ($gradient)
1878 2509 11 unless $args
1880 6 5 if ($is_text) { }
1892 0 32 unless (exists $allowable{$key})
1901 0 32 unless (exists $args->{$property})
1908 0 32 unless ($value =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
1914 0 32 if ($value < 0 or $value > 1)
1940 934 9 unless $user_points
1946 18 4 if (defined $user_point)
1952 1 17 if ($user_point->{'border'})
1969 0 18 if ($pattern)
1974 0 18 if ($gradient)
1979 0 18 if ($gradient)
2007 2405 12 unless $display_units
2021 12 0 if (exists $types{$display_units}) { }
2045 4829 5 unless $tick_type
2054 5 0 if (exists $types{$tick_type}) { }
2078 866 12 unless $series->{'_y2_axis'}
2097 12 866 if $series->{'_y2_axis'}
2120 342 12 if $args{'primary_axes'}
2121 12 342 if not $args{'primary_axes'}
2136 135 69 unless $font
2139 8 61 if $font->{'_size'}
2140 26 43 if defined $font->{'_bold'}
2141 25 44 if defined $font->{'_italic'}
2142 2 67 if defined $font->{'_underline'}
2145 32 37 if ($font->{'_baseline'} != -1)
2164 135 69 unless $font
2167 11 58 if $font->{'_name'}
2170 11 58 if defined $font->{'_pitch_family'}
2173 11 58 if defined $font->{'_charset'}
2302 395 3 if $style_id == 2
2324 1 393 if ($self->{'_title_none'}) { }
2331 5 388 if ($title = $self->{'_title_formula'}) { }
15 373 elsif ($title = $self->{'_title_name'}) { }
2382 390 4 if $val eq 'gap'
2412 8 299 if ($second_chart)
2415 4 4 if ($second_chart->{'_is_secondary'}) { }
2440 16 291 if ($self->{'_date_category'}) { }
2459 4 4 if ($second_chart and $second_chart->{'_is_secondary'})
2471 16 291 if ($self->{'_date_category'}) { }
2500 859 9 if (not $layout) { }
2527 1 8 if ($type eq 'plot')
2538 3 6 if ($type ne 'text')
2642 199 677 if ($self->{'_smooth_allowed'})
2696 11 927 if ($name = $series->{'_name_formula'}) { }
2 925 elsif ($name = $series->{'_name'}) { }
2720 193 683 if (defined $data_id)
2725 683 193 unless $formula
2732 7 186 if ($type eq 'str') { }
3 183 elsif ($type eq 'multi_str') { }
2802 1183 0 if ($type eq 'num') { }
0 0 elsif ($type eq 'str') { }
2835 0 33 if ($type eq 'num') { }
33 0 elsif ($type eq 'str') { }
2863 0 3 unless $count
2926 342 12 if ($args{'primary_axes'}) { }
2972 0 582 unless $axis_ids
2973 281 301 unless scalar @$axis_ids
2988 10 291 unless $x_axis->{'_visible'}
3001 3 298 if ($title = $x_axis->{'_formula'}) { }
17 281 elsif ($title = $x_axis->{'_name'}) { }
3032 297 4 if ($self->{'_show_crosses'} or $x_axis->{'_visible'})
3035 296 1 if (not defined $y_axis->{'_crossing'} or $y_axis->{'_crossing'} eq 'max') { }
3048 300 1 unless ($x_axis->{'_text_axis'})
3086 330 350 unless $axis_ids and scalar @$axis_ids
3101 0 350 unless $y_axis->{'_visible'}
3114 4 346 if ($title = $y_axis->{'_formula'}) { }
19 327 elsif ($title = $y_axis->{'_name'}) { }
3145 348 2 if (not defined $x_axis->{'_crossing'} or $x_axis->{'_crossing'} eq 'max') { }
3190 30 32 unless $axis_ids and scalar @$axis_ids
3205 1 31 unless $x_axis->{'_visible'}
3218 1 31 if ($title = $x_axis->{'_formula'}) { }
1 30 elsif ($title = $x_axis->{'_name'}) { }
3249 31 1 if (not defined $y_axis->{'_crossing'} or $y_axis->{'_crossing'} eq 'max') { }
3291 15 17 unless $axis_ids and scalar @$axis_ids
3308 1 16 unless $x_axis->{'_visible'}
3321 0 17 if ($title = $x_axis->{'_formula'}) { }
1 16 elsif ($title = $x_axis->{'_name'}) { }
3351 16 1 if ($self->{'_show_crosses'} or $x_axis->{'_visible'})
3354 16 0 if (not defined $y_axis->{'_crossing'} or $y_axis->{'_crossing'} eq 'max') { }
3382 3 14 if (defined $x_axis->{'_major_unit'})
3390 3 14 if (defined $x_axis->{'_minor_unit'})
3441 699 1 unless $val
3461 5 696 if $reverse
3480 693 7 unless defined $max
3499 693 7 unless defined $min
3519 5 696 if ($reverse)
3520 3 2 if $val eq 'l'
3521 2 3 if $val eq 'b'
3546 8 393 if ($format_code ne $axis->{'_defaults'}{'num_format'})
3551 4 397 if ($axis->{'_num_format_linked'})
3580 6 297 if ($format_code ne $axis->{'_defaults'}{'num_format'})
3586 2 301 if ($axis->{'_num_format_linked'})
3591 230 73 if (not $self->{'_cat_has_num_fmt'} and $default_format)
3636 693 7 unless $val
3655 698 2 unless $val
3674 2 699 if ($val eq 'next_to')
3763 1 301 if ($val eq 'right')
3767 1 301 if ($val eq 'left')
3805 316 2 unless $val
3824 317 1 unless $val
3843 353 348 unless $gridlines
3844 0 348 unless $gridlines->{'_visible'}
3846 2 346 if ($gridlines->{'_line'}{'_defined'}) { }
3871 691 9 unless $gridlines
3872 0 9 unless $gridlines->{'_visible'}
3874 2 7 if ($gridlines->{'_line'}{'_defined'}) { }
3917 393 6 unless $val
3936 393 6 unless $val
3993 4 346 if (defined $legend->{'_delete_series'} and ref $legend->{'_delete_series'} eq 'ARRAY')
3999 5 345 if ($position =~ s/^overlay_//)
4011 3 347 if $position eq 'none'
4012 1 346 unless exists $allowed{$position}
4032 5 341 if $overlay
4038 2 344 if ($font)
4115 1 394 if $self->{'_show_hidden_data'}
4245 1 52 if $overlay
4276 1 12 if $overlay
4340 24 0 if (defined $data_id)
4367 17 0 if ($font and exists $font->{'_rotation'})
4399 18 133 if (not defined $rot and $is_y_axis)
4403 39 112 if (defined $rot)
4404 4 35 if ($rot == 16200000) { }
4 31 elsif ($rot == 16260000) { }
4542 6 46 if $font and $font->{'_color'}
4544 10 141 if (@latin_attributes or $has_color) { }
4548 6 4 if ($has_color)
4552 8 2 if (@latin_attributes)
4621 3 14 if $font and $font->{'_color'}
4627 3 50 if (@latin_attributes or $has_color) { }
4631 3 0 if ($has_color)
4635 3 0 if (@latin_attributes)
4677 7 0 if ($font and exists $font->{'_rotation'})
4707 680 259 unless $marker
4708 6 253 if $marker->{'automatic'}
4717 16 237 if $size
4771 2912 13 unless ($series->{'_line'}{'_defined'} or $series->{'_fill'}{'_defined'} or $series->{'_pattern'} or $series->{'_gradient'})
4782 46 175 if ($series->{'_fill'}{'_defined'})
4784 6 40 if ($series->{'_fill'}{'none'}) { }
4795 58 163 if ($series->{'_pattern'})
4801 13 208 if ($series->{'_gradient'})
4809 127 94 if ($series->{'_line'}{'_defined'})
4830 89 38 if (my $width = $line->{'width'})
4844 86 41 if ($line->{'none'}) { }
35 6 elsif ($line->{'color'}) { }
4856 25 102 if (my $type = $line->{'dash_type'})
4893 84 0 if ($fill->{'color'})
4919 6 232 if ($transparency) { }
4980 925 13 unless $trendline
4994 4 9 if ($trendline->{'type'} eq 'poly')
4999 1 12 if ($trendline->{'type'} eq 'movingAvg')
5009 2 11 if (defined $trendline->{'intercept'})
5014 4 9 if ($trendline->{'display_r_squared'})
5019 6 7 if ($trendline->{'display_equation'})
5059 9 4 unless defined $data
5074 4 0 defined $_[0] ? :
5091 1 0 defined $_[0] ? :
5110 9 4 unless $val
5129 9 4 unless $val
5238 86 14 unless $hi_low_lines
5240 1 13 if ($hi_low_lines->{'_line'}{'_defined'}) { }
5267 108 4 unless $drop_lines
5269 1 3 if ($drop_lines->{'_line'}{'_defined'}) { }
5295 190 12 unless defined $val
5315 1184 0 if (defined $data)
5331 3 5715 if (defined $token and not $token =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
5416 18 5802 unless defined $value
5454 393 1 unless $self->{'_protection'}
5472 929 9 unless $points
5477 4 18 unless $point
5520 891 65 unless $labels
5525 3 62 if ($labels->{'num_format'})
5530 5 60 if ($labels->{'font'})
5535 35 30 if $labels->{'position'}
5538 2 63 if $labels->{'legend_key'}
5541 62 3 if $labels->{'value'}
5544 11 54 if $labels->{'category'}
5547 5 60 if $labels->{'series_name'}
5550 2 63 if $labels->{'percentage'}
5553 5 60 if $labels->{'separator'}
5556 13 52 if $labels->{'leader_lines'}
5721 874 2 unless $invert
5740 678 27 unless $font
5781 304 3 unless $table
5785 1 2 if ($table->{'_horizontal'})
5791 1 2 if ($table->{'_vertical'})
5797 1 2 if ($table->{'_outline'})
5803 2 1 if ($table->{'_show_keys'})
5809 1 2 if ($table->{'_font'})
5892 0 938 unless $error_bars
5894 2 936 if ($error_bars->{'_x_error_bars'})
5898 12 926 if ($error_bars->{'_y_error_bars'})
5917 0 14 unless $error_bars
5930 1 13 unless ($error_bars->{'_endcap'})
5936 8 6 if ($error_bars->{'_type'} eq 'stdErr') { }
3 3 elsif ($error_bars->{'_type'} eq 'cust') { }
6052 3 0 if ($error_bars->{'_plus_values'})
6057 2 1 if (ref $error_bars->{'_plus_values'} eq 'ARRAY') { }
6068 3 0 if ($error_bars->{'_minus_values'})
6073 2 1 if (ref $error_bars->{'_minus_values'} eq 'ARRAY') { }
6113 0 8 if (defined $token and not $token =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
6140 98 3 unless $up_down_bars
6168 195 10 unless defined $val
6186 1 2 if ($format->{'_line'}{'_defined'} or $format->{'_fill'}{'_defined'}) { }
6212 1 2 if ($format->{'_line'}{'_defined'} or $format->{'_fill'}{'_defined'}) { }
6238 251 10 unless $smooth
6257 370 12 unless $units
6265 1 11 if ($display)
6293 10 3 if ($gradient->{'_type'} eq 'linear')
6302 10 3 if ($gradient->{'_type'} eq 'linear') { }
6410 1 2 if ($type eq 'shape') { }
6443 1 2 if ($type eq 'shape') { }