--- /dev/null
+use strict;
+use Test;
+use Win32;
+
+my @paths = qw(
+ /
+ //
+ .
+ ..
+ c:
+ c:/
+ c:./
+ c:/.
+ c:/..
+ c:./..
+ //./
+ //.
+ //..
+ //./..
+);
+push @paths, map { my $x = $_; $x =~ s,/,\\,g; $x } @paths;
+push @paths, qw(
+ ../\
+ c:.\\../\
+ c:/\..//
+ c://.\/./\
+ \\.\\../\
+ //\..//
+ //.\/./\
+);
+
+my $drive = $ENV{SYSTEMDRIVE};
+if ($drive) {
+ for (@paths) {
+ s/^c:/$drive/;
+ }
+ push @paths, $ENV{SYSTEMROOT} if $ENV{SYSTEMROOT};
+}
+my %expect;
+@expect{@paths} = map { my $x = $_;
+ $x =~ s,(.[/\\])[/\\]+,$1,g;
+ $x =~ s,^(\w):,\U$1:,;
+ $x } @paths;
+
+plan tests => scalar(@paths);
+
+my $i = 1;
+for (@paths) {
+ my $got = Win32::GetLongPathName($_);
+ print "# '$_' => expect '$expect{$_}' => got '$got'\n";
+ print "not " unless $expect{$_} eq $got;
+ print "ok $i\n";
+ ++$i;
+}