# vim: cindent ft=perl

use warnings;
use strict;
use Test::More tests => 17;

use File::Spec;

BEGIN { use_ok('Config::Scoped') }

my ( $p, $cfg );
eval { $p = Config::Scoped->new('odd number');};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/odd number/i, "$@" );

eval { $p = Config::Scoped->new(file => \*STDIN);};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/filehandle/i, "$@" );

eval { $p = Config::Scoped->new(config => 'foo')};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/no hash ref/i, "$@" );

eval { $p = Config::Scoped->new(safe => 'foo')};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/reval/i, "$@" );

$p = Config::Scoped->new;
eval { $cfg = $p->parse('odd number')};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/odd number/i, "$@" );

$p = Config::Scoped->new;
eval { $cfg = $p->parse};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/no text/i, "$@" );

$p = Config::Scoped->new(
    file => File::Spec->catfile( 't', 'files', 'null' ),
    warnings => { perm => 'off' } );
eval { $cfg = $p->parse};
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/is empty/i, "$@" );

$p = Config::Scoped->new(
    file => File::Spec->catfile( 't', 'files', 'increc1' ),
    warnings => { perm => 'off' } );
eval { $cfg = $p->parse; };
isa_ok( $@, 'Config::Scoped::Error' );
like( $@, qr/include loop/i, "$@" );