The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::Simple tests => 3;

use lib '../blib/lib','../blib/arch';

use Algorithm::ExpectationMaximization;

# Test 1 (Data Generation):

my $datafile = "__testdata.dat";
Algorithm::ExpectationMaximization->cluster_data_generator( 
                        output_datafile => $datafile,
                        total_number_of_data_points => 60 );
open IN, $datafile;
my @data_records = <IN>;
ok( @data_records == 60,  'Data generation works' );


# Test 2 (EM Clustering):

my $mask = "N111";
my $clusterer = Algorithm::ExpectationMaximization->new( 
                                         datafile => $datafile,
                                         mask     => "N111",
                                         K        => 3,
                );

$clusterer->read_data_from_file();
$clusterer->seed_the_clusters();
$clusterer->EM();
$clusterer->run_bayes_classifier();
my $clusters = $clusterer->return_disjoint_clusters();
ok( @$clusters == 3,  'Clustering works' );

# Test 3 (Data Visualization)

eval {
    my $visualization_mask = "111";
    my $pause_time = 2;
    $clusterer->visualize_clusters($visualization_mask, $pause_time);
};
print ${$@} if ($@); 

ok( !$@,  'Visualization works' );

unlink "__testdata.dat";