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;

# Test TemplatePath
use_ok 'Text::MicroMason';

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

my $m1 = Text::MicroMason->new( -TemplatePath, template_path => [ qw(samples/subdir/ samples/) ]);

# If we execute a template in subdir/ we should get it (and not the
# samples/ version).

SUBDIR: {
    ok (my $output = $m1->execute( file => 'test.msn', name => 'Sam', hour => 14));
    like ($output, qr/\QGuten Tag, Sam!\E/);
    
    ok ($output = $m1->execute( file => 'test.msn', name=>'Sam', hour=>10));
    like ($output, qr/\QGuten Morgen, Sam!\E/);
}

# If we call a template that only exists in samples/ then that should
# work as well.  But the referred template 

SAMPLE: {
    ok (my $scr_hello = $m1->execute( file => 'test-relative.msn', name => 'Dave'));
    ok (my $res_hello = "Test greeting:\nGuten Tag, Dave!\n");
    like ($scr_hello, qr/\Q$res_hello\E/);
    like ($m1->execute(text => $scr_hello), qr/\Q$res_hello\E/);
}


######################################################################
# With the reverse path we should get opposite results.

my $m2 = Text::MicroMason->new( -TemplatePath, template_path => [ qw(samples/ samples/subdir/) ]);

SUBDIR: {
    my $output = $m2->execute( file=>'test.msn', name=>'Sam', hour=>14);
    like ($output, qr/\QGood afternoon, Sam!\E/ );
    
    $output = $m2->execute( file=>'test.msn', name=>'Sam', hour=>10);
    like ($output, qr/\QGood morning, Sam!\E/ );
}

# If we call a template that only exists in samples/ then that should
# work as well.  But the referred template 

SAMPLE: {
    my $scr_hello = $m2->execute( file => 'test-relative.msn', name => 'Dave');
    my $res_hello = "Test greeting:\nGood afternoon, Dave!\n";
    is ($m2->execute(text=>$scr_hello), $res_hello);
}