/[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.4 - (hide annotations) (download) (as text)
Sat Dec 6 05:07:35 2003 UTC (21 years, 4 months ago) by wakaba
Branch: MAIN
CVS Tags: before-dis2-200411, manakai-release-0-3-2, manakai-release-0-3-1, manakai-release-0-4-0, manakai-200612, HEAD
Branch point for: experimental-xml-parser-200401
Changes since 1.3: +1 -1 lines
File MIME type: application/x-troff
Changed to new syntax

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 wakaba 1.3 {
56     rule => '%l (bare);,%l;,%l (bare => 0);,%l (bare => foo);',
57     result => '1,,0,foo',
58     },
59 wakaba 1.1 );
60     Test::Simple->import (tests => scalar @s);
61    
62     my $f = test_formatter->new ();
63     my $o = {};
64     for (@s) {
65     my $result = $f->replace ($_->{rule}, param => $o);
66     OK $result, $_->{result};
67     }
68    
69    
70     package test_formatter;
71     BEGIN {
72     require Message::Util::Formatter::Text;
73     our @ISA = q(Message::Util::Formatter::Text);
74     }
75 wakaba 1.4 sub ___rule_def {+{
76 wakaba 1.1 foo => {
77     before => sub {
78     my ($f, $name, $p, $o) = @_;
79 wakaba 1.2 $p->{-result} .= "[$name:]";
80 wakaba 1.1 },
81     after => sub {
82     my ($f, $name, $p, $o) = @_;
83 wakaba 1.2 $p->{-result} .= "[:$name]";
84 wakaba 1.1 },
85     },
86     bar => {
87     after => sub {
88     my ($f, $name, $p, $o) = @_;
89 wakaba 1.2 $p->{-result} .= $p->{param};
90 wakaba 1.1 },
91     },
92     i => {
93     after => sub {
94     my ($f, $name, $p, $o) = @_;
95 wakaba 1.2 $p->{-result} .= ++$o->{param};
96 wakaba 1.1 },
97     },
98     j => {
99     after => sub {
100     my ($f, $name, $p, $o) = @_;
101 wakaba 1.2 $p->{-result} .= '['.++$o->{param1}.'['
102     . ($p->{content} || '')
103     .']'.++$o->{param1}.']';
104 wakaba 1.1 },
105     },
106     k => {
107     before => sub {
108     my ($f, $name, $p, $o) = @_;
109 wakaba 1.2 $p->{-result} .= '['.++$o->{param2}.'[%%%%'
110     .']'.++$o->{param2}.']';
111 wakaba 1.1 },
112     after => sub {
113     my ($f, $name, $p, $o) = @_;
114 wakaba 1.2 $p->{-result} =~ s/%%%%/$p->{content}||''/ge;
115 wakaba 1.3 },
116     },
117     l => {
118     after => sub {
119     my ($f, $name, $p, $o) = @_;
120     $p->{-result} = $p->{bare};
121 wakaba 1.1 },
122     },
123     }}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24