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 t::lib::TTSimple;

my @data = (
    [<<'T', <<'X', "if-end (true)"],
[% IF lang == "Xslate" -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "if-end (false)"],
[% IF lang != "Xslate" -%]
    ok
[% END -%]
T
X

    [<<'T', <<'X', "if-else-end (true)"],
[% IF lang == "Xslate" -%]
    foo
[% ELSE -%]
    bar
[% END -%]
T
    foo
X

    [<<'T', <<'X', "if-else-end (false)"],
[% IF lang != "Xslate" -%]
    foo
[% ELSE -%]
    bar
[% END -%]
T
    bar
X

    [<<'T', <<'X', "if-elsif-end (1)"],
[% IF lang == "Xslate" -%]
    foo
[% ELSIF value == 10 -%]
    bar
[% ELSE -%]
    baz
[% END -%]
T
    foo
X

    [<<'T', <<'X', "if-elsif-end (2)"],
[% IF lang != "Xslate" -%]
    foo
[% ELSIF value == 10 -%]
    bar
[% ELSE -%]
    baz
[% END -%]
T
    bar
X

    [<<'T', <<'X', "if-elsif-end (false)"],
[% IF lang != "Xslate" -%]
    foo
[% ELSIF value != 10 -%]
    bar
[% ELSE -%]
    baz
[% END -%]
T
    baz
X

    [<<'T', <<'X', "unless-end (true)"],
[% UNLESS lang == "Xslate" -%]
    ok
[% END -%]
T
X

    [<<'T', <<'X', "unless-end (false)"],
[% UNLESS lang != "Xslate" -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "nesting if"],
[% IF true %]
  one
[% END %]
[% IF false %]
  two
[% END %]
[% IF true %]
  [% IF true %]
    three
  [% END %]
  [% IF false %]
    four
  [% END %]
[% END %]
[% IF true %]
  five
[% END %]
[% IF false %]
  six
[% END %]
T

  one



  
    three
  
  


  five


X


    [<<'T', <<'X', "lower cased if"],
[% if lang == "Xslate" -%]
    foo
[% elsif value == 10 -%]
    bar
[% else -%]
    baz
[% end -%]
T
    foo
X

    [<<'T', <<'X', "lower cased unless"],
[% unless lang != "Xslate" -%]
    ok
[% end -%]
T
    ok
X

    [<<'T', <<'X', "AND expression 1"],
[% IF lang == "Xslate" AND 1 -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "AND expression 2"],
[% IF lang == "Xslate" AND 0 -%]
    ok
[% END -%]
T
X

    [<<'T', <<'X', "OR expression 1"],
[% IF lang == "Xslate" OR 1 -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "OR expression 2"],
[% IF lang == "Xslate" OR 0 -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "AND and OR expression 1"],
[% IF 1 OR (lang == "Xslate" AND 0) -%]
    ok
[% END -%]
T
    ok
X

    [<<'T', <<'X', "AND and OR expression 2"],
[% IF 0 OR (lang == "Xslate" AND 0) -%]
    ok
[% END -%]
T
X

    [<<'T', <<'X', "AND and OR expression 3"],
[% IF 0 OR (lang == "Xslate" AND 1) -%]
    ok
[% END -%]
T
    ok
X

);

foreach my $d(@data) {
    my($in, $out, $msg) = @$d;

    my %vars = (
        lang => 'Xslate',
        void => '',

        value => 10,

        true  => 1,
        false => 0,
    );
    is render_str($in, \%vars), $out, $msg or diag($in);
}

done_testing;