The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More tests => 11;

use HTML::Template::Parser::ExprParser;

test_error_message('=', qr/\A=\Z/);
test_error_message('==', qr/\A==\Z/);
test_error_message('foo ==', qr/\A ==\Z/);
test_error_message('foo(', qr/\A\(\Z/);
test_error_message('foo(', qr/\A\(\Z/);
test_error_message(q{foo('bar)}, qr/\A\('bar\)\Z/);
test_error_message(q{foo("bar)}, qr/\A\("bar\)\Z/);
test_error_message(q{foo(bar')}, qr/\A\(bar'\)\Z/);
test_error_message(q{foo(bar")}, qr/\A\(bar"\)\Z/);
test_error_message(q{foo("bar')}, qr/\A\("bar'\)\Z/);
test_error_message(q{foo('bar")}, qr/\A\('bar"\)\Z/);

sub test_error_message {
    my($expr, $remain_re) = @_;

    my $parser = HTML::Template::Parser::ExprParser->new;
    my $expr_temp = $expr;
    my $list = $parser->parse(\$expr_temp);

    like($expr_temp, $remain_re, "expr is [$expr]");
}