Build all packages removed dependencies of libtest-exception-perl libtest-warn-perl...
[dh-make-perl] / dev / i386 / libperl-critic-perl / libperl-critic-perl-1.088 / t / 16_roundtrip_defaults.t
diff --git a/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/16_roundtrip_defaults.t b/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/16_roundtrip_defaults.t
new file mode 100644 (file)
index 0000000..d3470e0
--- /dev/null
@@ -0,0 +1,236 @@
+#!perl
+
+##############################################################################
+#      $URL$
+#     $Date$
+#   $Author$
+# $Revision$
+##############################################################################
+
+use 5.006001;
+use strict;
+use warnings;
+
+use English qw(-no_match_vars);
+
+use Test::More;
+
+use Perl::Critic::PolicyFactory (-test => 1);
+use Perl::Critic::Config;
+use Perl::Critic::ProfilePrototype;
+use Perl::Critic::Utils qw{ :characters :severities };
+
+#-----------------------------------------------------------------------------
+
+eval 'use Test::Deep'; ## no critic (
+plan( skip_all => 'Test::Deep requried to test round-trip of default values')
+    if $EVAL_ERROR;
+
+#-----------------------------------------------------------------------------
+
+my $default_configuration =
+    Perl::Critic::Config->new(
+        -profile => $EMPTY,
+        -severity => 1,
+        -theme => 'core',
+    );
+my @default_policies = $default_configuration->policies();
+
+my $policy_test_count;
+
+$policy_test_count = 4 * @default_policies;
+foreach my $policy (@default_policies) {
+    if (
+            $policy->parameter_metadata_available()
+        and not $policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
+    ) {
+        $policy_test_count += scalar @{$policy->get_parameters()};
+    }
+}
+my $test_count = 12 + $policy_test_count;
+plan tests => $test_count;
+
+#-----------------------------------------------------------------------------
+
+my $profile_generator =
+    Perl::Critic::ProfilePrototype->new(
+        -policies                   => \@default_policies,
+        '-comment-out-parameters'   => 0,
+        -config                     => $default_configuration,
+    );
+my $profile = $profile_generator->to_string();
+
+my $derived_configuration =
+    Perl::Critic::Config->new( -profile => \$profile );
+
+#-----------------------------------------------------------------------------
+
+my @derived_include = $derived_configuration->include();
+my @default_include = $default_configuration->include();
+cmp_deeply(
+    \@derived_include,
+    \@default_include,
+    'include',
+);
+
+#-----------------------------------------------------------------------------
+
+my @derived_exclude = $derived_configuration->exclude();
+my @default_exclude = $default_configuration->exclude();
+cmp_deeply(
+    \@derived_exclude,
+    \@default_exclude,
+    'exclude',
+);
+
+#-----------------------------------------------------------------------------
+
+my @derived_single_policy = $derived_configuration->single_policy();
+my @default_single_policy = $default_configuration->single_policy();
+cmp_deeply(
+    \@derived_single_policy,
+    \@default_single_policy,
+    'single_policy',
+);
+
+#-----------------------------------------------------------------------------
+
+is(
+    $derived_configuration->force(),
+    $default_configuration->force(),
+    'force',
+);
+
+#-----------------------------------------------------------------------------
+
+is(
+    $derived_configuration->only(),
+    $default_configuration->only(),
+    'only',
+);
+
+#-----------------------------------------------------------------------------
+
+is(
+    $derived_configuration->profile_strictness(),
+    $default_configuration->profile_strictness(),
+    'force',
+);
+
+#-----------------------------------------------------------------------------
+
+is(
+    $derived_configuration->color(),
+    $default_configuration->color(),
+    'color',
+);
+
+#-----------------------------------------------------------------------------
+
+cmp_ok(
+    $derived_configuration->severity(),
+    '==',
+    $default_configuration->severity(),
+    'severity',
+);
+
+#-----------------------------------------------------------------------------
+
+cmp_ok(
+    $derived_configuration->top(),
+    '==',
+    $default_configuration->top(),
+    'top',
+);
+
+#-----------------------------------------------------------------------------
+
+cmp_ok(
+    $derived_configuration->verbose(),
+    '==',
+    $default_configuration->verbose(),
+    'verbose',
+);
+
+#-----------------------------------------------------------------------------
+
+cmp_deeply(
+    $derived_configuration->theme(),
+    $default_configuration->theme(),
+    'theme',
+);
+
+#-----------------------------------------------------------------------------
+
+my @derived_policies = $derived_configuration->policies();
+
+my $policy_counts_match =
+    is(
+        scalar @derived_policies,
+        scalar @default_policies,
+        'same policy count'
+    );
+
+SKIP: {
+    skip
+        q{because there weren't the same number of policies},
+            $policy_test_count
+        if not $policy_counts_match;
+
+    for (my $x = 0; $x < @default_policies; $x++) {
+        my $derived_policy = $derived_policies[$x];
+        my $default_policy = $default_policies[$x];
+
+        is(
+            $derived_policy->get_short_name(),
+            $default_policy->get_short_name(),
+            'policy names match',
+        );
+        is(
+            $derived_policy->get_maximum_violations_per_document(),
+            $default_policy->get_maximum_violations_per_document(),
+            $default_policy->get_short_name() . ' maximum violations per document match',
+        );
+        is(
+            $derived_policy->get_severity(),
+            $default_policy->get_severity(),
+            $default_policy->get_short_name() . ' severities match',
+        );
+        is(
+            $derived_policy->get_themes(),
+            $default_policy->get_themes(),
+            $default_policy->get_short_name() . ' themes match',
+        );
+
+        if (
+                $default_policy->parameter_metadata_available()
+            and not $default_policy->isa('Perl::Critic::Policy::CodeLayout::RequireTidyCode')
+        ) {
+            # Encapsulation violation alert!
+            foreach my $parameter ( @{$default_policy->get_parameters()} ) {
+                my $parameter_name =
+                    $default_policy->__get_parameter_name( $parameter );
+
+                cmp_deeply(
+                    $derived_policy->{$parameter_name},
+                    $default_policy->{$parameter_name},
+                    $default_policy->get_short_name()
+                        . $SPACE
+                        . $parameter_name
+                        . ' match',
+                );
+            }
+        }
+    }
+}
+
+
+#-----------------------------------------------------------------------------
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 78
+#   indent-tabs-mode: nil
+#   c-indentation-style: bsd
+# End:
+# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :