variable downgrading

This commit is contained in:
Paul Driver 2010-09-01 14:39:03 -05:00
parent 5765739a95
commit c89da43b58
5 changed files with 151 additions and 0 deletions

102
t/Template/downgrade.t Normal file
View file

@ -0,0 +1,102 @@
use FindBin;
use strict;
use warnings;
use lib "$FindBin::Bin/../../lib";
use lib "$FindBin::Bin/../lib";
use Data::Dumper;
use Test::More;
use WebGUI::Test;
use WebGUI::Asset;
use WebGUI::Asset::Template::Parser;
my $funky_instance = bless {}, 'WebGUI::Asset::Template::Parser';
sub down_ok {
my ( $down, $expected, $msg ) = @_;
$funky_instance->downgrade($down);
is_deeply( $down, $expected, $msg )
or diag Dumper($down);
}
down_ok { foo => 'bar' }, { foo => 'bar' }, 'nonthreatening';
down_ok {
code => sub { }
},
{},
'code';
down_ok { obj => $funky_instance }, {}, 'object';
down_ok { hash => { foo => 'foo', bar => 'bar' } },
{ 'hash.foo' => 'foo', 'hash.bar' => 'bar' },
'simple hash flattening';
down_ok { array => [ 1, 2, 3 ] },
{ array => [ { value => 1 }, { value => 2 }, { value => 3 }, ] }, 'simple array flattening';
down_ok {
regular => 'simple',
hash => {
quite => 'deeply',
with => {
another => 'hashref',
and_even => [
'an', sub { }, { obj => $funky_instance },
'array',
[ 'nested', 'further', { son => '!!!' } ],
[ { oh => { wow => 'man' } } ]
],
blessme => $funky_instance,
}
}
}, {
regular => 'simple',
'hash.quite' => 'deeply',
'hash.with.another' => 'hashref',
'hash.with.and_even' => [
{ value => 'an' },
{}, {},
{ value => 'array' },
{ value => [ { value => 'nested' }, { value => 'further' }, { son => '!!!' }, ], },
{ value => [ { 'oh.wow' => 'man' } ] }
],
},
'twisted deep complex strucuture';
my $session = WebGUI::Test->session;
sub processed_ok {
my ( $parser, $template, $msg ) = @_;
my $temp = WebGUI::Asset->getTempspace($session);
my $tmpl = $temp->addChild( {
className => 'WebGUI::Asset::Template',
parser => $parser,
template => $template,
}
);
addToCleanup($tmpl);
is( $tmpl->process( {
his => { yes => 'yes', stop => 'stop' },
my => { yes => 'no', stop => 'go' }
}
),
<<'END_EXPECTED', $msg );
You say yes, I say no.
You say stop, and I say go.
END_EXPECTED
} ## end sub processed_ok
processed_ok( 'WebGUI::Asset::Template::HTMLTemplate', <<'END_HT', 'HTML::Template' );
You say <tmpl_var his.yes>, I say <tmpl_var my.yes>.
You say <tmpl_var his.stop>, and I say <tmpl_var my.stop>.
END_HT
processed_ok( 'WebGUI::Asset::Template::HTMLTemplateExpr', <<'END_HTE', 'HTML::Template::Expr' );
You say <tmpl_var his_yes>, I say <tmpl_var my_yes>.
You say <tmpl_var his_stop>, and I say <tmpl_var my_stop>.
END_HTE
done_testing;
#vim:ft=perl