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;
use warnings;

use Test::More;

BEGIN {
    plan skip_all => "JavaScript::V8x::TestMoreish not available" unless eval { require JavaScript::V8x::TestMoreish };
}

plan qw/no_plan/;

use Jemplate;
use Jemplate::Runtime;

use JavaScript::V8x::TestMoreish;

my $jemplate = Jemplate->new;
my @js;

push @js, $jemplate->compile_template_content( <<_END_, 't0' );
[% BLOCK t1 %][% list = [ 1 .. 10 ] %][% list.join(', ') %][% END %]
[% BLOCK t2 %][% FOREACH ii = [ 1 .. 4 ] %][% ii %] [% END %][% END %]
[% BLOCK t3 %][% FOREACH ii = [ -1 .. -4 ] %][% ii %] [% END %][% END %]
[% BLOCK t4 %][% FOREACH ii = [ -4 .. -1 ] %][% ii %] [% END %][% END %]
_END_

eval {
$jemplate->compile_template_content( <<_END_, 't0' );
[% BLOCK t1 %][% broken = [ 1 .. end ] %][% list.join(', ') %][% END %]
_END_
};
like $@, qr{Range expansion is current supported for positive/negative integer values only};

test_js_eval( Jemplate::Runtime->kernel );
test_js_eval( join "\n", @js, "1;" );
test_js <<'_END_';
var result

result = Jemplate.process( 't1', { } )
areEqual( result, "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" );

result = Jemplate.process( 't2', { } )
areEqual( result, "1 2 3 4 " );

result = Jemplate.process( 't3', { } )
areEqual( result, "" );

result = Jemplate.process( 't4', { } )
areEqual( result, "-4 -3 -2 -1 " );
_END_