1#!perl -w
2
3use strict;
4use Test::More;
5
6use Test::Requires qw(Mouse::Meta::Class);
7use Text::ClearSilver;
8
9note "for Text::ClearSilver::HDF";
10foreach my $method(Mouse::Meta::Class->initialize('Text::ClearSilver::HDF')->get_method_list){
11    next if $method eq 'new';
12    next if $method eq uc($method); # special methods such as CLONE
13
14    eval {
15        Text::ClearSilver::HDF->$method();
16    };
17    isnt $@, '', "call $method as a class method";
18
19    eval {
20        Text::ClearSilver::HDF->$method("");
21    };
22    isnt $@, '', "call $method as a class method";
23
24    eval {
25        Text::ClearSilver::HDF->$method("", "");
26    };
27    isnt $@, '', "call $method as a class method";
28}
29
30note "for Text::ClearSilver::CS";
31foreach my $method(Mouse::Meta::Class->initialize('Text::ClearSilver::CS')->get_method_list){
32    next if $method eq 'new';
33    next if $method eq 'bootstrap';
34    next if $method eq uc($method); # special methods such as CLONE
35
36    eval {
37        Text::ClearSilver::CS->$method();
38    };
39    isnt $@, '', "call $method as a class method";
40
41    eval {
42        Text::ClearSilver::CS->$method("");
43    };
44    isnt $@, '', "call $method as a class method";
45
46    eval {
47        Text::ClearSilver::CS->$method("", "");
48    };
49    isnt $@, '', "call $method as a class method";
50}
51
52eval {
53    my $cs = Text::ClearSilver::CS->new({ foo => 'bar' });
54    $cs->parse_string("<?cs var:foo"); # syntax error
55};
56like $@, qr/\b ParseError \b/xms;
57
58note "for Text::ClearSilver";
59
60eval {
61    Text::ClearSilver->new(qw(foo bar baz));
62};
63like $@, qr/odd number of parameters/, 'parameters';
64
65eval {
66    Text::ClearSilver->new([]);
67};
68like $@, qr/must be a HASH ref/, 'parameters';
69
70my $tcs = Text::ClearSilver->new();
71
72eval {
73    $tcs->process($0, {}, \*STDOUT, qw(foo bar baz));
74};
75like $@, qr/odd number of parameters/;
76
77eval {
78    $tcs->process($0, {}, \*STDOUT, []);
79};
80like $@, qr/must be a HASH ref/;
81
82eval {
83    $tcs->process(\'<?cs var:foo', {});
84};
85like $@, qr/\b ParseError \b/xms, 'check error';
86
87done_testing;
88