use Test::More;
use Test::Exception;
use strict;
use warnings;
use Template::Mustache;
subtest closing_the_wrong_section_tag => sub {
dies_ok {
Template::Mustache->render("
Before...
{{#section}}
Inner...
{{/other}}
After...
")
} "End Section tag closes 'other'; expected 'section'!";
};
subtest not_closing_a_nested_section_tag => sub {
dies_ok {
Template::Mustache->render("
{{#a}}
{{#b}}
{{/a}}
")
} "End Section tag closes 'a'; expected 'b'!";
};
subtest closing_a_section_at_the_top_level => sub {
dies_ok {
Template::Mustache->render("
Before...
{{/section}}
After...
")
} "End Section tag 'section' found, but not in a section!";
};
subtest specifying_too_few_delimiters => sub {
dies_ok {
Template::Mustache->render('{{= $$$ =}}')
} 'Set Delimiters tags must have exactly two values!';
};
subtest specifying_too_many_delimiters => sub {
dies_ok {
Template::Mustache->render('{{= $ $ $ =}}')
} 'Set Delimiters tags must have exactly two values!';
};
subtest specifying_an_unknown_tag_type => sub {
dies_ok {
Template::Mustache->render('{{% something }}')
} 'Unknown tag type -- %';
};
done_testing;