#!/usr/bin/perl -w use strict; use Test::More; BEGIN { require "t/utils.pl" } use vars qw(@SPEC_METHODS @MODULES); my @SPEC_METHODS = qw(AUTOLOAD DESTROY CLONE); my @MODULES = qw(DBIx::SearchBuilder DBIx::SearchBuilder::Record); if( not eval { require Devel::Symdump } ) { plan skip_all => 'Devel::Symdump is not installed'; } elsif( not eval { require capitalization } ) { plan skip_all => 'capitalization pragma is not installed'; } else { plan tests => scalar @MODULES; } foreach my $mod( @MODULES ) { eval "require $mod"; my $dump = Devel::Symdump->new($mod); my @methods = (); foreach my $method (map { s/^\Q$mod\E:://; $_ } $dump->functions) { push @methods, $method; my $nocap = nocap( $method ); push @methods, $nocap if $nocap ne $method; } can_ok( $mod, @methods ); } sub nocap { my $method = shift; return $method if grep( { $_ eq $method } @SPEC_METHODS ); $method =~ s/(?<=[a-z])([A-Z]+)/"_" . lc($1)/eg; return lc($method); }