1use Test; 2use strict; 3BEGIN { plan tests => 28 }; #30, todo => [29,30] }; 4use Path::Class qw(file dir foreign_file foreign_dir); 5ok(1); 6 7 8my $file = Path::Class::File->new_foreign('Unix', 'dir', 'foo.txt'); 9ok $file, 'dir/foo.txt'; 10 11ok $file->as_foreign('Win32'), 'dir\foo.txt'; 12ok $file->as_foreign('Mac'), ':dir:foo.txt'; 13ok $file->as_foreign('OS2'), 'dir/foo.txt'; 14 15if ($^O eq 'VMS') { 16 ok $file->as_foreign('VMS'), '[.dir]foo.txt'; 17} else { 18 skip "skip Can't test VMS code on other platforms", 1; 19} 20 21$file = foreign_file('Mac', ':dir:foo.txt'); 22ok $file, ':dir:foo.txt'; 23ok $file->as_foreign('Unix'), 'dir/foo.txt'; 24ok $file->dir, ':dir:'; 25 26 27my $dir = Path::Class::Dir->new_foreign('Unix', 'dir/subdir'); 28ok $dir, 'dir/subdir'; 29ok $dir->as_foreign('Win32'), 'dir\subdir'; 30ok $dir->as_foreign('Mac'), ':dir:subdir:'; 31ok $dir->as_foreign('OS2'), 'dir/subdir'; 32 33if ($^O eq 'VMS') { 34 ok $dir->as_foreign('VMS'), '[.dir.subdir]'; 35} else { 36 skip "skip Can't test VMS code on other platforms", 1; 37} 38 39{ 40 # subsumes() should respect foreignness 41 my ($me, $other) = map { Path::Class::Dir->new_foreign('Unix', $_) } qw(/ /Foo); 42 ok($me->subsumes($other)); 43 44 ($me, $other) = map { Path::Class::Dir->new_foreign('Win32', $_) } qw(C:\ C:\Foo); 45 ok($me->subsumes($other)); 46} 47 48# Note that "\\" and '\\' are each a single backslash 49$dir = foreign_dir('Win32', 'C:\\'); 50ok $dir, 'C:\\'; 51$dir = foreign_dir('Win32', 'C:/'); 52ok $dir, 'C:\\'; 53ok $dir->subdir('Program Files'), 'C:\\Program Files'; 54 55$dir = foreign_dir('Mac', ':dir:subdir:'); 56ok $dir, ':dir:subdir:'; 57ok $dir->subdir('foo'), ':dir:subdir:foo:'; 58ok $dir->file('foo.txt'), ':dir:subdir:foo.txt'; 59ok $dir->parent, ':dir:'; 60ok $dir->is_relative, 1; 61 62$dir = foreign_dir('Mac', ':dir::dir2:subdir'); 63ok $dir, ':dir::dir2:subdir:'; 64ok $dir->as_foreign('Unix'), 'dir/../dir2/subdir'; 65 66$dir = foreign_dir('Mac', 'Volume:dir:subdir:'); 67ok $dir, 'Volume:dir:subdir:'; 68ok $dir->is_absolute; 69# TODO ok $dir->as_foreign('Unix'), '/dir/subdir'; 70# TODO ok $dir->as_foreign('Unix')->is_absolute, 1; 71