package tests::ConfigDlfConverterSpecTest;
use strict;
use tests::ConfigSpecTest;
use base qw/tests::ConfigScalarSpecTest/;
use Lire::PluginManager;
sub set_up {
my $self = $_[0];
$self->set_up_plugin_mgr();
my $mgr = Lire::PluginManager->instance();
$mgr->register_plugin( myconverter->new( 'converter1' ) );
$mgr->register_plugin( myconverter->new( 'converter2' ) );
$mgr->register_plugin( myconverter->new( 'converter3' ) );
$mgr->register_plugin( myconverter->new( 'another_conv' ) );
$self->SUPER::set_up();
return;
}
sub tear_down {
my $self = $_[0];
$self->SUPER::tear_down();
return;
}
sub type {
return "Lire::Config::DlfConverterSpec";
}
sub normalize_test_data {
return (
'converter1' => "converter1",
'Converter1' => undef,
);
}
sub valid_test_data {
return qw/converter1 converter2 converter3/;
}
sub invalid_test_data {
return qw/converter4/;
}
sub test_add {
my $self = $_[0];
$self->assert_dies( qr/Lire::Config::DlfConverterSpec cannot contain any components/,
sub { $self->{'spec'}->add() } );
}
sub test_options {
my $self = $_[0];
my @options = sort { $a->name() cmp $b->name() }
$self->{'spec'}->options();
$self->assert_num_equals( 4, scalar( @options ));
$self->assert( UNIVERSAL::isa( $options[0], 'Lire::Config::OptionSpec' ),
'expected Lire::Config::OptionSpec instance: $option' );
$self->assert_str_equals( 'another_conv', $options[0]->name() );
$self->assert_str_equals( 'Another_conv', $options[0]->summary() );
$self->assert_str_equals( '<para>Another_conv</para>',
$options[0]->description() );
}
package myconverter;
use base qw/Lire::DlfConverter/;
sub new {
my ( $class, $name ) = @_;
return bless \$name, $class;
}
sub name {
return ${$_[0]};
}
sub title {
return ucfirst ${$_[0]};
}
sub description {
return '<para>' . ucfirst ${$_[0]} . '</para>';
}
1;
syntax highlighted by Code2HTML, v. 0.9.1