The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- cperl -*-

use ExtUtils::testlib;
use Test::More tests => 9;
use Test::Memory::Cycle;
use Config::Model;

use warnings;
no warnings qw(once);

use strict;

my $model = Config::Model -> new(legacy => 'ignore',)  ;

my $arg = shift || '' ;
my $trace = $arg =~ /t/ ? 1 : 0 ;
$::verbose          = 1 if $arg =~ /v/;
$::debug            = 1 if $arg =~ /d/;
Config::Model::Exception::Any->Trace(1) if $arg =~ /e/;

use Log::Log4perl qw(:easy) ;
Log::Log4perl->easy_init($arg =~ /l/ ? $TRACE: $WARN);

ok(1,"compiled");

my $inst = $model->instance (root_class_name => 'Master', 
			     model_file => 't/big_model.pm',
			     instance_name => 'test1');
ok($inst,"created dummy instance") ;

my $root = $inst -> config_root ;

# check with embedded \n
my $step = qq!std_id:ab X=Bv - std_id:bc X=Av - a_string="titi and toto" !;
ok( $root->load( step => $step, experience => 'advanced' ),
  "load '$step'");

foreach (["/std_id/cc/X","Bv" ],
	) {
    my ($path,$exp) = @$_ ;
    is($root->set($path,$exp),1,"Test set $path") ;
}

foreach (["/std_id/bc/X","Av" ],
	 ["/std_id/cc/X","Bv" ],
	) {
    my ($path,$exp) = @$_ ;
    is($root->get($path),$exp,"Test get $path") ;
}

is ($root->get(path => "/std_id/bc/X", get_obj => 1),
    $root->grab("std_id:bc X"),
    "test get with get_obj"
    );

is($root->get(path => '/BDMV', check => 'skip'), undef,"get with check skip does not die");

memory_cycle_ok($model);