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