summaryrefslogtreecommitdiff
path: root/t/04-subclass.t
diff options
context:
space:
mode:
Diffstat (limited to 't/04-subclass.t')
-rw-r--r--t/04-subclass.t36
1 files changed, 36 insertions, 0 deletions
diff --git a/t/04-subclass.t b/t/04-subclass.t
new file mode 100644
index 0000000..f28b388
--- /dev/null
+++ b/t/04-subclass.t
@@ -0,0 +1,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";
+}