summaryrefslogtreecommitdiff
path: root/t/04-subclass.t
blob: f28b3889a37612d6e7729bdfe2c87bb4df7e0459 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl

# Test subclassing of Path::Class

use strict;
use warnings;

use Test::More tests => 6;

{
    package My::File;
    use parent qw(Path::Class::File);

    sub dir_class { return "My::Dir" }
}

{
    package My::Dir;
    use parent qw(Path::Class::Dir);

    sub file_class { return "My::File" }
}

{
    my $file = My::File->new("/path/to/some/file");
    isa_ok $file, "My::File";
    is $file->as_foreign("Unix"), "/path/to/some/file";

    my $dir = $file->dir;
    isa_ok $dir, "My::Dir";
    is $dir->as_foreign("Unix"), "/path/to/some";

    my $file_again = $dir->file("bar");
    isa_ok $file_again, "My::File";
    is $file_again->as_foreign("Unix"), "/path/to/some/bar";
}