summaryrefslogtreecommitdiff
path: root/t/old-file.t
diff options
context:
space:
mode:
Diffstat (limited to 't/old-file.t')
-rw-r--r--t/old-file.t81
1 files changed, 81 insertions, 0 deletions
diff --git a/t/old-file.t b/t/old-file.t
new file mode 100644
index 0000000..e1ab8f5
--- /dev/null
+++ b/t/old-file.t
@@ -0,0 +1,81 @@
+use strict;
+use warnings;
+
+use URI::file;
+$URI::file::DEFAULT_AUTHORITY = undef;
+
+my @tests = (
+[ "file", "unix", "win32", "mac" ],
+#---------------- ------------ --------------- --------------
+[ "file://localhost/foo/bar",
+ "!/foo/bar", "!\\foo\\bar", "!foo:bar", ],
+[ "file:///foo/bar",
+ "!/foo/bar", "!\\foo\\bar", "!foo:bar", ],
+[ "file:/foo/bar", "/foo/bar", "\\foo\\bar", "foo:bar", ],
+[ "foo/bar", "foo/bar", "foo\\bar", ":foo:bar",],
+[ "file://foo3445x/bar","!//foo3445x/bar", "\\\\foo3445x\\bar", "!foo3445x:bar"],
+[ "file://a:/", "!//a:/", "!A:\\", undef],
+[ "file:/", "/", "\\", undef],
+[ "file://A:relative/", "!//A:relative/", "A:", undef],
+[ ".", ".", ".", ":"],
+[ "..", "..", "..", "::"],
+[ "%2E", "!.", "!.", ":."],
+[ "../%2E%2E", "!../..", "!..\\..", "::.."],
+);
+if ($^O eq "MacOS") {
+my @extratests = (
+[ "../..", "../..", "..\\..", ":::"],
+[ "../../", "../../", "..\\..\\", "!:::"],
+[ "file:./foo.bar", "!./foo.bar", "!.\\foo.bar", "!:foo.bar"],
+[ "file:/%2Ffoo/bar", undef, undef, "/foo:bar"],
+[ "file:/.%2Ffoo/bar", undef, undef, "./foo:bar"],
+[ "file:/fee/.%2Ffoo%2Fbar", undef, undef, "fee:./foo/bar"],
+[ "file:/.%2Ffoo%2Fbar/", undef, undef, "./foo/bar:"],
+[ "file:/.%2Ffoo%2Fbar", undef, undef, "!./foo/bar:"],
+[ "file:/%2E%2E/foo", "!/../foo", "!\\..\\foo" , "..:foo"],
+[ "file:/bar/%2E/foo", "!/bar/./foo", "!\\bar\\.\\foo", "bar:.:foo"],
+[ "file:/foo/../bar", "/foo/../bar", "\\foo\\..\\bar", "foo::bar"],
+[ "file:/a/b/../../c/d", "/a/b/../../c/d", "\\a\\b\\..\\..\\c\\d", "a:b:::c:d"],
+);
+ push(@tests,@extratests);
+}
+
+my @os = @{shift @tests};
+shift @os; # file
+
+my $num = @tests;
+print "1..$num\n";
+
+my $testno = 1;
+
+for my $t (@tests) {
+ my @t = @$t;
+ my $file = shift @t;
+ my $err;
+
+ my $u = URI->new($file, "file");
+ my $i = 0;
+ for my $os (@os) {
+ my $f = $u->file($os);
+ my $expect = $t[$i];
+ $f = "<undef>" unless defined $f;
+ $expect = "<undef>" unless defined $expect;
+ my $loose;
+ $loose++ if $expect =~ s/^!//;
+ if ($expect ne $f) {
+ print "URI->new('$file', 'file')->file('$os') ne $expect, but $f\n";
+ $err++;
+ }
+ if (defined($t[$i]) && !$loose) {
+ my $u2 = URI::file->new($t[$i], $os);
+ unless ($u2->as_string eq $file) {
+ print "URI::file->new('$t[$i]', '$os') ne $file, but $u2\n";
+ $err++;
+ }
+ }
+ $i++;
+ }
+ print "not " if $err;
+ print "ok $testno\n";
+ $testno++;
+}