3 ##############################################################################
4 # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/14_policy_parameter_behavior_integer.t $
5 # $Date: 2008-06-06 00:48:04 -0500 (Fri, 06 Jun 2008) $
8 ##############################################################################
14 use Test::More tests => 22;
15 use English qw(-no_match_vars);
17 use Perl::Critic::Policy;
18 use Perl::Critic::PolicyParameter;
19 use Perl::Critic::Utils qw{ :booleans };
29 description => 'An integer parameter for testing',
30 behavior => 'integer',
34 $parameter = Perl::Critic::PolicyParameter->new($specification);
35 $policy = Perl::Critic::Policy->new();
36 $parameter->parse_and_validate_config_value($policy, \%config);
37 is($policy->{_test}, undef, q{no value, no default});
39 $policy = Perl::Critic::Policy->new();
40 $config{test} = '2943';
41 $parameter->parse_and_validate_config_value($policy, \%config);
42 cmp_ok($policy->{_test}, '==', 2943, q{2943, no default});
44 $policy = Perl::Critic::Policy->new();
45 $config{test} = '+2943';
46 $parameter->parse_and_validate_config_value($policy, \%config);
47 cmp_ok($policy->{_test}, '==', 2943, q{+2943, no default});
49 $policy = Perl::Critic::Policy->new();
50 $config{test} = '-2943';
51 $parameter->parse_and_validate_config_value($policy, \%config);
52 cmp_ok($policy->{_test}, '==', -2943, q{-2943, no default});
54 $policy = Perl::Critic::Policy->new();
55 $config{test} = '29_43';
56 $parameter->parse_and_validate_config_value($policy, \%config);
57 cmp_ok($policy->{_test}, '==', 2943, q{29_43, no default});
59 $policy = Perl::Critic::Policy->new();
60 $config{test} = '+29_43';
61 $parameter->parse_and_validate_config_value($policy, \%config);
62 cmp_ok($policy->{_test}, '==', 2943, q{+29_43, no default});
64 $policy = Perl::Critic::Policy->new();
65 $config{test} = '-29_43';
66 $parameter->parse_and_validate_config_value($policy, \%config);
67 cmp_ok($policy->{_test}, '==', -2943, q{-29_43, no default});
69 $policy = Perl::Critic::Policy->new();
71 $parameter->parse_and_validate_config_value($policy, \%config);
72 cmp_ok($policy->{_test}, '==', 0, q{0, no default});
74 $policy = Perl::Critic::Policy->new();
75 $config{test} = '1.5';
76 eval { $parameter->parse_and_validate_config_value($policy, \%config); };
77 ok($EVAL_ERROR, q{not an integer});
80 $specification->{default_string} = '0';
83 $parameter = Perl::Critic::PolicyParameter->new($specification);
84 $policy = Perl::Critic::Policy->new();
85 $parameter->parse_and_validate_config_value($policy, \%config);
86 cmp_ok($policy->{_test}, '==', 0, q{no value, default 0});
88 $policy = Perl::Critic::Policy->new();
90 $parameter->parse_and_validate_config_value($policy, \%config);
91 cmp_ok($policy->{_test}, '==', 5, q{5, default 0});
94 $specification->{integer_minimum} = 0;
96 $parameter = Perl::Critic::PolicyParameter->new($specification);
97 $policy = Perl::Critic::Policy->new();
99 $parameter->parse_and_validate_config_value($policy, \%config);
100 cmp_ok($policy->{_test}, '==', 5, q{5, minimum 0});
102 $policy = Perl::Critic::Policy->new();
104 $parameter->parse_and_validate_config_value($policy, \%config);
105 cmp_ok($policy->{_test}, '==', 0, q{0, minimum 0});
107 $policy = Perl::Critic::Policy->new();
108 $config{test} = '-5';
109 eval { $parameter->parse_and_validate_config_value($policy, \%config); };
110 ok($EVAL_ERROR, q{below minimum});
113 delete $specification->{integer_minimum};
114 $specification->{integer_maximum} = 0;
116 $parameter = Perl::Critic::PolicyParameter->new($specification);
117 $policy = Perl::Critic::Policy->new();
118 $config{test} = '-5';
119 $parameter->parse_and_validate_config_value($policy, \%config);
120 cmp_ok($policy->{_test}, '==', -5, q{-5, maximum 0});
122 $policy = Perl::Critic::Policy->new();
124 $parameter->parse_and_validate_config_value($policy, \%config);
125 cmp_ok($policy->{_test}, '==', 0, q{0, maximum 0});
127 $policy = Perl::Critic::Policy->new();
129 eval { $parameter->parse_and_validate_config_value($policy, \%config); };
130 ok($EVAL_ERROR, q{above maximum});
133 $specification->{integer_minimum} = 0;
134 $specification->{integer_maximum} = 5;
136 $parameter = Perl::Critic::PolicyParameter->new($specification);
137 $policy = Perl::Critic::Policy->new();
138 $config{test} = '-5';
139 eval { $parameter->parse_and_validate_config_value($policy, \%config); };
140 ok($EVAL_ERROR, q{below minimum of range});
142 $policy = Perl::Critic::Policy->new();
144 $parameter->parse_and_validate_config_value($policy, \%config);
145 cmp_ok($policy->{_test}, '==', 0, q{0, minimum 0, maximum 5});
147 $policy = Perl::Critic::Policy->new();
149 $parameter->parse_and_validate_config_value($policy, \%config);
150 cmp_ok($policy->{_test}, '==', 3, q{3, minimum 0, maximum 5});
152 $policy = Perl::Critic::Policy->new();
154 $parameter->parse_and_validate_config_value($policy, \%config);
155 cmp_ok($policy->{_test}, '==', 5, q{5, minimum 0, maximum 5});
157 $policy = Perl::Critic::Policy->new();
158 $config{test} = '10';
159 eval { $parameter->parse_and_validate_config_value($policy, \%config); };
160 ok($EVAL_ERROR, q{above maximum of range});
162 ###############################################################################
165 # cperl-indent-level: 4
167 # indent-tabs-mode: nil
168 # c-indentation-style: bsd
170 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :