3 ##############################################################################
4 # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/14_policy_parameter_behavior_list_string.t $
5 # $Date: 2008-06-06 00:48:04 -0500 (Fri, 06 Jun 2008) $
8 ##############################################################################
14 use Test::More tests => 28;
15 use English qw(-no_match_vars);
17 use Perl::Critic::Policy;
18 use Perl::Critic::PolicyParameter;
29 description => 'A string list parameter for testing',
30 behavior => 'string list',
34 $parameter = Perl::Critic::PolicyParameter->new($specification);
35 $policy = Perl::Critic::Policy->new();
36 $parameter->parse_and_validate_config_value($policy, \%config);
37 $values = $policy->{_test};
38 is( scalar( keys %{$values} ), 0, q{no value, no default} );
40 $policy = Perl::Critic::Policy->new();
41 $config{test} = 'koyaanisqatsi';
42 $parameter->parse_and_validate_config_value($policy, \%config);
43 $values = $policy->{_test};
44 is( scalar( keys %{$values} ), 1, q{'koyaanisqatsi', no default} );
45 ok( $values->{koyaanisqatsi}, q{'koyaanisqatsi', no default} );
47 $policy = Perl::Critic::Policy->new();
48 $config{test} = 'powaqqatsi naqoyqatsi';
49 $parameter->parse_and_validate_config_value($policy, \%config);
50 $values = $policy->{_test};
51 is( scalar( keys %{$values} ), 2, q{'powaqqatsi naqoyqatsi', no default} );
52 ok( $values->{powaqqatsi}, q{'powaqqatsi naqoyqatsi', no default} );
53 ok( $values->{naqoyqatsi}, q{'powaqqatsi naqoyqatsi', no default} );
56 $specification->{default_string} = 'baraka chronos';
59 $parameter = Perl::Critic::PolicyParameter->new($specification);
60 $policy = Perl::Critic::Policy->new();
61 $parameter->parse_and_validate_config_value($policy, \%config);
62 $values = $policy->{_test};
63 is( scalar( keys %{$values} ), 2, q{no value, default 'baraka chronos'} );
64 ok( $values->{baraka}, q{no value, default 'baraka chronos'} );
65 ok( $values->{chronos}, q{no value, default 'baraka chronos'} );
67 $policy = Perl::Critic::Policy->new();
68 $config{test} = 'akira';
69 $parameter->parse_and_validate_config_value($policy, \%config);
70 $values = $policy->{_test};
71 is( scalar( keys %{$values} ), 1, q{'akira', default 'baraka chronos'} );
72 ok( $values->{akira}, q{'akira', default 'baraka chronos'} );
74 $policy = Perl::Critic::Policy->new();
75 $config{test} = 'downfall murderball';
76 $parameter->parse_and_validate_config_value($policy, \%config);
77 $values = $policy->{_test};
78 is( scalar( keys %{$values} ), 2, q{'downfall murderball', default 'baraka chronos'} );
79 ok( $values->{downfall}, q{'downfall murderball', default 'baraka chronos'} );
80 ok( $values->{murderball}, q{'downfall murderball', default 'baraka chronos'} );
83 $specification->{default_string} = 'chainsuck snog';
84 $specification->{list_always_present_values} =
85 [ 'leaether strip', 'front line assembly' ];
88 $parameter = Perl::Critic::PolicyParameter->new($specification);
89 $policy = Perl::Critic::Policy->new();
90 $parameter->parse_and_validate_config_value($policy, \%config);
91 $values = $policy->{_test};
93 scalar( keys %{$values} ),
95 q{no value, default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
99 q{no value, default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
103 q{no value, default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
106 $values->{'leaether strip'},
107 q{no value, default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
110 $values->{'front line assembly'},
111 q{no value, default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
114 $policy = Perl::Critic::Policy->new();
115 $config{test} = 'pig';
116 $parameter->parse_and_validate_config_value($policy, \%config);
117 $values = $policy->{_test};
119 scalar( keys %{$values} ),
121 q{'pig', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
125 q{'pig', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
128 $values->{'leaether strip'},
129 q{'pig', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
132 $values->{'front line assembly'},
133 q{'pig', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
136 $policy = Perl::Critic::Policy->new();
137 $config{test} = 'microdisney foetus';
138 $parameter->parse_and_validate_config_value($policy, \%config);
139 $values = $policy->{_test};
141 scalar( keys %{$values} ),
143 q{'microdisney foetus', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
146 $values->{microdisney},
147 q{'microdisney foetus', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
151 q{'microdisney foetus', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
154 $values->{'leaether strip'},
155 q{'microdisney foetus', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
158 $values->{'front line assembly'},
159 q{'microdisney foetus', default 'chainsuck snog', always 'leaether strip' & 'front line assembly'}
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 :