The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!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;