package tests::ConfigVariableIndexTest;
use base qw/Lire::Test::TestCase tests::TestStoreFixture/;
use Lire::ReportSpec;
use Lire::Config::Index;
use Lire::Config::VariableIndex;
sub new {
my $self = shift->SUPER::new( @_ );
$self->init();
return $self;
}
sub set_up {
my $self = $_[0];
$self->SUPER::set_up();
$self->set_up_test_schema();
$self->{'cfg'}{'lr_reports_path'} = [ "$self->{'testdir'}/reports" ];
$self->{'table_info'} =
Lire::ReportSpec->load( 'test', 'downloads-by-period' )->create_table_info();
return;
}
sub tear_down {
my $self = $_[0];
$self->SUPER::tear_down();
return;
}
sub test_new {
my $self = $_[0];
my $index = new Lire::Config::VariableIndex( $self->{'table_info'} );
$self->assert_isa( 'Lire::Config::VariableIndex', $index );
$self->assert_str_equals( $self->{'table_info'}, $index->{'_info'} );
$self->assert_str_equals( 'both', $index->{'_type'} );
}
sub test_has_entry {
my $self = $_[0];
my $index = new Lire::Config::VariableIndex( $self->{'table_info'},
'categorical' );
$self->assert( $index->has_entry( 'timegroup:time_start' ) ? 1 : 0,
'timegroup:time_start' );
$self->assert( !$index->has_entry( 'download_count' ) ? 1 : 0,
'! download_count' );
$index->{'_type'} = 'both';
$self->assert( $index->has_entry( 'timegroup:time_start' ) ? 1 : 0,
'timegroup:time_start' );
$self->assert( $index->has_entry( 'download_count' ) ? 1 : 0,
'download_count' );
$index->{'_type'} = 'numerical';
$self->assert( !$index->has_entry( 'timegroup:time_start' ) ? 1 : 0,
'! timegroup:time_start' );
$self->assert( $index->has_entry( 'download_count' ) ? 1 : 0,
'download_count' );
}
sub test_entries {
my $self = $_[0];
my $index = new Lire::Config::VariableIndex( $self->{'table_info'} );
$self->assert_deep_equals( [ 'timegroup:time_start', 'download_count',
'download_ratio', 'user_count', 'user_ratio',
], $index->entries() );
$index->{'_type'} = 'categorical';
$self->assert_deep_equals( [ 'timegroup:time_start' ], $index->entries() );
$index->{'_type'} = 'numerical';
$self->assert_deep_equals( [ 'download_count', 'download_ratio',
'user_count', 'user_ratio' ],
$index->entries() );
}
sub test_get_ref {
my $self = $_[0];
my $index = new Lire::Config::VariableIndex( $self->{'table_info'} );
$self->assert_dies( qr/no variable "test3"/,
sub { $index->get_ref( 'test3' ) } );
$self->assert_str_equals( $self->{'table_info'}->column_info_by_name( 'timegroup:time_start' ),
$index->get_ref( 'timegroup:time_start' ) );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1