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

use strict;
use Test::More tests => 12;

use_ok 'Text::MicroMason';

ok my $m = Text::MicroMason->new( -CatchErrors );

######################################################################

FILE: {
    like $m->execute( file=>'samples/test.msn', name=>'Sam', hour => 14),
        qr/\QGood afternoon, Sam!\E/;
}

######################################################################

TAG: {
    my $scr_hello = "<& 'samples/test-recur.msn', name => 'Dave' &>";
    my $res_hello = "Test greeting:\n" . 'Good afternoon, Dave!' . "\n";
    is $m->execute(text=>$scr_hello), $res_hello;
}

######################################################################

SYNTAX: {
    my $script = <<'TEXT_END';

<%perl>
  my $hour = $ARGS{hour};
</%perl> xx
% if ( $ARGS{name} eq 'Dave' and $hour > 22 ) {
  I'm sorry <% $ARGS{name} %>, I'm afraid I can't do that right now.
% } else {
  <& 'samples/test.msn', name => $ARGS{name}, hour => $hour &>
% }
TEXT_END

    ok my $code = $m->compile(text => $script);
    ok my ( $output, $error ) = $m->execute( code=>$code, name => 'Sam', hour => 9);

    like $output, qr/\QGood morning, Sam!\E/;
    is $error, '';
    like $m->execute( code=>$code, name => 'Dave', hour => 23), 
        qr/\Qsorry Dave\E/;
}

######################################################################

HANDLE: {
    ok open my $TEST, '<', 'samples/test.msn';
    ok my $output = $m->execute( handle => $TEST, name=>'Sam', hour => 14);
    close $TEST;
    like $output, qr/\QGood afternoon, Sam!\E/;
}

######################################################################