use strict; use warnings; use Test::More; use Hypatia; use Hypatia::DBI::Test::SQLite; use Scalar::Util qw(blessed); BEGIN { eval "require DBD::SQLite"; if($@) { require Test::More; Test::More::plan(skip_all=>"DBD::SQLite is required to run these tests.") } } my $hdts=Hypatia::DBI::Test::SQLite->new({table=>"hypatia_test_bubble_multi1"}); my $dbh=$hdts->dbh; my $hypatia=Hypatia->new({ back_end=>"Chart::Clicker", graph_type=>"bubble", dbi=>{dbh=>$hdts->dbh, table=>"hypatia_test_bubble_multi1"}, }); ok(blessed($hypatia) eq "Hypatia"); ok(blessed($hypatia->dbh) eq "DBI::db"); ok($hypatia->dbh->{Active}); ok(blessed($hypatia->cols) eq "Hypatia::Columns"); ok(not $hypatia->using_columns); my $cc=$hypatia->chart; ok($hypatia->using_columns); ok(@{$hypatia->columns->{$_}} == 2) foreach(qw(x y size)); ok($hypatia->columns->{x}->[0] eq "x1"); ok($hypatia->columns->{x}->[1] eq "x2"); ok($hypatia->columns->{y}->[0] eq "y1"); ok($hypatia->columns->{y}->[1] eq "y2"); ok($hypatia->columns->{size}->[0] eq "size1"); ok($hypatia->columns->{size}->[1] eq "size2"); ok(blessed($cc) eq "Chart::Clicker"); my $dataset = $cc->datasets->[0]; ok(blessed($dataset) eq "Chart::Clicker::Data::DataSet"); ok(@{$dataset->series} == 2); my $dataseries=$dataset->series->[0]; ok(blessed($dataseries) eq "Chart::Clicker::Data::Series::Size"); my $keys=$dataseries->keys; my $values=$dataseries->values; my $sizes=$dataseries->sizes; ok(@$keys == 4); ok(@$values == 4); ok(@$sizes == 4); ok(scalar(grep{$_ == 3 or $_ == 1 or $_ == 8 or $_ == 6}@$keys) == 4); ok(scalar(grep{$_ == 2 or $_ == 6 or $_ == 7 or $_ == 2}@$values) == 4); ok(scalar(grep{$_ == 0.4 or $_ == 1 or $_ == 2.01 or $_ == 0.2}@$sizes) == 4); $dataseries=$dataset->series->[1]; $keys=$dataseries->keys; $values=$dataseries->values; $sizes=$dataseries->sizes; ok(@$keys == 4); ok(@$values == 4); ok(@$sizes == 4); ok(scalar(grep{$_ == 5 or $_ == 4 or $_ == 9}@$keys) == 4); ok(scalar(grep{$_ == 1 or $_ == 7 or $_ == -1 or $_ == 5}@$values) == 4); ok(scalar(grep{$_ == 0.8 or $_ == 1.3 or $_ == 1.38 or $_ == 3}@$sizes) == 4); done_testing();