#!/usr/bin/perl -w use strict; use Test::More tests => 20; use Test::Exception; use File::Basename; use File::Spec::Functions; use File::Path; use File::Slurp; use Cache::FileCache; use lib "../lib"; use_ok("Devel::PerlySense::Document"); BEGIN { -d "t" and chdir("t"); } ok(my $oPs = Devel::PerlySense->new(), "new ok"); my $dirData = "data/cache/test"; rmtree($dirData); ok(! -d $dirData, "Cache dir gone"); mkpath($dirData); ok( -d $dirData, "Cache dir created"); END { rmtree($dirData); }; ok(my $oCache = Cache::FileCache->new({cache_root => $dirData}), "Cache::FileCache->new ok"); is($oCache->size, 0, " Cache is empty"); ok($oPs->oCache($oCache), "Set oCache"); my $dirSource = "data/project-lib"; my $fileOrigin = "$dirSource/Game/Object/Worm/ShaiHulud.pm"; my $fragment = 'Game::Location->new'; my $module = "Game::Location"; my $method = "new"; ok(my $oDocumentWithout = Devel::PerlySense::Document->new(oPerlySense => $oPs), "new ok"); ok($oDocumentWithout->parse(file => $fileOrigin), "Parsed file ok"); ok(my $size = $oCache->size," Cache has contents"); print "Check that somehting known works\n"; #is(scalar($oDocumentWithout->moduleMethodCallAt(row => 158, col => 57)), $fragment, "static new found in scalar context"); #is_deeply([$oDocumentWithout->moduleMethodCallAt(row => 158, col => 57)], [$module, $method], "static new found in list context"); ok(eq_set([ $oDocumentWithout->aNameBase() ], ["Game::Object::Worm", "Game::Lawn"]), 'Two base classes (@ISA = ...) ok'); ok(my $oPsWith = Devel::PerlySense->new(), "new ok"); ok(my $oCacheWith = Cache::FileCache->new({cache_root => $dirData}), "Cache::FileCache->new ok"); ok($oPsWith->oCache($oCacheWith), " Set oCache ok"); ok(my $oDocumentWith = Devel::PerlySense::Document->new(oPerlySense => $oPsWith), "new ok"); ok($oDocumentWith->parse(file => $fileOrigin), "Parsed file ok"); is($oCacheWith->size, $size, " Cache has same contents"); print "Check that somehting known works with caching\n"; #is(scalar($oDocumentWith->moduleMethodCallAt(row => 158, col => 57)), $fragment, "static new found in scalar context"); #is_deeply([$oDocumentWith->moduleMethodCallAt(row => 158, col => 57)], [$module, $method], "static new found in list context"); ok(eq_set([ $oDocumentWith->aNameBase() ], ["Game::Object::Worm", "Game::Lawn"]), 'Two base classes (@ISA = ...) ok'); print "Compare with/without\n"; my $countWithout = 0; my $sourceWithout = ""; $oDocumentWithout->aDocumentFind(sub { $sourceWithout .= "<<$_[1]>>"; $countWithout++; 0; } ); my $countWith = 0; my $sourceWith = ""; $oDocumentWith->aDocumentFind(sub { $sourceWith .= "<<$_[1]>>"; $countWith++; 0; } ); is($countWithout, $countWith, " oDocument nodes same count"); is($sourceWithout, $sourceWith, " oDocument nodes same source"); #print "$sourceWith\n"; __END__