use strict;
use Test::More tests => 11;
use Scalar::Util qw/ refaddr /;
BEGIN {
use_ok( 'XML::XPathScript::Template' );
}
my $template = new XML::XPathScript::Template;
$template->set( 'groucho' => { pre => 'marx' } );
is( $template->{groucho}{pre}, 'marx', 'scalar assignment of set()' );
$template->set( [ qw/ foo bar / ] => { 'pre' => 'works' } );
is( $template->{bar}{pre}, 'works', "array assignment of set_template()" );
# copy()
$template->copy( 'foo' => 'feh' );
is( $template->{feh}{pre}, 'works', 'copy( $t1, $t2 )' );
$template->copy( 'foo' => [ qw/ fa fi / ] );
is( $template->{fa}{pre}, 'works', 'copy( $t1, \@t2 )' );
$template->set( 'foo' => { 'pre' => 'a', 'post' => 'b' } );
$template->set( 'bar' => { 'pre' => 'c', 'post' => 'd' } );
$template->copy( 'foo' => 'bar', [ 'pre' ] );
is( $template->{bar}{pre}, 'a', 'copy()' );
is( $template->{bar}{post}, 'd', 'copy()' );
# alias
$template->alias( 'foo' => 'bar' );
is( refaddr($template->{foo}), refaddr($template->{bar}), 'alias()' );
$template->alias( 'foo' => [ qw/ bar baz / ] );
is( refaddr($template->{foo}) => refaddr($template->{baz}), 'alias()' );
# is_alias
ok( $template->is_alias( 'foo' ) == 2, 'is_alias()' );
# unalias
$template->unalias( 'foo' );
ok( !$template->is_alias( 'foo' ), 'unalias' );