File-VirtualPath.t [plain text]
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl t/File-VirtualPath.t'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..136\n"; }
END {print "not ok 1\n" unless $loaded;}
use File::VirtualPath 1.011;
$loaded = 1;
print "ok 1\n";
use strict;
use warnings;
# Set this to 1 to see complete result text for each test
my $verbose = shift( @ARGV ) ? 1 : 0; # set from command line
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
######################################################################
# Here are some utility methods:
my $test_num = 1; # same as the first test, above
sub result {
$test_num++;
my ($worked, $detail) = @_;
$verbose or
$detail = substr( $detail, 0, 50 ).
(length( $detail ) > 47 ? "..." : "");
print "@{[$worked ? '' : 'not ']}ok $test_num $detail\n";
}
sub message {
my ($detail) = @_;
print "-- $detail\n";
}
sub vis {
my ($str) = @_;
$str =~ s/\n/\\n/g; # make newlines visible
$str =~ s/\t/\\t/g; # make tabs visible
return( $str );
}
sub serialize {
my ($input,$is_key) = @_;
return( join( '',
ref($input) eq 'HASH' ?
( '{ ', ( map {
( serialize( $_, 1 ), serialize( $input->{$_} ) )
} sort keys %{$input} ), '}, ' )
: ref($input) eq 'ARRAY' ?
( '[ ', ( map {
( serialize( $_ ) )
} @{$input} ), '], ' )
: defined($input) ?
"'$input'".($is_key ? ' => ' : ', ')
: "undef".($is_key ? ' => ' : ', ')
) );
}
######################################################################
message( "START TESTING File::VirtualPath" );
######################################################################
# testing new(), initialize(), and clone()
{
message( "testing new(), initialize(), and clone()" );
my ($did, $should);
# make new with default values
my $fvp1 = File::VirtualPath->new();
result( UNIVERSAL::isa( $fvp1, "File::VirtualPath" ),
"fvp1 = new() ret FVP obj" );
$did = $fvp1->physical_root();
$should = "";
result( $did eq $should, "on init fvp1->physical_root() returns '$did'" );
$did = $fvp1->physical_delimiter();
$should = "/";
result( $did eq $should, "on init fvp1->physical_delimiter() returns '$did'" );
$did = $fvp1->path_delimiter();
$should = "/";
result( $did eq $should, "on init fvp1->path_delimiter() returns '$did'" );
$did = serialize( scalar( $fvp1->path() ) );
$should = "[ '', ], ";
result( $did eq $should, "on init fvp1->path() returns '$did'" );
$did = $fvp1->current_path_level();
result( $did == 0, "on init fvp1->current_path_level() returns '$did'" );
# make new with provided values
my $fvp2 = File::VirtualPath->new( '/home/joe/aardvark', '/', ':', ':init' );
result( UNIVERSAL::isa( $fvp2, "File::VirtualPath" ),
"fvp2 = new( '/home/joe/aardvark', '/', ':', ':init' ) ret FVP obj" );
$did = $fvp2->physical_root();
$should = "/home/joe/aardvark";
result( $did eq $should, "on init fvp2->physical_root() returns '$did'" );
$did = $fvp2->physical_delimiter();
$should = "/";
result( $did eq $should, "on init fvp2->physical_delimiter() returns '$did'" );
$did = $fvp2->path_delimiter();
$should = ":";
result( $did eq $should, "on init fvp2->path_delimiter() returns '$did'" );
$did = serialize( scalar( $fvp2->path() ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "on init fvp2->path() returns '$did'" );
$did = $fvp2->current_path_level();
result( $did == 0, "on init fvp2->current_path_level() returns '$did'" );
$did = $fvp2->current_path_level( 1 );
result( $did == 1, "on set fvp2->current_path_level( 1 ) returns '$did'" );
# now we test clone of default values
my $fvp3 = $fvp1->clone();
result( UNIVERSAL::isa( $fvp3, "File::VirtualPath" ),
"fvp3 = fvp1->clone() ret FVP obj" );
$did = $fvp3->physical_root();
$should = "";
result( $did eq $should, "on init fvp3->physical_root() returns '$did'" );
$did = $fvp3->physical_delimiter();
$should = "/";
result( $did eq $should, "on init fvp3->physical_delimiter() returns '$did'" );
$did = $fvp3->path_delimiter();
$should = "/";
result( $did eq $should, "on init fvp3->path_delimiter() returns '$did'" );
$did = serialize( scalar( $fvp3->path() ) );
$should = "[ '', ], ";
result( $did eq $should, "on init fvp3->path() returns '$did'" );
$did = $fvp3->current_path_level();
result( $did == 0, "on init fvp3->current_path_level() returns '$did'" );
# now we test clone of provided values
my $fvp4 = $fvp2->clone();
result( UNIVERSAL::isa( $fvp4, "File::VirtualPath" ),
"fvp4 = fvp2->clone() ret FVP obj" );
$did = $fvp4->physical_root();
$should = "/home/joe/aardvark";
result( $did eq $should, "on init fvp4->physical_root() returns '$did'" );
$did = $fvp4->physical_delimiter();
$should = "/";
result( $did eq $should, "on init fvp4->physical_delimiter() returns '$did'" );
$did = $fvp4->path_delimiter();
$should = ":";
result( $did eq $should, "on init fvp4->path_delimiter() returns '$did'" );
$did = serialize( scalar( $fvp4->path() ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "on init fvp4->path() returns '$did'" );
$did = $fvp4->current_path_level();
result( $did == 1, "on init fvp4->current_path_level() returns '$did'" );
}
######################################################################
# test the other methods
{
my ($fvp, $did, $should);
# first initialize data we will be reading from
$fvp = File::VirtualPath->new();
message( "testing setter/getter methods on default object" );
# first check the main setter/getter methods
$did = $fvp->physical_root( '/home/joe/aardvark' );
$should = "/home/joe/aardvark";
result( $did eq $should, "physical_root( '/home/joe/aardvark' ) returns '$did'" );
$did = $fvp->physical_delimiter( '/' );
$should = "/";
result( $did eq $should, "physical_delimiter( '/' ) returns '$did'" );
$did = $fvp->path_delimiter( ':' );
$should = ":";
result( $did eq $should, "path_delimiter( ':' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( '' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( '' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( '.' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( '.' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':.' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ':.' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( 'init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( 'init' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ':init' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( '..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( '..' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ':..' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( '..:init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( '..:init' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( 'init:..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( 'init:..' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':..:init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ':..:init' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':init:..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ':init:..' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':..:init:' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ':..:init:' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':init:..:' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ':init:..:' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( 'one:two:#*:' ) ) );
$should = "[ '', 'one', 'two', ], ";
result( $did eq $should, "path( 'one:two:#*:' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( 'one:two:#*:three' ) ) );
$should = "[ '', 'one', 'two', 'three', ], ";
result( $did eq $should, "path( 'one:two:#*:three' ) returns '$did'" );
$did = serialize( scalar( $fvp->path( [''] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( [''] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['.'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['.'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', '.'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['', '.'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ['init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ['', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', '..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['..', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ['..', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['init', '..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['init', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', '..', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ['', '..', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', 'init', '..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['', 'init', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', '..', 'init', ''] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "path( ['', '..', 'init', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['', 'init', '..', ''] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "path( ['', 'init', '..', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['one', 'two', '#*', ''] ) ) );
$should = "[ '', 'one', 'two', ], ";
result( $did eq $should, "path( ['one', 'two', '#*', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ['one', 'two', '#*', 'three'] ) ) );
$should = "[ '', 'one', 'two', 'three', ], ";
result( $did eq $should, "path( ['one', 'two', '#*', 'three'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path( ':starter' ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "path( ':starter' ) returns '$did'" );
$did = $fvp->current_path_level( 1 );
result( $did == 1, "current_path_level( 1 ) returns '$did'" );
message( "testing child_path type methods on current object" );
# first test child_path() itself
$did = serialize( scalar( $fvp->child_path( '' ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "child_path( '' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( '.' ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "child_path( '.' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':.' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ':.' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( 'init' ) ) );
$should = "[ '', 'starter', 'init', ], ";
result( $did eq $should, "child_path( 'init' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ':init' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( '..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( '..' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ':..' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( '..:init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( '..:init' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( 'init:..' ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "child_path( 'init:..' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':..:init' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ':..:init' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':init:..' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ':init:..' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':..:init:' ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ':..:init:' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ':init:..:' ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ':init:..:' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( 'one:two:#*:' ) ) );
$should = "[ '', 'starter', 'one', 'two', ], ";
result( $did eq $should, "child_path( 'one:two:#*:' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( 'one:two:#*:three' ) ) );
$should = "[ '', 'starter', 'one', 'two', 'three', ], ";
result( $did eq $should, "child_path( 'one:two:#*:three' ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( [''] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( [''] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['.'] ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "child_path( ['.'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', '.'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ['', '.'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['init'] ) ) );
$should = "[ '', 'starter', 'init', ], ";
result( $did eq $should, "child_path( ['init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ['', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ['..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', '..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ['', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['..', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ['..', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['init', '..'] ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "child_path( ['init', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', '..', 'init'] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ['', '..', 'init'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', 'init', '..'] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ['', 'init', '..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', '..', 'init', ''] ) ) );
$should = "[ '', 'init', ], ";
result( $did eq $should, "child_path( ['', '..', 'init', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['', 'init', '..', ''] ) ) );
$should = "[ '', ], ";
result( $did eq $should, "child_path( ['', 'init', '..', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['one', 'two', '#*', ''] ) ) );
$should = "[ '', 'starter', 'one', 'two', ], ";
result( $did eq $should, "child_path( ['one', 'two', '#*', ''] ) returns '$did'" );
$did = serialize( scalar( $fvp->child_path( ['one', 'two', '#*', 'three'] ) ) );
$should = "[ '', 'starter', 'one', 'two', 'three', ], ";
result( $did eq $should, "child_path( ['one', 'two', '#*', 'three'] ) returns '$did'" );
# now test child_path_obj()
my $fvp2 = $fvp->child_path_obj( 'further' );
result( UNIVERSAL::isa( $fvp2, "File::VirtualPath" ),
"fvp2 = child_path_obj( 'further' ) ret FVP obj" );
$did = $fvp2->physical_root();
$should = "/home/joe/aardvark";
result( $did eq $should, "on init fvp2->physical_root() returns '$did'" );
$did = $fvp2->physical_delimiter();
$should = "/";
result( $did eq $should, "on init fvp2->physical_delimiter() returns '$did'" );
$did = $fvp2->path_delimiter();
$should = ":";
result( $did eq $should, "on init fvp2->path_delimiter() returns '$did'" );
$did = serialize( scalar( $fvp2->path() ) );
$should = "[ '', 'starter', 'further', ], ";
result( $did eq $should, "on init fvp2->path() returns '$did'" );
$did = $fvp2->current_path_level();
result( $did == 1, "on init fvp2->current_path_level() returns '$did'" );
# now test chdir() briefly, since its trivial
$did = serialize( scalar( $fvp->chdir( ['inwego'] ) ) );
$should = "[ '', 'starter', 'inwego', ], ";
result( $did eq $should, "chdir( ['inwego'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path() ) );
$should = "[ '', 'starter', 'inwego', ], ";
result( $did eq $should, "path() returns '$did'" );
$did = serialize( scalar( $fvp->chdir( ['..'] ) ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "chdir( ['..'] ) returns '$did'" );
$did = serialize( scalar( $fvp->path() ) );
$should = "[ '', 'starter', ], ";
result( $did eq $should, "path() returns '$did'" );
message( "testing to_string type methods on current object" );
$did = $fvp->path_string();
$should = ":starter";
result( $did eq $should, "path_string() returns '$did'" );
$did = $fvp->physical_path_string();
$should = "/home/joe/aardvark/starter";
result( $did eq $should, "physical_path_string() returns '$did'" );
$did = $fvp->path_string( 1 );
$should = ":starter:";
result( $did eq $should, "path_string( 1 ) returns '$did'" );
$did = $fvp->physical_path_string( 1 );
$should = "/home/joe/aardvark/starter/";
result( $did eq $should, "physical_path_string( 1 ) returns '$did'" );
$did = $fvp->child_path_string();
$should = ":starter";
result( $did eq $should, "child_path_string() returns '$did'" );
$did = $fvp->physical_child_path_string();
$should = "/home/joe/aardvark/starter";
result( $did eq $should, "physical_child_path_string() returns '$did'" );
$did = $fvp->child_path_string( 'myfile.pl' );
$should = ":starter:myfile.pl";
result( $did eq $should, "child_path_string( 'myfile.pl' ) returns '$did'" );
$did = $fvp->physical_child_path_string( 'myfile.pl' );
$should = "/home/joe/aardvark/starter/myfile.pl";
result( $did eq $should, "physical_child_path_string( 'myfile.pl' ) returns '$did'" );
$did = $fvp->child_path_string( 'myfile.pl', 1 );
$should = ":starter:myfile.pl:";
result( $did eq $should, "child_path_string( 'myfile.pl', 1 ) returns '$did'" );
$did = $fvp->physical_child_path_string( 'myfile.pl', 1 );
$should = "/home/joe/aardvark/starter/myfile.pl/";
result( $did eq $should, "physical_child_path_string( 'myfile.pl', 1 ) returns '$did'" );
$did = $fvp->child_path_string( undef, 1 );
$should = ":starter:";
result( $did eq $should, "child_path_string( undef, 1 ) returns '$did'" );
$did = $fvp->physical_child_path_string( undef, 1 );
$should = "/home/joe/aardvark/starter/";
result( $did eq $should, "physical_child_path_string( undef, 1 ) returns '$did'" );
message( "testing one-element type methods on current object" );
$did = serialize( scalar( $fvp->path( 'one:two:three' ) ) );
$should = "[ '', 'one', 'two', 'three', ], ";
result( $did eq $should, "path( 'one:two:three' ) returns '$did'" );
$did = $fvp->path_element();
$should = "";
result( $did eq $should, "path_element() returns '$did'" );
$did = $fvp->path_element( 0 );
$should = "";
result( $did eq $should, "path_element( 0 ) returns '$did'" );
$did = $fvp->path_element( 1 );
$should = "one";
result( $did eq $should, "path_element( 1 ) returns '$did'" );
$did = $fvp->path_element( -1 );
$should = "three";
result( $did eq $should, "path_element( -1 ) returns '$did'" );
$did = $fvp->path_element( undef, 'four' );
$should = "four";
result( $did eq $should, "path_element( undef, 'four' ) returns '$did'" );
$did = $fvp->path_element( 2, 'five' );
$should = "five";
result( $did eq $should, "path_element( 2, 'five' ) returns '$did'" );
$did = $fvp->current_path_level( 0 );
result( $did == 0, "current_path_level( 0 ) returns '$did'" );
$did = $fvp->current_path_level();
result( $did == 0, "current_path_level() returns '$did'" );
$did = $fvp->current_path_element();
$should = "four";
result( $did eq $should, "current_path_element() returns '$did'" );
$did = $fvp->inc_path_level();
result( $did == 1, "inc_path_level() returns '$did'" );
$did = $fvp->current_path_level();
result( $did == 1, "current_path_level() returns '$did'" );
$did = $fvp->current_path_element();
$should = "one";
result( $did eq $should, "current_path_element() returns '$did'" );
$did = $fvp->inc_path_level();
result( $did == 2, "inc_path_level() returns '$did'" );
$did = $fvp->current_path_level();
result( $did == 2, "current_path_level() returns '$did'" );
$did = $fvp->current_path_element();
$should = "five";
result( $did eq $should, "current_path_element() returns '$did'" );
$did = $fvp->current_path_element( 'six' );
$should = "six";
result( $did eq $should, "current_path_element( 'six' ) returns '$did'" );
$did = $fvp->current_path_element();
$should = "six";
result( $did eq $should, "current_path_element() returns '$did'" );
$did = $fvp->dec_path_level();
result( $did == 1, "dec_path_level() returns '$did'" );
$did = $fvp->current_path_level();
result( $did == 1, "current_path_level() returns '$did'" );
$did = $fvp->current_path_element();
$should = "one";
result( $did eq $should, "current_path_element() returns '$did'" );
$did = $fvp->path_string();
$should = "four:one:six:three";
result( $did eq $should, "path_string() returns '$did'" );
$did = $fvp->physical_path_string();
$should = "/home/joe/aardvarkfour/one/six/three";
result( $did eq $should, "physical_path_string() returns '$did'" );
}
######################################################################
message( "DONE TESTING File::VirtualPath" );
######################################################################
1;