X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e84010cf650bde4fe2c766cecf31ee542184b48b..f1104df1338dcee773ae7d6363f17c4646878bb6:/samples/console/console.cpp diff --git a/samples/console/console.cpp b/samples/console/console.cpp index 715fb19d9f..91d9b70f85 100644 --- a/samples/console/console.cpp +++ b/samples/console/console.cpp @@ -39,42 +39,46 @@ // conditional compilation // ---------------------------------------------------------------------------- -// what to test (in alphabetic order)? - -//#define TEST_ARRAYS -//#define TEST_CHARSET -//#define TEST_CMDLINE -//#define TEST_DATETIME -//#define TEST_DIR -//#define TEST_DLLLOADER -//#define TEST_ENVIRON -//#define TEST_EXECUTE -//#define TEST_FILE -//#define TEST_FILECONF -//#define TEST_FILENAME -#define TEST_FILETIME -//#define TEST_FTP -//#define TEST_HASH -//#define TEST_INFO_FUNCTIONS -//#define TEST_LIST -//#define TEST_LOCALE -//#define TEST_LOG -//#define TEST_LONGLONG -//#define TEST_MIME -//#define TEST_PATHLIST -//#define TEST_REGCONF -//#define TEST_REGEX -//#define TEST_REGISTRY -//#define TEST_SNGLINST -//#define TEST_SOCKETS -//#define TEST_STREAMS -//#define TEST_STRINGS -//#define TEST_THREADS -//#define TEST_TIMER -//#define TEST_VCARD -- don't enable this (VZ) -//#define TEST_WCHAR -//#define TEST_ZIP -//#define TEST_ZLIB +// what to test (in alphabetic order)? uncomment the line below to do all tests +//#define TEST_ALL +#ifdef TEST_ALL + #define TEST_ARRAYS + #define TEST_CHARSET + #define TEST_CMDLINE + #define TEST_DATETIME + #define TEST_DIR + #define TEST_DLLLOADER + #define TEST_ENVIRON + #define TEST_EXECUTE + #define TEST_FILE + #define TEST_FILECONF + #define TEST_FILENAME + #define TEST_FILETIME + #define TEST_FTP + #define TEST_HASH + #define TEST_INFO_FUNCTIONS + #define TEST_LIST + #define TEST_LOCALE + #define TEST_LOG + #define TEST_LONGLONG + #define TEST_MIME + #define TEST_PATHLIST + #define TEST_REGCONF + #define TEST_REGEX + #define TEST_REGISTRY + #define TEST_SNGLINST + #define TEST_SOCKETS + #define TEST_STREAMS + #define TEST_STRINGS + #define TEST_THREADS + #define TEST_TIMER + // #define TEST_VCARD -- don't enable this (VZ) + #define TEST_WCHAR + #define TEST_ZIP + #define TEST_ZLIB +#else + #define TEST_FILENAME +#endif #ifdef TEST_SNGLINST #include "wx/snglinst.h" @@ -178,6 +182,8 @@ static void TestCharset() #include "wx/cmdline.h" #include "wx/datetime.h" +#if wxUSE_CMDLINE_PARSER + static void ShowCmdLine(const wxCmdLineParser& parser) { wxString s = "Input files: "; @@ -209,6 +215,32 @@ static void ShowCmdLine(const wxCmdLineParser& parser) wxLogMessage(s); } +#endif // wxUSE_CMDLINE_PARSER + +static void TestCmdLineConvert() +{ + static const char *cmdlines[] = + { + "arg1 arg2", + "-a \"-bstring 1\" -c\"string 2\" \"string 3\"", + "literal \\\" and \"\"", + }; + + for ( size_t n = 0; n < WXSIZEOF(cmdlines); n++ ) + { + const char *cmdline = cmdlines[n]; + printf("Parsing: %s\n", cmdline); + wxArrayString args = wxCmdLineParser::ConvertStringToArgs(cmdline); + + size_t count = args.GetCount(); + printf("\targc = %u\n", count); + for ( size_t arg = 0; arg < count; arg++ ) + { + printf("\targv[%u] = %s\n", arg, args[arg]); + } + } +} + #endif // TEST_CMDLINE // ---------------------------------------------------------------------------- @@ -711,19 +743,42 @@ static void TestFileConfRead() static struct FileNameInfo { const wxChar *fullname; + const wxChar *volume; const wxChar *path; const wxChar *name; const wxChar *ext; + bool isAbsolute; + wxPathFormat format; } filenames[] = { - { _T("/usr/bin/ls"), _T("/usr/bin"), _T("ls"), _T("") }, - { _T("/usr/bin/"), _T("/usr/bin"), _T(""), _T("") }, - { _T("~/.zshrc"), _T("~"), _T(".zshrc"), _T("") }, - { _T("../../foo"), _T("../.."), _T("foo"), _T("") }, - { _T("foo.bar"), _T(""), _T("foo"), _T("bar") }, - { _T("~/foo.bar"), _T("~"), _T("foo"), _T("bar") }, - { _T("Mahogany-0.60/foo.bar"), _T("Mahogany-0.60"), _T("foo"), _T("bar") }, - { _T("/tmp/wxwin.tar.bz"), _T("/tmp"), _T("wxwin.tar"), _T("bz") }, + // Unix file names + { _T("/usr/bin/ls"), _T(""), _T("/usr/bin"), _T("ls"), _T(""), TRUE, wxPATH_UNIX }, + { _T("/usr/bin/"), _T(""), _T("/usr/bin"), _T(""), _T(""), TRUE, wxPATH_UNIX }, + { _T("~/.zshrc"), _T(""), _T("~"), _T(".zshrc"), _T(""), TRUE, wxPATH_UNIX }, + { _T("../../foo"), _T(""), _T("../.."), _T("foo"), _T(""), FALSE, wxPATH_UNIX }, + { _T("foo.bar"), _T(""), _T(""), _T("foo"), _T("bar"), FALSE, wxPATH_UNIX }, + { _T("~/foo.bar"), _T(""), _T("~"), _T("foo"), _T("bar"), TRUE, wxPATH_UNIX }, + { _T("/foo"), _T(""), _T("/"), _T("foo"), _T(""), TRUE, wxPATH_UNIX }, + { _T("Mahogany-0.60/foo.bar"), _T(""), _T("Mahogany-0.60"), _T("foo"), _T("bar"), FALSE, wxPATH_UNIX }, + { _T("/tmp/wxwin.tar.bz"), _T(""), _T("/tmp"), _T("wxwin.tar"), _T("bz"), TRUE, wxPATH_UNIX }, + + // Windows file names + { _T("foo.bar"), _T(""), _T(""), _T("foo"), _T("bar"), FALSE, wxPATH_DOS }, + { _T("\\foo.bar"), _T(""), _T("\\"), _T("foo"), _T("bar"), FALSE, wxPATH_DOS }, + { _T("c:foo.bar"), _T("c"), _T(""), _T("foo"), _T("bar"), FALSE, wxPATH_DOS }, + { _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 }, + { _T("\\\\server\\foo.bar"), _T("server"), _T("\\"), _T("foo"), _T("bar"), TRUE, wxPATH_DOS }, + + // Mac file names + { _T("Volume:Dir:File"), _T("Volume"), _T("Dir"), _T("File"), _T(""), TRUE, wxPATH_MAC }, + { _T(":Dir:File"), _T(""), _T("Dir"), _T("File"), _T(""), FALSE, wxPATH_MAC }, + { _T(":File"), _T(""), _T(""), _T("File"), _T(""), FALSE, wxPATH_MAC }, + { _T("File"), _T(""), _T(""), _T("File"), _T(""), FALSE, wxPATH_MAC }, + + // VMS file names + { _T("device:[dir1.dir2.dir3]file.txt"), _T("device"), _T("dir1.dir2.dir3"), _T("file"), _T("txt"), TRUE, wxPATH_VMS }, + { _T("file.txt"), _T(""), _T(""), _T("file"), _T("txt"), FALSE, wxPATH_VMS }, }; static void TestFileNameConstruction() @@ -732,16 +787,29 @@ static void TestFileNameConstruction() for ( size_t n = 0; n < WXSIZEOF(filenames); n++ ) { - wxFileName fn(filenames[n].fullname, wxPATH_UNIX); + const FileNameInfo& fni = filenames[n]; + + wxFileName fn(fni.fullname, fni.format); - printf("Filename: '%s'\t", fn.GetFullPath().c_str()); - if ( !fn.Normalize(wxPATH_NORM_ALL, _T(""), wxPATH_UNIX) ) + wxString fullname = fn.GetFullPath(fni.format); + if ( fullname != fni.fullname ) + { + printf("ERROR: fullname should be '%s'\n", fni.fullname); + } + + bool isAbsolute = fn.IsAbsolute(fni.format); + printf("'%s' is %s (%s)\n\t", + fullname.c_str(), + isAbsolute ? "absolute" : "relative", + isAbsolute == fni.isAbsolute ? "ok" : "ERROR"); + + if ( !fn.Normalize(wxPATH_NORM_ALL, _T(""), fni.format) ) { puts("ERROR (couldn't be normalized)"); } else { - printf("normalized: '%s'\n", fn.GetFullPath().c_str()); + printf("normalized: '%s'\n", fn.GetFullPath(fni.format).c_str()); } } @@ -754,22 +822,26 @@ static void TestFileNameSplit() for ( size_t n = 0; n < WXSIZEOF(filenames); n++ ) { - const FileNameInfo &fni = filenames[n]; - wxString path, name, ext; - wxFileName::SplitPath(fni.fullname, &path, &name, &ext); + const FileNameInfo& fni = filenames[n]; + wxString volume, path, name, ext; + wxFileName::SplitPath(fni.fullname, + &volume, &path, &name, &ext, fni.format); - printf("%s -> path = '%s', name = '%s', ext = '%s'", - fni.fullname, path.c_str(), name.c_str(), ext.c_str()); + printf("%s -> volume = '%s', path = '%s', name = '%s', ext = '%s'", + fni.fullname, + volume.c_str(), path.c_str(), name.c_str(), ext.c_str()); + + if ( volume != fni.volume ) + printf(" (ERROR: volume = '%s')", fni.volume); if ( path != fni.path ) printf(" (ERROR: path = '%s')", fni.path); if ( name != fni.name ) printf(" (ERROR: name = '%s')", fni.name); if ( ext != fni.ext ) printf(" (ERROR: ext = '%s')", fni.ext); + puts(""); } - - puts(""); } static void TestFileNameComparison() @@ -4944,6 +5016,9 @@ int main(int argc, char **argv) #endif // TEST_CHARSET #ifdef TEST_CMDLINE + TestCmdLineConvert(); + +#if wxUSE_CMDLINE_PARSER static const wxCmdLineEntryDesc cmdLineDesc[] = { { wxCMD_LINE_SWITCH, _T("h"), _T("help"), "show this help message", @@ -4984,6 +5059,8 @@ int main(int argc, char **argv) wxLogMessage("Syntax error detected, aborting."); break; } +#endif // wxUSE_CMDLINE_PARSER + #endif // TEST_CMDLINE #ifdef TEST_STRINGS @@ -5110,10 +5187,10 @@ int main(int argc, char **argv) #endif // TEST_FILE #ifdef TEST_FILENAME + TestFileNameConstruction(); TestFileNameSplit(); if ( 0 ) { - TestFileNameConstruction(); TestFileNameCwd(); TestFileNameComparison(); TestFileNameOperations();