Add ARM files
[dh-make-perl] / dev / arm / libperl-critic-perl / libperl-critic-perl-1.088 / t / 16_roundtrip_defaults.t
1 #!perl
2
3 ##############################################################################
4 #      $URL$
5 #     $Date$
6 #   $Author$
7 # $Revision$
8 ##############################################################################
9
10 use 5.006001;
11 use strict;
12 use warnings;
13
14 use English qw(-no_match_vars);
15
16 use Test::More;
17
18 use Perl::Critic::PolicyFactory (-test => 1);
19 use Perl::Critic::Config;
20 use Perl::Critic::ProfilePrototype;
21 use Perl::Critic::Utils qw{ :characters :severities };
22
23 #-----------------------------------------------------------------------------
24
25 eval 'use Test::Deep'; ## no critic (
26 plan( skip_all => 'Test::Deep requried to test round-trip of default values')
27     if $EVAL_ERROR;
28
29 #-----------------------------------------------------------------------------
30
31 my $default_configuration =
32     Perl::Critic::Config->new(
33         -profile => $EMPTY,
34         -severity => 1,
35         -theme => 'core',
36     );
37 my @default_policies = $default_configuration->policies();
38
39 my $policy_test_count;
40
41 $policy_test_count = 4 * @default_policies;
42 foreach my $policy (@default_policies) {
43     if (
44             $policy->parameter_metadata_available()
45         and not $policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
46     ) {
47         $policy_test_count += scalar @{$policy->get_parameters()};
48     }
49 }
50 my $test_count = 12 + $policy_test_count;
51 plan tests => $test_count;
52
53 #-----------------------------------------------------------------------------
54
55 my $profile_generator =
56     Perl::Critic::ProfilePrototype->new(
57         -policies                   => \@default_policies,
58         '-comment-out-parameters'   => 0,
59         -config                     => $default_configuration,
60     );
61 my $profile = $profile_generator->to_string();
62
63 my $derived_configuration =
64     Perl::Critic::Config->new( -profile => \$profile );
65
66 #-----------------------------------------------------------------------------
67
68 my @derived_include = $derived_configuration->include();
69 my @default_include = $default_configuration->include();
70 cmp_deeply(
71     \@derived_include,
72     \@default_include,
73     'include',
74 );
75
76 #-----------------------------------------------------------------------------
77
78 my @derived_exclude = $derived_configuration->exclude();
79 my @default_exclude = $default_configuration->exclude();
80 cmp_deeply(
81     \@derived_exclude,
82     \@default_exclude,
83     'exclude',
84 );
85
86 #-----------------------------------------------------------------------------
87
88 my @derived_single_policy = $derived_configuration->single_policy();
89 my @default_single_policy = $default_configuration->single_policy();
90 cmp_deeply(
91     \@derived_single_policy,
92     \@default_single_policy,
93     'single_policy',
94 );
95
96 #-----------------------------------------------------------------------------
97
98 is(
99     $derived_configuration->force(),
100     $default_configuration->force(),
101     'force',
102 );
103
104 #-----------------------------------------------------------------------------
105
106 is(
107     $derived_configuration->only(),
108     $default_configuration->only(),
109     'only',
110 );
111
112 #-----------------------------------------------------------------------------
113
114 is(
115     $derived_configuration->profile_strictness(),
116     $default_configuration->profile_strictness(),
117     'force',
118 );
119
120 #-----------------------------------------------------------------------------
121
122 is(
123     $derived_configuration->color(),
124     $default_configuration->color(),
125     'color',
126 );
127
128 #-----------------------------------------------------------------------------
129
130 cmp_ok(
131     $derived_configuration->severity(),
132     '==',
133     $default_configuration->severity(),
134     'severity',
135 );
136
137 #-----------------------------------------------------------------------------
138
139 cmp_ok(
140     $derived_configuration->top(),
141     '==',
142     $default_configuration->top(),
143     'top',
144 );
145
146 #-----------------------------------------------------------------------------
147
148 cmp_ok(
149     $derived_configuration->verbose(),
150     '==',
151     $default_configuration->verbose(),
152     'verbose',
153 );
154
155 #-----------------------------------------------------------------------------
156
157 cmp_deeply(
158     $derived_configuration->theme(),
159     $default_configuration->theme(),
160     'theme',
161 );
162
163 #-----------------------------------------------------------------------------
164
165 my @derived_policies = $derived_configuration->policies();
166
167 my $policy_counts_match =
168     is(
169         scalar @derived_policies,
170         scalar @default_policies,
171         'same policy count'
172     );
173
174 SKIP: {
175     skip
176         q{because there weren't the same number of policies},
177             $policy_test_count
178         if not $policy_counts_match;
179
180     for (my $x = 0; $x < @default_policies; $x++) {
181         my $derived_policy = $derived_policies[$x];
182         my $default_policy = $default_policies[$x];
183
184         is(
185             $derived_policy->get_short_name(),
186             $default_policy->get_short_name(),
187             'policy names match',
188         );
189         is(
190             $derived_policy->get_maximum_violations_per_document(),
191             $default_policy->get_maximum_violations_per_document(),
192             $default_policy->get_short_name() . ' maximum violations per document match',
193         );
194         is(
195             $derived_policy->get_severity(),
196             $default_policy->get_severity(),
197             $default_policy->get_short_name() . ' severities match',
198         );
199         is(
200             $derived_policy->get_themes(),
201             $default_policy->get_themes(),
202             $default_policy->get_short_name() . ' themes match',
203         );
204
205         if (
206                 $default_policy->parameter_metadata_available()
207             and not $default_policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
208         ) {
209             # Encapsulation violation alert!
210             foreach my $parameter ( @{$default_policy->get_parameters()} ) {
211                 my $parameter_name =
212                     $default_policy->__get_parameter_name( $parameter );
213
214                 cmp_deeply(
215                     $derived_policy->{$parameter_name},
216                     $default_policy->{$parameter_name},
217                     $default_policy->get_short_name()
218                         . $SPACE
219                         . $parameter_name
220                         . ' match',
221                 );
222             }
223         }
224     }
225 }
226
227
228 #-----------------------------------------------------------------------------
229 # Local Variables:
230 #   mode: cperl
231 #   cperl-indent-level: 4
232 #   fill-column: 78
233 #   indent-tabs-mode: nil
234 #   c-indentation-style: bsd
235 # End:
236 # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :