package tests::ReportEntryTest;
use strict;
use base qw/Lire::Test::TestCase/;
use Lire::Report::Group;
use Lire::Report::Entry;
use Lire::Report::TableInfo;
sub set_up {
my $self = shift->SUPER::set_up();
$self->{'info'} = new Lire::Report::TableInfo();
$self->{'info'}->create_column_info( 'value', 'numerical', 'int' );
$self->{'info'}->create_group_info( 'group' );
$self->{'group'} =
new Lire::Report::Group( bless( {}, 'Lire::Report::Entry' ),
$self->{'info'} );
return $self;
}
sub tear_down {
my $self = shift->SUPER::tear_down();
return $self;
}
sub test_new {
my $self = $_[0];
my $group = $self->{'group'};
$self->assert_died( sub { new Lire::Report::Entry() },
qr/missing \'group\' parameter/ );
$self->assert_died( sub { new Lire::Report::Entry( {} ) },
qr/\'group\' parameter should be a 'Lire::Report::Group' instance, not 'HASH/ );
my $entry = new Lire::Report::Entry( $group );
$self->assert_not_null( $entry, 'new() returned undef' );
$self->assert( UNIVERSAL::isa( $entry, 'Lire::Report::Entry' ),
"new() should return instance of Lire::Report::Entry: $entry" );
$self->assert_deep_equals( [], $entry->{'data'} );
$self->assert_equals( $group, $entry->{'group'} );
}
sub test_add_value {
my $self = $_[0];
my $entry = new Lire::Report::Entry( $self->{'group'} );
$entry->add_value( { 'content' => '10.0',
'value' => '10.0',
'n' => '5',
'total' => '50',
'missing_cases' => 10,
} );
$self->assert_deep_equals( [ { 'content' => '10.0',
'value' => '10.0',
'n' => '5',
'total' => '50',
'type' => 'value',
'col_info' => $self->{'info'}->info_by_index(0),
'missing_cases' => 10, } ],
$entry->{'data'} );
$self->assert_died( sub { $entry->add_value( {} ) },
qr/\'Data_1\' parameter should be a \'Lire::Report::ColumnInfo\' instance, not \'Lire::Report::GroupInfo/ );
my $entry2 = new Lire::Report::Entry( $self->{'group'} );
$entry2->add_value( { 'content' => '10.0' } );
$self->assert_deep_equals( [ { 'content' => '10.0',
'value' => '10.0',
'n' => undef,
'total' => undef,
'type' => 'value',
'col_info' => $self->{'info'}->info_by_index(0),
'missing_cases' => 0, } ],
$entry2->{'data'} );
my $entry3 = new Lire::Report::Entry( $self->{'group'} );
$entry3->add_value( {} );
$self->assert_deep_equals( [ { 'content' => '',
'value' => '',
'n' => undef,
'total' => undef,
'type' => 'value',
'col_info' => $self->{'info'}->info_by_index(0),
'missing_cases' => 0, } ],
$entry3->{'data'} );
}
sub test_add_value_old_signature {
my $self = $_[0];
my $entry = new Lire::Report::Entry( $self->{'group'} );
$entry->add_value( 'content' => 1 );
$self->assert_deep_equals( [ { 'content' => 1,
'value' => 1,
'n' => undef,
'total' => undef,
'type' => 'value',
'col_info' => $self->{'info'}->info_by_index(0),
'missing_cases' => 0, } ],
$entry->{'data'} );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1