#!/usr/bin/perl -w
use strict;
use Test::More tests => 40;
use Test::Exception;
use File::Basename;
use Data::Dumper;
use lib "../lib";
use_ok("Devel::PerlySense::Document");
use_ok("Devel::PerlySense::Document::Api");
use_ok("Devel::PerlySense::Document::Location");
BEGIN { -d "t" and chdir("t"); }
{
ok(my $oDocument = Devel::PerlySense::Document->new(oPerlySense => Devel::PerlySense->new()), "new ok");
my $dirData = "data/project-lib";
my $fileOrigin = "$dirData/Game/Lawn.pm";
my $nameModule = "Game::Lawn";
my ($object, $method, $oNodeSub);
my (@aMethod);
my $oApi;
my $oLocation;
my $rexFile = qr/.Game.Lawn.pm$/;
print "\n* No inheritance\n";
ok($oDocument->parse(file => $fileOrigin), "Parsed file ok");
ok($oDocument->determineLikelyApi(nameModule => $nameModule), " determineLikelyApi ok");
is(scalar(keys %{$oDocument->rhPackageApiLikely}), 1, " rhPackageApiLikely key count ok");
ok($oApi = $oDocument->rhPackageApiLikely->{"Game::Lawn"}, " Got Game::Lawn API");
#warn(Dumper($oApi->rhSub));
is_deeply([sort keys %{$oApi->rhSub}],
[sort qw/
END
width
buildBodyRight
color
oLocation
oLawn
raBodyLocation
raBodyChar
isBlocking
height
rhGrid
oUI
oController
rhPrize
new
oPlaceWorm
oPlacePrize
prizeWasClaimedBy
placeObjectAt
objectHasMoved
removeObject
isObjectAt
isAnythingAt
isAnythingBlockingAt
oLocationRandom
isLocationOnLawn
isLocationValidForMove
isLocationValidForPlacement
isObjectLocationValidForPlacement
oDirectionToPrize
placeObjectBodyPartAt
removeObjectBodyPartAt
wormHasCrashed
/],
" API raSub ok");
ok($oLocation = $oApi->rhSub->{width}, " Got location");
like($oLocation->file, $rexFile, " Correct file name");
is($oLocation->row, 0, " row");
is($oLocation->col, 0, " row");
is($oLocation->rhProperty->{sub}, "width", " rhProperty->sub");
ok($oLocation = $oApi->rhSub->{removeObject}, " Got location");
like($oLocation->file, $rexFile, " Correct file name");
is($oLocation->row, 280, " row");
is($oLocation->col, 1, " row");
is($oLocation->rhProperty->{sub}, "removeObject", " rhProperty->sub");
#print Dumper($oLocation);
#print Dumper([ sort keys %{$oApi->rhSub} ]);
}
{
ok(my $oDocument = Devel::PerlySense::Document->new(oPerlySense => Devel::PerlySense->new()), "new ok");
my $dirData = "data/project-lib";
my $fileOrigin = "$dirData/Game/Object/Worm.pm";
my $nameModule = "Game::Object::Worm";
my ($object, $method, $oNodeSub);
my (@aMethod);
my $oApi;
my $oLocation;
my $rexFileWorm = qr/.Game.Object.Worm.pm$/;
my $rexFileObject = qr/.Game.Object.pm$/;
print "\n* Single inheritance, one ancestor\n";
ok($oDocument->parse(file => $fileOrigin), "Parsed file ok");
ok($oDocument->determineLikelyApi("nameModule", $nameModule), " determineLikelyApi ok");
is(scalar(keys %{$oDocument->rhPackageApiLikely}), 1, " rhPackageApiLikely key count ok");
ok($oApi = $oDocument->rhPackageApiLikely->{"Game::Object::Worm"}, " Got Game::Object::Worm API");
is_deeply([sort keys %{$oApi->rhSub}],
[sort qw/
isRealPlayer
oDirection
oEventMove
score
lengthIdeal
lengthActual
oLocation
oLawn
raBodyLocation
raBodyChar
isBlocking
color
moveForward
oValidLocationAfterMove
turn
grow
crash
checkTick
awardScorePoints
loadFile
new
buildBodyRight
/],
" API raSub ok");
ok($oLocation = $oApi->rhSub->{oLocation}, " Got location");
like($oLocation->file, $rexFileObject, " Correct file name");
is($oLocation->row, 0, " row");
is($oLocation->col, 0, " row");
is($oLocation->rhProperty->{sub}, "oLocation", " rhProperty->sub");
ok($oLocation = $oApi->rhSub->{buildBodyRight}, " Got location");
like($oLocation->file, $rexFileObject, " Correct file name");
is($oLocation->row, 153, " row");
is($oLocation->col, 1, " row");
is($oLocation->rhProperty->{sub}, "buildBodyRight", " rhProperty->sub");
ok($oLocation = $oApi->rhSub->{new}, " Got location");
like($oLocation->file, $rexFileWorm, " Correct file name");
is($oLocation->row, 142, " row");
is($oLocation->col, 1, " row");
is($oLocation->rhProperty->{sub}, "new", " rhProperty->sub");
#print Dumper($oLocation);
#print Dumper([ sort keys %{$oApi->rhSub} ]);
}
#buildBodyRight
#new
__END__