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

use Test::More tests => 6;

use lib 't';

BEGIN { use_ok('App::Env') };

my %AppOpts = ( a => 3 );

# create new App1, with AppOpts signature.
my $obj1 = App::Env->new( 'App1', { AppOpts => \%AppOpts } );
is( $obj1->env('Site1_App1'), 1, "method 1, AppOpts sig" );

# now get App1 again, with AppID signature
my $obj2 = App::Env->new( 'App1', { CacheID => 'AppID', 
				    AppOpts => \%AppOpts } );
is( $obj2->env('Site1_App1'), 2, "method 2, AppID sig" );
is( $obj2->cacheid, 'App::Env::Site1::App1', "method 2, AppID cache id" );

# now try without any special stuff; should get cached version of obj2
my $obj3 = App::Env->new( 'App1' );
is( $obj3->env('Site1_App1'), 2, "method 3, AppID cache" );

# for completeness, should get cached version of obj1
my $obj4 = App::Env->new( 'App1', { AppOpts => \%AppOpts } );
is( $obj4->env('Site1_App1'), 1, "method 4, AppOpts cache" );