File: 52-text_template.t

package info (click to toggle)
libtext-micromason-perl 2.13-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 624 kB
  • ctags: 180
  • sloc: perl: 3,222; makefile: 23
file content (79 lines) | stat: -rw-r--r-- 2,085 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/perl -w

use strict;

use Test::More;

if (eval { require Text::Balanced }) {
    plan tests => 18;
} else {
    plan skip_all => 'Text::Template emulator requires Text::Balanced';
}

use_ok 'Text::MicroMason';

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

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

my $scr_hello = <<'ENDSCRIPT';
Dear {$recipient},
Pay me at once.
      Love, 
	G.V.
ENDSCRIPT

my $res_hello = <<'ENDSCRIPT';
Dear King,
Pay me at once.
      Love, 
	G.V.
ENDSCRIPT

is $m->execute( text => $scr_hello, recipient => 'King' ), $res_hello;
is $m->compile( text => $scr_hello)->( recipient => 'King' ), $res_hello;

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

{
    no strict;

    $source = 'We will put value of $v (which is "good") here -> {$v}';
    $v = 'oops (main)';
    $Q::v = 'oops (Q)';
    $vars = { 'v' => \'good' };

    # (1) Build template from string
    ok $template = $m->compile( 'text' => $source );
    ok ref $template;

    # (2) Fill in template in anonymous package
    $result2 = 'We will put value of $v (which is "good") here -> good';
    ok $text = $template->(%$vars);
    is $text, $result2;

    # (3) Did we clobber the main variable?
    ok($v, 'oops (main)');

    # (4) Fill in same template again
    $result4 = 'We will put value of $v (which is "good") here -> good';
    ok $text = $template->(%$vars);
    is $text, $result4;

    # (5) Now with a package
    $result5 = 'We will put value of $v (which is "good") here -> good';
    ok $template = $m->new(package => 'Q')->compile( 'text' => $source );
    ok $text = $template->(%$vars);
    is $text, $result5;

    # (6) We expect to have clobbered the Q variable.
    is $Q::v, 'good';

    # (7) Now let's try it without a package
    $result7 = 'We will put value of $v (which is "good") here -> good';
    ok $template = $m->new()->compile( 'text' => $source );
    ok $text = $template->(%$vars);
    is $text, $result7;
}

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