package tests::ConfigPluginSpecTest;
use strict;
use tests::ConfigSpecTest;
use base qw/tests::ConfigSelectSpecTest/;
use Lire::Config::TypeSpec;
use Lire::Config::PluginSpec;
use Lire::Config::RecordSpec;
sub set_up {
my $self = $_[0];
$self->SUPER::set_up();
my $spec = new Lire::Config::ConfigSpec();
$self->{'o1_props'} = new Lire::Config::RecordSpec( 'name' => 'option_1_properties' );
$self->{'o1_props'}->add( new Lire::Config::StringSpec( 'name' => 'string1' ) );
$spec->add( $self->{'o1_props'} );
$self->{'o2_props'} = new Lire::Config::RecordSpec( 'name' => 'option_2_properties' );
$self->{'o2_props'}->add( new Lire::Config::StringSpec( 'name' => 'string2' ) );
$spec->add( $self->{'o2_props'} );
$self->{'cfg'}{'_lr_config_spec'} = $spec;
return;
}
sub type {
return 'Lire::Config::PluginSpec';
}
sub test_new {
my $self = $_[0];
$self->SUPER::test_new();
my $no_props_spec =
new Lire::Config::RecordSpec( 'name' => $self->{'spec'}->name() . "_no_properties" );
$self->assert_isa( 'Lire::Config::RecordSpec',
$self->{'spec'}{'_no_properties_spec'} );
$self->assert_deep_equals( $no_props_spec,
$self->{'spec'}->{'_no_properties_spec'} );
}
sub test_get_properties_spec {
my $self = $_[0];
$self->assert_str_equals( $self->{'spec'}{'_no_properties_spec'},
$self->{'spec'}->get_properties_spec( undef ));
$self->assert_str_equals( $self->{'o1_props'},
$self->{'spec'}->get_properties_spec( 'option_1' ) );
$self->assert_str_equals( $self->{'o2_props'},
$self->{'spec'}->get_properties_spec( 'OPTION_2') );
$self->assert_deep_equals( $self->{'spec'}{'_no_properties_spec'},
$self->{'spec'}->get_properties_spec( 'option_3' ) );
$self->assert_dies( qr/no option 'option_4' in this specification/,
sub { $self->{'spec'}->get_properties_spec( 'option_4' ) } );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1