The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;

BEGIN {
    $|  = 1;
    $^W = 1;
}
use Test::More tests => 6;
use Dancer2::Template::Implementation::ForkedTiny ();

sub preprocess {
    my $template = $_[0];
    my $expected = $_[1];
    my $message  = $_[2] || 'Template preprocessd ok';
    my $prepared =
      Dancer2::Template::Implementation::ForkedTiny->new->preprocess(
        $template);
    is( $prepared, $expected, $message );
    is( $template, $_[0],
        '->proprocess does not modify original template variable'
    );
}


######################################################################
# Main Tests

preprocess( <<'END_TEMPLATE', <<'END_EXPECTED', 'Simple IF' );
foo
[% IF foo %]
foobar
[% END %]
bar
END_TEMPLATE
foo
[% I1 foo %]
foobar
[% I1 %]
bar
END_EXPECTED

preprocess( <<'END_TEMPLATE', <<'END_EXPECTED', 'Simple UNLESS' );
foo
[% UNLESS foo %]
foobar
[% END %]
bar
END_TEMPLATE
foo
[% U1 foo %]
foobar
[% U1 %]
bar
END_EXPECTED

preprocess( <<'END_TEMPLATE', <<'END_EXPECTED', 'Simple FOREACH' );
foo
[% FOREACH element IN lists %]
foobar
[% END %]
bar
END_TEMPLATE
foo
[% F1 element IN lists %]
foobar
[% F1 %]
bar
END_EXPECTED