The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl
use strict;
use Test::Assertions qw(test);
use Log::Trace;
use Getopt::Std;
use File::Path;

use vars qw($opt_t $opt_T $opt_d);
getopts('tTd');

plan tests => 8;
ignore(1..8) unless($^O eq 'MSWin32');

#Move into the t directory
chdir($1) if ($0 =~ /(.*)(\/|\\)(.*)/);
use lib qw(.);

#Compile
unshift @INC, "../lib";
require Cache::AgainstFile;
require Cache::AgainstFile::Storable;

#Log::Trace
import Log::Trace qw(print) if($opt_t);
deep_import Log::Trace qw(print) if($opt_T);

#Test directories
my $cache_dir = './cache';

my $disk_cache = Cache::AgainstFile::Storable->new(sub {}, {'CacheDir' => $cache_dir});

my @trans = (
	['x', qr'.*/x$', "plain file"],
	['x\y', qr'.*/x/y$', "file in subdir - backslash"],
	['x/y', qr'.*/x/y$', "file in subdir - fwd slash"],
	['/x/y', qr'^\w+:/x/y$', "absolute path"],
	["\\\\server\\share", qr'^//server/share$', "UNC path - backslashes"],
	['//server/share', qr'^//server/share$', "UNC path - forward slashes"],
	['C:\Temp\baz', qr'^c:/temp/baz$', "Win32 drive letter - backslashes"],
	['C:/Temp/baz', qr'^c:/temp/baz$', "Win32 drive letter - forward slashes"],
);

foreach my $row (@trans) {
	my ($k, $regex, $desc) = @$row;
	my $rv = $disk_cache->_filename2cache($k);
	$rv = $disk_cache->_cache2filename($rv);
	TRACE("got $rv (expected $k)");
	ASSERT(scalar $rv =~ $regex, $desc);
}