package tests::ConfigDlfStreamsSpecTest;

use strict;

use tests::ConfigSpecTest;

use base qw/tests::ConfigListSpecTest/;

use Lire::Config::DlfStreamsSpec;
use Lire::Config::ConfigSpec;
use Lire::DlfSchema;

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

    return $self;
}

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

    $self->SUPER::set_up();

    $self->{'cfg'}{'lr_schemas_path'} = [];
    $Lire::DlfSchema::SCHEMA_CACHE{'test1'} = {};
    $Lire::DlfSchema::SCHEMA_CACHE{'test2'} = {};

    return;
}

sub tear_down {
    my $self = $_[0];
    $self->SUPER::tear_down();

    delete $Lire::DlfSchema::SCHEMA_CACHE{'test1'};
    delete $Lire::DlfSchema::SCHEMA_CACHE{'test2'};

    return;
}

sub type {
    return 'Lire::Config::DlfStreamsSpec';
}

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

    $self->assert( $self->{'spec'}->has_component( 'test1' ), 'test1' );
    $self->assert( $self->{'spec'}->has_component( 'test1' ), 'test2' );
    $self->assert( ! $self->{'spec'}->has_component( 'test3' ), '! test3' );
}

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

    my $spec = $self->{'spec'}->get( 'test1' );
    $self->assert_isa( 'Lire::Config::DlfStreamSpec', $spec );
    $self->assert_str_equals( 'test1', $spec->name() );
    $self->assert_str_equals( $spec, $self->{'spec'}->get( 'test1' ) );

    $self->assert_dies( qr/no component named 'test3'/,
                        sub { $self->{'spec'}->get( 'test3' ) } );
}

1;



syntax highlighted by Code2HTML, v. 0.9.1