// test data
// ----------------------------------------------------------------------------
-static struct FileNameInfo
+static struct TestFileNameInfo
{
const wxChar *fullname;
const wxChar *volume;
{ _T("c:\\foo.bar"), _T("c"), _T("\\"), _T("foo"), _T("bar"), true, wxPATH_DOS },
{ _T("c:\\Windows\\command.com"), _T("c"), _T("\\Windows"), _T("command"), _T("com"), true, wxPATH_DOS },
+#if 0
// NB: when using the wxFileName::GetLongPath() function on these two
// strings, the program will hang for several seconds blocking inside
// Win32 GetLongPathName() function
{ _T("\\\\server\\foo.bar"), _T("server"), _T("\\"), _T("foo"), _T("bar"), true, wxPATH_DOS },
{ _T("\\\\server\\dir\\foo.bar"), _T("server"), _T("\\dir"), _T("foo"), _T("bar"), true, wxPATH_DOS },
+#endif
// consecutive [back]slashes should be treated as single occurrences of
// them and not interpreted as share names if there is a volume name
{ _T("File.Ext"), _T(""), _T(""), _T("File"), _T(".Ext"), false, wxPATH_MAC },
#endif // 0
+#if 0
// VMS file names
// NB: on Windows they have the same effect of the \\server\\ strings
// (see the note above)
{ _T("device:[dir1.dir2.dir3]file.txt"), _T("device"), _T("dir1.dir2.dir3"), _T("file"), _T("txt"), true, wxPATH_VMS },
+#endif
{ _T("file.txt"), _T(""), _T(""), _T("file"), _T("txt"), false, wxPATH_VMS },
};
{
for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
{
- const FileNameInfo& fni = filenames[n];
+ const TestFileNameInfo& fni = filenames[n];
wxFileName fn(fni.fullname, fni.format);
{
for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
{
- const FileNameInfo& fni = filenames[n];
+ const TestFileNameInfo& fni = filenames[n];
wxString volume, path, name, ext;
wxFileName::SplitPath(fni.fullname,
&volume, &path, &name, &ext, fni.format);
static const struct FileNameTest
{
- wxString original;
+ const char *original;
int flags;
- wxString expected;
+ const char *expected;
wxPathFormat fmt;
} tests[] =
{
// test wxPATH_NORM_TILDE
// NB: do the tilde expansion also under Windows to test if it works there too
{ "/a/b/~", wxPATH_NORM_TILDE, "/a/b/~", wxPATH_UNIX },
- { "/~/a/b", wxPATH_NORM_TILDE, home + "a/b", wxPATH_UNIX },
- { "~/a/b", wxPATH_NORM_TILDE, home + "a/b", wxPATH_UNIX },
+ { "/~/a/b", wxPATH_NORM_TILDE, "HOME/a/b", wxPATH_UNIX },
+ { "~/a/b", wxPATH_NORM_TILDE, "HOME/a/b", wxPATH_UNIX },
// test wxPATH_NORM_CASE
{ "Foo", wxPATH_NORM_CASE, "Foo", wxPATH_UNIX },
"c:\\program files\\wx", wxPATH_DOS },
{ "C:/Program Files/wx", wxPATH_NORM_ALL | wxPATH_NORM_CASE,
"c:\\program files\\wx", wxPATH_DOS },
+ { "C:\\Users\\zeitlin", wxPATH_NORM_ALL | wxPATH_NORM_CASE,
+ "c:\\users\\zeitlin", wxPATH_DOS },
// test wxPATH_NORM_ABSOLUTE
- { "a/b/", wxPATH_NORM_ABSOLUTE, cwd + "a/b/", wxPATH_UNIX },
- { "a/b/c.ext", wxPATH_NORM_ABSOLUTE, cwd + "a/b/c.ext", wxPATH_UNIX },
+ { "a/b/", wxPATH_NORM_ABSOLUTE, "CWD/a/b/", wxPATH_UNIX },
+ { "a/b/c.ext", wxPATH_NORM_ABSOLUTE, "CWD/a/b/c.ext", wxPATH_UNIX },
{ "/a", wxPATH_NORM_ABSOLUTE, "/a", wxPATH_UNIX },
// test giving no flags at all to Normalize()
{ "a/b/", 0, "a/b/", wxPATH_UNIX },
{ "a/b/c.ext", 0, "a/b/c.ext", wxPATH_UNIX },
- { "/a", 0, "/a", wxPATH_UNIX }
+ { "/a", 0, "/a", wxPATH_UNIX },
+
+ // test handling dots without wxPATH_NORM_DOTS and wxPATH_NORM_ABSOLUTE
+ // for both existing and non-existent files (this is important under
+ // MSW where GetLongPathName() works only for the former)
+ { "./foo", wxPATH_NORM_LONG, "./foo", wxPATH_UNIX },
+ { "../foo", wxPATH_NORM_LONG, "../foo", wxPATH_UNIX },
+ { ".\\test.bkl", wxPATH_NORM_LONG, ".\\test.bkl", wxPATH_DOS },
+ { ".\\foo", wxPATH_NORM_LONG, ".\\foo", wxPATH_DOS },
+ { "..\\Makefile.in", wxPATH_NORM_LONG, "..\\Makefile.in", wxPATH_DOS },
+ { "..\\foo", wxPATH_NORM_LONG, "..\\foo", wxPATH_DOS },
+#ifdef __WXMSW__
+ { "..\\MKINST~1", wxPATH_NORM_LONG, "..\\mkinstalldirs", wxPATH_DOS },
+#endif
};
// set the env var ABCDEF
wxFileName fn(fnt.original, fnt.fmt);
// be sure this normalization does not fail
- CPPUNIT_ASSERT_MESSAGE
+ WX_ASSERT_MESSAGE
(
- (const char *)wxString::Format(_T("Normalize(%s) failed"), fnt.original).mb_str(),
+ ("#%d: Normalize(%s) failed", (int)i, fnt.original),
fn.Normalize(fnt.flags, cwd, fnt.fmt)
);
// compare result with expected string
- WX_ASSERT_STR_EQUAL( fnt.expected, fn.GetFullPath(fnt.fmt) );
+ wxString expected(tests[i].expected);
+ expected.Replace(_T("HOME/"), home);
+ expected.Replace(_T("CWD/"), cwd);
+ WX_ASSERT_EQUAL_MESSAGE
+ (
+ ("array element #%d", (int)i),
+ expected, fn.GetFullPath(fnt.fmt)
+ );
}
}