#!/usr/bin/perl -w
use strict;
use Test::More tests => 16;
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");
BEGIN { -d "t" and chdir("t"); }
my $dirCache = "data/cache/test";
my $file = "data/cache/random_data_file.txt";
END { unlink($file); };
rmtree($dirCache); ok(! -d $dirCache, "Cache dir gone");
mkpath($dirCache); ok( -d $dirCache, "Cache dir created");
END { rmtree($dirCache); };
my $dirData = "data/project-lib";
my $fileOrigin = "$dirData/Game/Lawn.pm";
my $oLocation;
my $rexFile = qr/Game.Location.pm$/;
print "\nPerlySense objects\n";
ok(my $oPsCache = Devel::PerlySense->new(), "new ok");
ok(my $oCache = Cache::FileCache->new({cache_root => $dirCache}), "Cache::FileCache->new ok");
ok($oPsCache->oCache($oCache), "Set oCache");
ok(my $oPsNoCache = Devel::PerlySense->new(), "new ok");
print "\nSmart goto\n";
ok(my $oLocationNoCache = $oPsNoCache->oLocationSmartGoTo(file => $fileOrigin, row => 391, col => 53), "NoCache Found source ok, on method");
ok(my $oLocationCache = $oPsCache->oLocationSmartGoTo(file => $fileOrigin, row => 391, col => 53), "Cache Found source ok, on method");
is($oLocationNoCache->file, $oLocationCache->file, " row ok");
is($oLocationNoCache->row, $oLocationCache->row, " row ok");
is($oLocationNoCache->col, $oLocationCache->col, " row ok");
print "\nTry again with populated cache\n";
ok($oLocationCache = $oPsCache->oLocationSmartGoTo(file => $fileOrigin, row => 391, col => 53), "Cache Found source ok, on method");
is($oLocationNoCache->file, $oLocationCache->file, " row ok");
is($oLocationNoCache->row, $oLocationCache->row, " row ok");
is($oLocationNoCache->col, $oLocationCache->col, " row ok");
__END__