The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl -w
use strict;

use Test::More tests => 10;
use Test::Exception;

use File::Basename;

use lib "../lib";

use_ok("Devel::PerlySense");
use_ok("Devel::PerlySense::Document::Location");


BEGIN { -d "t" and chdir("t"); }


ok(my $oPs = Devel::PerlySense->new(), "new ok");



my $dirData = "data/project-lib";
my $fileOrigin = "$dirData/Game/Object/Worm.pm";
my $dirOrigin = dirname($fileOrigin);
my $raModule;
my $raMethodRequired;
my $raMethodNice;
my @aDocumentFound;

$raModule = [qw/ Game::Lawn Game::Location Game::Direction Game::Event::Timed /];
$raMethodRequired = ["placeObjectBodyPartAt"];
$raMethodNice = ["wormHasCrashed", "objectHasMoved", "placeObjectBodyPartAt"];
ok(@aDocumentFound = $oPs->aDocumentFindModuleWithInterface(
    raNameModule => $raModule,
    raMethodRequired => $raMethodRequired,
    raMethodNice => $raMethodNice,
    dirOrigin => $dirOrigin,
), "aDocumentFindModuleWithInterface Found modules");
is(scalar(@aDocumentFound), 1, " Found correct no of modules");
like($aDocumentFound[0]->file, qr/Game.Lawn.pm$/, " Found correct modules");



$raModule = [qw/ Game::Object Game::Object::Worm::Bot Game::Event::Timed  /];
$raMethodRequired = ["raBodyLocation"];
$raMethodNice = ["buildBodyRight", "crash", "checkTick"];
ok(@aDocumentFound = $oPs->aDocumentFindModuleWithInterface(
    raNameModule => $raModule,
    raMethodRequired => $raMethodRequired,
    raMethodNice => $raMethodNice,
    dirOrigin => $dirOrigin,
), "aDocumentFindModuleWithInterface Found modules");
is(scalar(@aDocumentFound), 2, " Found correct no of modules");
like($aDocumentFound[0]->file, qr/Game.Object.pm$/, " Found correct modules");
like($aDocumentFound[1]->file, qr/Game.Object.Worm.Bot.pm$/, " Found correct modules");






__END__