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;

use Template::Sandbox;

plan tests => 8;

my ( $template, $syntax );

#
#  1-2: literal number
$syntax = '<: expr 1 :>';
$template = Template::Sandbox->new();
$template->set_template_string( $syntax );
is( ${$template->run()},
    '1',
    'atomic expr literal number' );
$syntax = '<: 1 :>';
$template = Template::Sandbox->new( allow_bare_expr => 1 );
$template->set_template_string( $syntax );
is( ${$template->run()},
    '1',
    'atomic bare expr literal number' );

#
#  3-4: literal string
$syntax = q~<: expr 'a string' :>~;
$template = Template::Sandbox->new();
$template->set_template_string( $syntax );
is( ${$template->run()},
    'a string',
    'atomic expr literal string' );
$syntax = q~<: 'a string' :>~;
$template = Template::Sandbox->new( allow_bare_expr => 1 );
$template->set_template_string( $syntax );
is( ${$template->run()},
    'a string',
    'atomic bare expr literal string' );

#
#  5-6: template variable
$syntax = '<: expr a :>';
$template = Template::Sandbox->new();
$template->set_template_string( $syntax );
$template->add_var( a => 12 );
is( ${$template->run()},
    '12',
    'atomic expr variable' );
$syntax = '<: a :>';
$template = Template::Sandbox->new( allow_bare_expr => 1 );
$template->set_template_string( $syntax );
$template->add_var( a => 12 );
is( ${$template->run()},
    '12',
    'atomic bare expr variable' );

#
#  7-8: bracketed variable
$syntax = '<: expr ( a ) :>';
$template = Template::Sandbox->new();
$template->set_template_string( $syntax );
$template->add_var( a => 12 );
is( ${$template->run()},
    '12',
    'atomic expr bracketed variable' );
$syntax = '<: ( a ) :>';
$template = Template::Sandbox->new( allow_bare_expr => 1 );
$template->set_template_string( $syntax );
$template->add_var( a => 12 );
is( ${$template->run()},
    '12',
    'atomic bare expr bracketed variable' );