#!perl -w
use strict;
use Test::More;
use Text::Xslate;
my $tx = Text::Xslate->new(verbose => 2);
my @set = (
[<<'T', { value => "foo" }, <<'X'],
<: $value ~~ "foo" ? "matched" : "unmatched" :>
T
matched
X
[<<'T', { value => "" }, <<'X'],
<: $value ~~ nil ? "matched" : "unmatched" :>
T
unmatched
X
[<<'T', { value => "foo" }, <<'X'],
: given $value {
: when ["foo", "bar", nil] {
matched
: }
: default {
unmatched
: }
: }
T
matched
X
[<<'T', { value => undef }, <<'X'],
: given $value {
: when ["foo", "bar", nil] {
matched
: }
: default {
unmatched
: }
: }
T
matched
X
[<<'T', { value => "baz" }, <<'X'],
: given $value {
: when ["foo", "bar", nil] {
matched
: }
: default {
unmatched
: }
: }
T
unmatched
X
[<<'T', { value => "foo" }, <<'X'],
: given $value {
: when { foo => nil, bar => nil } {
matched
: }
: default {
unmatched
: }
: }
T
matched
X
[<<'T', { value => "bar" }, <<'X'],
: given $value {
: when { foo => nil, bar => nil } {
matched
: }
: default {
unmatched
: }
: }
T
matched
X
[<<'T', { value => "baz" }, <<'X'],
: given $value {
: when { foo => nil, bar => nil } {
matched
: }
: default {
unmatched
: }
: }
T
unmatched
X
);
foreach my $d(@set) {
my($in, $vars, $out, $msg) = @$d;
is $tx->render_string($in, $vars), $out, $msg or diag $in;
}
done_testing;