/[suikacvs]/messaging/manakai/t/util-formatter-text.t
Suika

Contents of /messaging/manakai/t/util-formatter-text.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download) (as text)
Sun Nov 16 11:43:27 2003 UTC (21 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +10 -10 lines
File MIME type: application/x-troff
Syntax changed

1 wakaba 1.1 #!/usr/bin/perl
2     use strict;
3     require Test::Simple;
4     sub OK ($$) {
5     my ($result, $expect) = @_;
6     if ($result eq $expect) {
7     ok (1);
8     } else {
9     ok (0, qq("$result" : "$expect" expected));
10     }
11     }
12    
13     my @s = (
14     {
15     rule => 'BARE-TEXT ONLY RULE',
16     result => 'BARE-TEXT ONLY RULE',
17     },
18     {
19     rule => 'BARE-TEXT%undefined;BARE-TEXT',
20     result => 'BARE-TEXT[undef: undefined]BARE-TEXT',
21     },
22     {
23     rule => 'BARE-TEXT%percent;BARE-TEXT',
24     result => 'BARE-TEXT%BARE-TEXT',
25     },
26     {
27     rule => 'BARE-TEXT%percent (prefix => {>},
28     suffix => {<} );BARE-TEXT',
29     result => 'BARE-TEXT>%<BARE-TEXT',
30     },
31     {
32     rule => 'BARE-TEXT%foo;BARE-TEXT',
33     result => 'BARE-TEXT[foo:][:foo]BARE-TEXT',
34     },
35     {
36     rule => 'BARE-TEXT%bar(param=>"value");BARE-TEXT',
37     result => 'BARE-TEXTvalueBARE-TEXT',
38     },
39     {
40     rule => 'BARE-TEXT%bar(param=>{%foo;}p);BARE-TEXT',
41     result => 'BARE-TEXT[foo:][:foo]BARE-TEXT',
42     },
43     {
44     rule => '%i;BARE-TEXT%i;BARE-TEXT%i;',
45     result => '1BARE-TEXT2BARE-TEXT3',
46     },
47     {
48     rule => '%j;%j(content=>{%j;}p);%j;',
49     result => '[1[]2][5[[3[]4]]6][7[]8]',
50     },
51     {
52     rule => '%k;%k(content=>{%k;}p);%k;',
53     result => '[1[]2][3[[5[]6]]4][7[]8]',
54     },
55     );
56     Test::Simple->import (tests => scalar @s);
57    
58     my $f = test_formatter->new ();
59     my $o = {};
60     for (@s) {
61     my $result = $f->replace ($_->{rule}, param => $o);
62     OK $result, $_->{result};
63     }
64    
65    
66     package test_formatter;
67     BEGIN {
68     require Message::Util::Formatter::Text;
69     our @ISA = q(Message::Util::Formatter::Text);
70     }
71     sub rule_def {+{
72     foo => {
73     before => sub {
74     my ($f, $name, $p, $o) = @_;
75 wakaba 1.2 $p->{-result} .= "[$name:]";
76 wakaba 1.1 },
77     after => sub {
78     my ($f, $name, $p, $o) = @_;
79 wakaba 1.2 $p->{-result} .= "[:$name]";
80 wakaba 1.1 },
81     },
82     bar => {
83     after => sub {
84     my ($f, $name, $p, $o) = @_;
85 wakaba 1.2 $p->{-result} .= $p->{param};
86 wakaba 1.1 },
87     },
88     i => {
89     after => sub {
90     my ($f, $name, $p, $o) = @_;
91 wakaba 1.2 $p->{-result} .= ++$o->{param};
92 wakaba 1.1 },
93     },
94     j => {
95     after => sub {
96     my ($f, $name, $p, $o) = @_;
97 wakaba 1.2 $p->{-result} .= '['.++$o->{param1}.'['
98     . ($p->{content} || '')
99     .']'.++$o->{param1}.']';
100 wakaba 1.1 },
101     },
102     k => {
103     before => sub {
104     my ($f, $name, $p, $o) = @_;
105 wakaba 1.2 $p->{-result} .= '['.++$o->{param2}.'[%%%%'
106     .']'.++$o->{param2}.']';
107 wakaba 1.1 },
108     after => sub {
109     my ($f, $name, $p, $o) = @_;
110 wakaba 1.2 $p->{-result} =~ s/%%%%/$p->{content}||''/ge;
111 wakaba 1.1 },
112     },
113     }}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24