/[suikacvs]/messaging/manakai/t/util-error-textparser.t
Suika

Contents of /messaging/manakai/t/util-error-textparser.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations) (download) (as text)
Fri Oct 31 08:39:27 2003 UTC (21 years, 6 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +2 -1 lines
File MIME type: application/x-troff
Some fix

1 wakaba 1.1 use strict;
2    
3     require Test::Simple;
4     my $case = 0;
5    
6     require Message::Util::Error::TextParser;
7     my $err;
8    
9     my @test = (
10     sub {
11     $err = new Message::Util::Error::TextParser ({
12     ERR_1 => {
13     level => 'fatal',
14     description => 'error 1',
15     },
16     ERR_2 => {
17     level => 'normal',
18     description => 'error 2',
19     },
20     });
21     ok (1);
22     },
23     sub {
24     ok (!eval q{$err->raise (type => 'ERR_1'); 'success'});
25     },
26     sub {
27     ok (eval q{$err->raise (type => 'ERR_2'); 'success'});
28     },
29     sub {
30     $err->{-error_handler} = sub {
31     my ($self, $err_type, $err_msg, $err) = @_;
32     if ($err_type->{level} eq 'fatal') {
33     die $err_msg;
34     } else {
35     warn $err_msg;
36     }
37     return 0;
38     },
39     ok (1);
40     },
41     sub {
42     ok (!eval q{$err->raise (type => 'ERR_1'); 'success'});
43     },
44     sub {
45     ok (eval q{$err->raise (type => 'ERR_2'); 'success'});
46     },
47     sub {
48     $err->{-error_handler} = sub {
49     my ($self, $err_type, $err_msg, $err) = @_;
50     die $err->{position_msg},keys %$err;
51     },
52     ok (1);
53     },
54     sub {
55 wakaba 1.3 $err->reset_position (1);
56 wakaba 1.1 eval q{$err->raise (type => 'ERR_1', position => 1)};
57     ok ($@ =~ /Line 0 position 0/);
58     },
59     sub {
60     $err->reset_position (1);
61     $err->count_position (1, '01234567890123456');
62     eval q{$err->raise (type => 'ERR_1', position => 1)};
63     ok ($@ =~ /Line 0 position 17/);
64     },
65     sub {
66     $err->reset_position (1);
67     $err->count_position (1, qq'0123456789\n0123456');
68     eval q{$err->raise (type => 'ERR_1', position => 1)};
69     ok ($@ =~ /Line 1 position 7/);
70     },
71     sub {
72     $err->reset_position (1);
73     $err->count_position (1, qq'0123456789\n0123456');
74     $err->count_position (1, qq'0123456789\n0123456');
75     eval q{$err->raise (type => 'ERR_1', position => 1)};
76     ok ($@ =~ /Line 2 position 7/);
77     },
78     sub {
79     $err->reset_position (1);
80     $err->reset_position (2);
81     $err->count_position (1, qq'0123456789\n01234');
82     $err->count_position (2, qq'0123456789\n0123456');
83     eval q{$err->raise (type => 'ERR_1', position => 1)};
84     ok ($@ =~ /Line 1 position 5/);
85     },
86     sub {
87     $err->reset_position (1);
88     $err->count_position (1, qq'0123456789\n01234');
89     $err->reset_position (1);
90     $err->count_position (1, qq'0123456789\n0123456');
91     eval q{$err->raise (type => 'ERR_1', position => 1)};
92     ok ($@ =~ /Line 1 position 7/);
93     },
94     );
95     $case += @test;
96     $case += @test;
97    
98     Test::Simple->import (tests => $case);
99    
100     for (1,2) {
101     for (@test) {&$_}
102     }
103    
104    
105     =head1 LICENSE
106    
107     Copyright 2003 Wakaba <w@suika.fam.cx>
108    
109     This program is free software; you can redistribute it and/or
110     modify it under the same terms as Perl itself.
111    
112     =cut
113    
114 wakaba 1.3 1; # $Date: 2003/08/05 12:20:00 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24  
Google Analytics is used in this page; Cookies are used. 忍者AdMax is used in this page; Cookies are used. Privacy policy.