The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use warnings;
use strict;

use Test::More qw(no_plan);

use File::Fu;

my $root = File::Fu->dir('/');
is($root, '/');
is($root->basename, '/');
is($root->dirname, '/');

my $also = $root;
$also /= 'foo';
is($also, '/foo/');
is($root, '/', 'undamaged');

my $cwd = File::Fu->dir('./');
is($cwd, './');
is($cwd->basename, './');
is($cwd->dirname, './');

my $rpath = $cwd / 'foo' / 'bar' / 'baz';
is($rpath, 'foo/bar/baz/');
is($rpath->dirname, 'foo/bar/');
is($rpath->basename, 'baz/');

my $rpath2 = $cwd / 'foo/bar/baz';
is($rpath2, 'foo/bar/baz/');
is($rpath2->dirname, 'foo/bar/');
is($rpath2->basename, 'baz/');

my $apath = $root / 'foo' / 'bar' / 'baz';
is($apath, '/foo/bar/baz/');
is($apath->dirname, '/foo/bar/');
is($apath->basename, 'baz/');

is("foo:$apath", 'foo:/foo/bar/baz/');

my $afile = $apath+'bort';
is($afile, '/foo/bar/baz/bort');
is("foo:$afile", 'foo:/foo/bar/baz/bort');

my $afile2 = File::Fu->file('/foo/bar/baz/bort');
is($afile2->dir, '/foo/bar/baz/');
is($afile2, '/foo/bar/baz/bort');
is("foo:$afile2", 'foo:/foo/bar/baz/bort');

{
  my $apath2 = $root / 'foo/bar/baz';
  is($apath2, '/foo/bar/baz/');
  is($apath2->dirname, '/foo/bar/');
  is($apath2->basename, 'baz/');

  my $apath3 = $root / 'foo//bar/baz////';
  is($apath3, '/foo/bar/baz/');
  is($apath3->dirname, '/foo/bar/');
  is($apath3->basename, 'baz/');
}

# vim:ts=2:sw=2:et:sta