package MockApp;
use strict;
use warnings;

$|++;

use Test::More tests => 10;
use Scalar::Util qw(blessed reftype);

use Config::Any;
use Config::Any::INI;

our $cfg_file = 't/conf/conf.foo';

eval { Config::Any::INI->load($cfg_file); };
SKIP: {
    skip "File loading backend for INI not found", 9 if $@;

    ok( my $c_arr = Config::Any->load_files({ 
            files           => [ $cfg_file ], 
            force_plugins   => [qw(Config::Any::INI)] 
        }), "load file with parser forced" );

    ok(my $c = $c_arr->[0], "load_files returns an arrayref");
    
    ok(ref $c, "load_files arrayref contains a ref");
    my $ref = blessed $c ? reftype $c : ref $c;
    is(substr($ref,0,4), "HASH", "hashref");

    my ($name, $cfg) = each %$c;
    is($name, $cfg_file, "filename matches");
    
    my $cfgref = blessed $cfg ? reftype $cfg : ref $cfg;
    is(substr($cfgref,0,4), "HASH", "hashref cfg");

    is( $cfg->{name}, 'TestApp', "appname parses" );
    is( $cfg->{Component}{ "Controller::Foo" }->{ foo }, 'bar', 		  
        "component->cntrlr->foo = bar" );
    is( $cfg->{Model}{ "Model::Baz" }->{ qux }, 		 'xyzzy',		  
        "model->model::baz->qux = xyzzy" );


    ok( my $c_arr_2 = Config::Any->load_files({ 
            files           => [ $cfg_file ], 
            force_plugins   => [qw(Config::Any::INI)],
            use_ext         => 1
        }), "load file with parser forced" );
}



