]> git.imager.perl.org - imager.git/blobdiff - t/t93podcover.t
[rt.cpan.org #65385] Patch for Imager::Color->hsv
[imager.git] / t / t93podcover.t
index 1ad34bd1e4186333dfddb56d8899b0b0534d35bb..994f83123825b8a7ba3a1ca19b95f97630c8dad1 100644 (file)
@@ -6,22 +6,96 @@ use ExtUtils::Manifest qw(maniread);
 eval "use Test::Pod::Coverage 1.08;";
 # 1.08 required for coverage_class support
 plan skip_all => "Test::Pod::Coverage 1.08 required for POD coverage" if $@;
-plan tests => 1;
 
 # scan for a list of files to get Imager method documentation from
 my $manifest = maniread();
 my @pods = ( 'Imager.pm', grep /\.pod$/, keys %$manifest );
 
-my @private = ( '^io?_', '^DSO_', '^Inline$', '^yatf$', '^m_init_log$' );
-my @trustme = ( '^errstr$', '^open$' );
+my @private = 
+  ( 
+   '^io?_',
+   '^DSO_',
+   '^Inline$',
+   '^yatf$',
+   '^m_init_log$',
+   '^malloc_state$',
+   '^init_log$',
+   '^polybezier$', # not ready for public consumption
+   '^border$', # I don't know what it is, expect it to go away
+  );
+my @trustme = ( '^open$',  );
 
-TODO: {
-  local $TODO = "Still working on method coverage";
+plan tests => 19;
+
+{
   pod_coverage_ok('Imager', { also_private => \@private,
                              pod_from => \@pods,
                              trustme => \@trustme,
-                             coverage_class => 'Pod::Coverage::Imager' },
-                 "Imager");
-                 
+                             coverage_class => 'Pod::Coverage::Imager' });
+  pod_coverage_ok('Imager::Font');
+  my @color_private = ( '^i_', '_internal$' );
+  pod_coverage_ok('Imager::Color', 
+                 { also_private => \@color_private });
+  pod_coverage_ok('Imager::Color::Float', 
+                 { also_private => \@color_private });
+  pod_coverage_ok('Imager::Color::Table');
+  pod_coverage_ok('Imager::ExtUtils');
+  pod_coverage_ok('Imager::Expr');
+  my $trust_parents = { coverage_class => 'Pod::Coverage::CountParents' };
+  pod_coverage_ok('Imager::Expr::Assem', $trust_parents);
+  pod_coverage_ok('Imager::Fill');
+  pod_coverage_ok('Imager::Font::BBox');
+  pod_coverage_ok('Imager::Font::Wrap');
+  pod_coverage_ok('Imager::Fountain');
+  pod_coverage_ok('Imager::Matrix2d');
+  pod_coverage_ok('Imager::Regops');
+  pod_coverage_ok('Imager::Transform');
+  pod_coverage_ok('Imager::Test');
+}
+
+{
+  # check all documented methods/functions are in the method index
+  my $coverage = 
+    Pod::Coverage::Imager->new(package => 'Imager',
+                              pod_from => \@pods,
+                              trustme => \@trustme,
+                              also_private => \@private);
+  my %methods = map { $_ => 1 } $coverage->covered;
+  open IMAGER, "< Imager.pm"
+    or die "Cannot open Imager.pm: $!";
+  while (<IMAGER>) {
+    last if /^=head1 METHOD INDEX/;
+  }
+  my @indexed;
+  my @unknown_indexed;
+  while (<IMAGER>) {
+    last if /^=\w/ && !/^=for\b/;
+
+    if (/^(\w+)\(/) {
+      push @indexed, $1;
+      unless (delete $methods{$1}) {
+       push @unknown_indexed, $1;
+      }
+    }
+  }
+
+  unless (is(keys %methods, 0, "all methods in method index")) {
+    print "# the following methods are documented but not in the index:\n";
+    print "#  $_\n" for sort keys %methods;
+  }
+  unless (is(@unknown_indexed, 0, "only methods in method index")) {
+    print "# the following names are in the method index but not documented\n";
+    print "#  $_\n" for sort @unknown_indexed;
+  }
+
+  sub dict_cmp_func;
+  is_deeply(\@indexed, [ sort dict_cmp_func @indexed ],
+           "check method index is alphabetically sorted");
 }
 
+sub dict_cmp_func {
+  (my $tmp_a = lc $a) =~ tr/_//d;
+  (my $tmp_b = lc $b) =~ tr/_//d;
+
+  $tmp_a cmp $tmp_b;
+}