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

use strict;
use warnings;

use Test::More tests => 7;

use_ok( 'CGI::Application::Plugin::CHI' );

main->cache_config( { driver    => 'Memory', global => 1 } );

my $rm = "foo_runmode";
sub get_current_runmode { $rm }

my $obj = bless { }, 'main';

$obj->rmcache->set( foo => 'bar' );
is( $obj->rmcache->get( 'foo' ), 'bar' );

$rm = "other_runmode";
is( $obj->rmcache->get( 'foo' ), undef );

clean();

my ( %flarg, %blarg );
main->cache_config( flarg => { driver  => 'Memory', datastore => \%flarg },
                    blarg => { driver  => 'Memory', datastore => \%blarg } );


$rm = "bar_runmode";
$obj->rmcache( 'flarg' )->set( bar => 'baz' );
$obj->rmcache( 'blarg' )->set( baz => 'quux' );
is( $obj->rmcache( 'flarg' )->get( 'bar' ), 'baz' );
is( $obj->rmcache( 'blarg' )->get( 'baz' ), 'quux' );

$rm = "other_runmode";
is( $obj->rmcache( 'flarg' )->get( 'bar' ), undef );
is( $obj->rmcache( 'blarg' )->get( 'baz' ), undef );

sub clean { 
    CGI::Application::Plugin::CHI->_clean_conf;
}