package tests::TestDlfConverterTestCaseTest;
use strict;
use base qw/Lire::Test::TestCase/;
use Lire::DlfConverter;
use Lire::Test::DlfConverterTestCase;
sub new {
my $self = shift->SUPER::new( @_ );
return $self;
}
sub set_up {
my $self = $_[0];
$self->SUPER::set_up();
$self->{'converter'} =
new Class::Inner( 'parent' => 'Lire::DlfConverter',
methods =>
{
'new' => sub { bless {}, shift },
'name' => sub { 'myconverter' },
'schemas' => sub { 'test' },
} );
$self->{'test'} =
new Class::Inner( 'parent' => 'Lire::Test::DlfConverterTestCase',
'methods' =>
{
'new' => sub { bless {}, shift },
'create_converter' => sub { $self->{'converter'} }
} );
return;
}
sub tear_down {
my $self = $_[0];
$self->SUPER::tear_down();
return;
}
sub test_create_mock_process {
my $self = $_[0];
my $process = $self->{'test'}->create_mock_process();
$self->assert_isa( 'Lire::Test::MockDlfConverterProcess', $process );
$self->assert_str_equals( $self->{'converter'}, $process->{'_converter'} );
$self->assert_num_equals( 0, $process->{'_line_count'} );
$self->assert_num_equals( 0, $process->{'_dlf_count'} );
$self->assert_num_equals( 0, $process->{'_error_count'} );
$self->assert_num_equals( 0, $process->{'_saved_count'} );
$self->assert_num_equals( 0, $process->{'_ignored_count'} );
$self->assert_deep_equals( [], $process->{'_errors'} );
$self->assert_deep_equals( [], $process->{'_saved'} );
$self->assert_deep_equals( [], $process->{'_ignored'} );
$self->assert_deep_equals( { 'test' => [] }, $process->{'_dlf'} );
}
sub test_mock_process_error {
my $self = $_[0];
my $process = $self->{'test'}->create_mock_process();
$self->assert_isa( 'Lire::Test::MockDlfConverterProcess', $process );
$process->error( 'Test error', 'A line' );
$self->assert_deep_equals( [ [ 'Test error', 'A line' ] ],
$process->{'_errors'} );
$process->error( 'Another error' );
$self->assert_deep_equals( [ [ 'Test error', 'A line' ],
['Another error', undef ] ],
$process->errors() );
$self->assert_num_equals( 2, $process->error_count() );
}
sub test_mock_process_save_log_line {
my $self = $_[0];
my $process = $self->{'test'}->create_mock_process();
$self->assert_isa( 'Lire::Test::MockDlfConverterProcess', $process );
$process->save_log_line( 'A line' );
$self->assert_deep_equals( [ 'A line' ],
$process->{'_saved'} );
$process->save_log_line( 'Another line' );
$self->assert_deep_equals( [ 'A line', 'Another line' ],
$process->saved() );
$self->assert_num_equals( 2, $process->saved_count() );
}
sub test_mock_process_write_dlf {
my $self = $_[0];
my $process = $self->{'test'}->create_mock_process();
$self->assert_isa( 'Lire::Test::MockDlfConverterProcess', $process );
$self->assert_dies( qr/schema 'noschema' wasn't defined by 'myconverter' converter /,
sub { $process->write_dlf( 'noschema', {} ) } );
my $dlf = { 'connection_id' => 'An id' };
$process->write_dlf( 'test', $dlf );
$self->assert_deep_equals( [ $dlf ], $process->{'_dlf'}{'test'} );
$self->assert_str_not_equals( $dlf, $process->{'_dlf'}{'test'}[0] );
$dlf->{'time_start'} = time;
$process->write_dlf( 'test', $dlf );
$self->assert_deep_equals( [ { 'connection_id' => 'An id' }, $dlf ],
$process->dlf( 'test' ) );
$self->assert_num_equals( 2, $process->dlf_count() );
}
sub test_mock_process_ignore_log_line {
my $self = $_[0];
my $process = $self->{'test'}->create_mock_process();
$self->assert_isa( 'Lire::Test::MockDlfConverterProcess', $process );
$process->ignore_log_line( 'A line', 'A reason' );
$self->assert_deep_equals( [ [ 'A line', 'A reason' ] ],
$process->{'_ignored'} );
$process->ignore_log_line( 'Another line' );
$self->assert_deep_equals( [ [ 'A line', 'A reason' ],
['Another line', undef ] ],
$process->ignored() );
$self->assert_num_equals( 2, $process->ignored_count() );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1