[rt #59532] fix the zero position calculation for horizontal charts
[imager-graph.git] / t / t14bar.t
index ed30851..f426a0f 100644 (file)
@@ -13,7 +13,7 @@ use Test::More;
 
 use Imager qw(:handy);
 
-plan tests => 3;
+plan tests => 11;
 
 my @warned;
 local $SIG{__WARN__} =
@@ -31,18 +31,80 @@ my $font = Imager::Font::Test->new();
 my @data = ( 100, 180, 80, 20, 2, 1, 0.5 );
 my @labels = qw(alpha beta gamma delta epsilon phi gi);
 
-my $column = Imager::Graph::Bar->new();
-$column->set_font($font);
-ok($column, "creating column chart object");
+{
+  my $bar = Imager::Graph::Bar->new();
+  $bar->set_font($font);
+  ok($bar, "creating bar chart object");
 
-$column->add_data_series(\@data);
-$column->set_labels(\@labels);
+  $bar->add_data_series(\@data);
+  $bar->set_labels(\@labels);
 
-my $img1 = $column->draw();
-ok($img1, "drawing column chart");
+  my $img1 = $bar->draw();
+  ok($img1, "drawing bar chart");
 
-$img1->write(file=>'testout/t14_bar.ppm') or die "Can't save img1: ".$img1->errstr."\n";
-cmpimg($img1, 'testimg/t14_bar.ppm', 1);
+  $img1->write(file=>'testout/t14_bar.ppm') or die "Can't save img1: ".$img1->errstr."\n";
+  cmpimg($img1, 'testimg/t14_bar.ppm', 80_000);
+}
+
+{ # alternative interfaces
+  my $bar = Imager::Graph::Horizontal->new();
+  $bar->set_font($font);
+  ok($bar, "creating bar chart object");
+
+  $bar->add_bar_data_series(\@data);
+  $bar->set_labels(\@labels);
+
+  my $img1 = $bar->draw();
+  ok($img1, "drawing bar chart");
+
+  $img1->write(file=>'testout/t14_bar2.ppm') or die "Can't save img1: ".$img1->errstr."\n";
+  cmpimg($img1, 'testimg/t14_bar.ppm', 80_000);
+}
+
+{
+  my $bar = Imager::Graph::Bar->new();
+  $bar->set_font($font);
+  ok($bar, "creating bar chart object");
+
+  $bar->add_data_series([ @data, -25 ]);
+  $bar->set_labels([ @labels, "neg" ]);
+
+  my $img1 = $bar->draw();
+  ok($img1, "drawing bar chart (negative values)");
+
+  $img1->write(file=>'testout/t14_bar3.ppm') or die "Can't save img1: ".$img1->errstr."\n";
+  #cmpimg($img1, 'testimg/t14_bar.ppm', 80_000);
+}
+
+{
+  my $bar = Imager::Graph::Bar->new();
+  $bar->set_font($font);
+  ok($bar, "creating bar chart object");
+
+  $bar->add_data_series([ @data, -25 ]);
+  $bar->set_labels([ @labels, "neg" ]);
+
+  my $fountain = Imager::Fountain->simple(colors => [ "#C0C0FF", "#E0E0FF" ],
+                                         positions => [ 0, 1 ]);
+
+  my %fill =
+    (
+     fountain => "linear",
+     segments => $fountain,
+     xa_ratio => 0.5,
+     ya_ratio => -0.1,
+     xb_ratio => 0.55,
+     yb_ratio => 1.1,
+    );
+
+  $bar->set_negative_background(\%fill);
+
+  my $img1 = $bar->draw();
+  ok($img1, "drawing bar chart (negative values, custom fill)");
+
+  $img1->write(file=>'testout/t14_bar4.ppm') or die "Can't save img1: ".$img1->errstr."\n";
+  #cmpimg($img1, 'testimg/t14_bar.ppm', 80_000);
+}
 
 unless (is(@warned, 0, "should be no warnings")) {
   diag($_) for @warned;