package tests::ParamTest;

use strict;

use Lire::Param;

use base qw/Lire::Test::TestCase tests::TestStoreFixture/;

sub new {
    my $self = shift()->SUPER::new( @_ );

    $self->init();
    $self->init_i18n();

    return $self;
}

sub set_up {
    my $self = shift->SUPER::set_up();

    $self->set_up_locale();
    $self->set_up_test_schema();

    my $param = new Lire::Param( 'i18n_domain' => 'lire-test',
                                'name' => 'whatever',
                                'type' => 'string',
                                'description' => '<para>JPEG Files</para>' );
    $self->{'param'} = $param;

    return $self;
}

sub tear_down {
    my $self = shift->SUPER::tear_down();

    $self->tear_down_locale();

    return $self;
}

sub test_description_i18n {
    my $self = $_[0];

    my $param = $self->{'param'};
    $self->assert_str_equals( '<para>JPEG Files</para>',
                              $param->description() );
    $self->set_locale( 'fr_CA.iso8859-1' );
    $self->assert_str_equals( '<para>Fichiers JPEG</para>',
                              $param->description() );
}

sub test_as_type_spec {
    my $self = $_[0];

    my $param = $self->{'param'};
    $param->{'default'} = 'A file';
    my $spec = $param->as_type_spec();
    $self->assert_isa( 'Lire::Config::StringSpec', $spec );
    $self->assert_str_equals( 'whatever', $spec->name() );
    $self->assert_str_equals( 'whatever', $spec->summary() );
    $self->assert_str_equals( '<para>JPEG Files</para>',
                              $spec->description() );
    $self->assert_str_equals( 'lire-test', $spec->{'i18n_domain'} );
    $self->assert_isa( 'Lire::Config::Scalar', $spec->default() );
    $self->assert_str_equals( 'A file', $spec->default()->as_value() );

    $param->{'default'} = undef;
    $param->{'type'} = 'int';
    $self->assert_isa( 'Lire::Config::IntegerSpec', $param->as_type_spec() );
    $param->{'type'} = 'filename';
    $self->assert_isa( 'Lire::Config::FileSpec', $param->as_type_spec() );
    $param->{'type'} = 'bool';
    $self->assert_isa( 'Lire::Config::BooleanSpec', $param->as_type_spec() );
}

1;


syntax highlighted by Code2HTML, v. 0.9.1