#define TEST_THREADS
#define TEST_TIMER
// #define TEST_VCARD -- don't enable this (VZ)
+ #define TEST_VOLUME
#define TEST_WCHAR
#define TEST_ZIP
#define TEST_ZLIB
#undef TEST_ALL
static const bool TEST_ALL = TRUE;
#else
- #define TEST_THREADS
+ #define TEST_FILENAME
static const bool TEST_ALL = FALSE;
#endif
#ifdef TEST_INTERACTIVE
#undef TEST_INTERACTIVE
- static const bool TEST_INTERACTIVE = FALSE;
+ static const bool TEST_INTERACTIVE = TRUE;
#else
static const bool TEST_INTERACTIVE = FALSE;
#endif
{ _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 },
+ // wxFileName support for Mac file names is broken crurently
+#if 0
// Mac file names
{ _T("Volume:Dir:File"), _T("Volume"), _T("Dir"), _T("File"), _T(""), TRUE, wxPATH_MAC },
{ _T("Volume:Dir:Subdir:File"), _T("Volume"), _T("Dir:Subdir"), _T("File"), _T(""), TRUE, wxPATH_MAC },
{ _T(":Dir:File"), _T(""), _T("Dir"), _T("File"), _T(""), FALSE, wxPATH_MAC },
{ _T(":File.Ext"), _T(""), _T(""), _T("File"), _T(".Ext"), FALSE, wxPATH_MAC },
{ _T("File.Ext"), _T(""), _T(""), _T("File"), _T(".Ext"), FALSE, wxPATH_MAC },
+#endif // 0
// VMS file names
{ _T("device:[dir1.dir2.dir3]file.txt"), _T("device"), _T("dir1.dir2.dir3"), _T("file"), _T("txt"), TRUE, wxPATH_VMS },
printf("ERROR: fullname should be '%s'\n", fni.fullname);
}
- bool isAbsolute = fn.IsAbsolute();
+ bool isAbsolute = fn.IsAbsolute(fni.format);
printf("'%s' is %s (%s)\n\t",
fullname.c_str(),
isAbsolute ? "absolute" : "relative",
static const char *tmpprefixes[] =
{
+ "",
"foo",
- "/tmp/foo",
"..",
"../bar",
+#ifdef __UNIX__
+ "/tmp/foo",
"/tmp/foo/bar", // this one must be an error
+#endif // __UNIX__
};
for ( size_t n = 0; n < WXSIZEOF(tmpprefixes); n++ )
{
wxFileName fn(_T("testdata.fc"));
- wxDateTime dtAccess, dtMod, dtChange;
- if ( !fn.GetTimes(&dtAccess, &dtMod, &dtChange) )
+ wxDateTime dtAccess, dtMod, dtCreate;
+ if ( !fn.GetTimes(&dtAccess, &dtMod, &dtCreate) )
{
wxPrintf(_T("ERROR: GetTimes() failed.\n"));
}
static const wxChar *fmt = _T("%Y-%b-%d %H:%M:%S");
wxPrintf(_T("File times for '%s':\n"), fn.GetFullPath().c_str());
- wxPrintf(_T("Access: \t%s\n"), dtAccess.Format(fmt).c_str());
- wxPrintf(_T("Mod/creation:\t%s\n"), dtMod.Format(fmt).c_str());
- wxPrintf(_T("Change: \t%s\n"), dtChange.Format(fmt).c_str());
+ wxPrintf(_T("Creation: \t%s\n"), dtCreate.Format(fmt).c_str());
+ wxPrintf(_T("Last read: \t%s\n"), dtAccess.Format(fmt).c_str());
+ wxPrintf(_T("Last write: \t%s\n"), dtMod.Format(fmt).c_str());
}
}
_T("application/x-xyz"),
_T("xyzview '%s'"), // open cmd
_T(""), // print cmd
- _T("XYZ File") // description
- _T(".xyz"), // extensions
- NULL // end of extensions
+ _T("XYZ File"), // description
+ _T(".xyz"), // extensions
+ NULL // end of extensions
);
ftInfo.SetShortDesc(_T("XYZFile")); // used under Win32 only
// multiplication will not overflow)
wxLongLong ll = MAKE_LL((rand() >> 12), rand(), rand(), rand());
- // get a random long (not wxLongLong for now) to divide it with
- long l = rand();
+ // get a random (but non null) long (not wxLongLong for now) to divide
+ // it with
+ long l;
+ do
+ {
+ l = rand();
+ }
+ while ( !l );
+
q = ll / l;
r = ll % l;
#endif // TEST_VCARD
+// ----------------------------------------------------------------------------
+// wxVolume tests
+// ----------------------------------------------------------------------------
+
+#if !wxUSE_FSVOLUME
+ #undef TEST_VOLUME
+#endif
+
+#ifdef TEST_VOLUME
+
+#include "wx/volume.h"
+
+static const wxChar *volumeKinds[] =
+{
+ _T("floppy"),
+ _T("hard disk"),
+ _T("CD-ROM"),
+ _T("DVD-ROM"),
+ _T("network volume"),
+ _T("other volume"),
+};
+
+static void TestFSVolume()
+{
+ wxPuts(_T("*** Testing wxFSVolume class ***"));
+
+ wxArrayString volumes = wxFSVolume::GetVolumes();
+ size_t count = volumes.GetCount();
+
+ if ( !count )
+ {
+ wxPuts(_T("ERROR: no mounted volumes?"));
+ return;
+ }
+
+ wxPrintf(_T("%u mounted volumes found:\n"), count);
+
+ for ( size_t n = 0; n < count; n++ )
+ {
+ wxFSVolume vol(volumes[n]);
+ if ( !vol.IsOk() )
+ {
+ wxPuts(_T("ERROR: couldn't create volume"));
+ continue;
+ }
+
+ wxPrintf(_T("%u: %s (%s), %s, %s, %s\n"),
+ n + 1,
+ vol.GetDisplayName().c_str(),
+ vol.GetName().c_str(),
+ volumeKinds[vol.GetKind()],
+ vol.IsWritable() ? _T("rw") : _T("ro"),
+ vol.GetFlags() & wxFS_VOL_REMOVABLE ? _T("removable")
+ : _T("fixed"));
+ }
+}
+
+#endif // TEST_VOLUME
+
// ----------------------------------------------------------------------------
// wide char (Unicode) support
// ----------------------------------------------------------------------------
#include "wx/encconv.h"
#include "wx/buffer.h"
+static const char textInUtf8[] =
+{
+ 208, 157, 208, 181, 209, 129, 208, 186, 208, 176, 208, 183, 208, 176,
+ 208, 189, 208, 189, 208, 190, 32, 208, 191, 208, 190, 209, 128, 208,
+ 176, 208, 180, 208, 190, 208, 178, 208, 176, 208, 187, 32, 208, 188,
+ 208, 181, 208, 189, 209, 143, 32, 209, 129, 208, 178, 208, 190, 208,
+ 181, 208, 185, 32, 208, 186, 209, 128, 209, 131, 209, 130, 208, 181,
+ 208, 185, 209, 136, 208, 181, 208, 185, 32, 208, 189, 208, 190, 208,
+ 178, 208, 190, 209, 129, 209, 130, 209, 140, 209, 142, 0
+};
+
static void TestUtf8()
{
puts("*** Testing UTF8 support ***\n");
- static const char textInUtf8[] =
- {
- 208, 157, 208, 181, 209, 129, 208, 186, 208, 176, 208, 183, 208, 176,
- 208, 189, 208, 189, 208, 190, 32, 208, 191, 208, 190, 209, 128, 208,
- 176, 208, 180, 208, 190, 208, 178, 208, 176, 208, 187, 32, 208, 188,
- 208, 181, 208, 189, 209, 143, 32, 209, 129, 208, 178, 208, 190, 208,
- 181, 208, 185, 32, 208, 186, 209, 128, 209, 131, 209, 130, 208, 181,
- 208, 185, 209, 136, 208, 181, 208, 185, 32, 208, 189, 208, 190, 208,
- 178, 208, 190, 209, 129, 209, 130, 209, 140, 209, 142, 0
- };
-
char buf[1024];
wchar_t wbuf[1024];
if ( wxConvUTF8.MB2WC(wbuf, textInUtf8, WXSIZEOF(textInUtf8)) <= 0 )
}
else
{
- // using wxEncodingConverter
-#if 0
- wxEncodingConverter ec;
- ec.Init(wxFONTENCODING_UNICODE, wxFONTENCODING_KOI8);
- ec.Convert(wbuf, buf);
-#else // using wxCSConv
wxCSConv conv(_T("koi8-r"));
if ( conv.WC2MB(buf, wbuf, 0 /* not needed wcslen(wbuf) */) <= 0 )
{
puts("ERROR: conversion to KOI8-R failed.");
}
else
-#endif
+ {
+ printf("The resulting string (in KOI8-R): %s\n", buf);
+ }
+ }
+
+ if ( wxConvUTF8.WC2MB(buf, L"à la", WXSIZEOF(buf)) <= 0 )
+ {
+ puts("ERROR: conversion to UTF-8 failed.");
+ }
+ else
+ {
+ printf("The string in UTF-8: %s\n", buf);
+ }
+
+ puts("");
+}
+
+static void TestEncodingConverter()
+{
+ wxPuts(_T("*** Testing wxEncodingConverter ***\n"));
- printf("The resulting string (in koi8-r): %s\n", buf);
+ // using wxEncodingConverter should give the same result as above
+ char buf[1024];
+ wchar_t wbuf[1024];
+ if ( wxConvUTF8.MB2WC(wbuf, textInUtf8, WXSIZEOF(textInUtf8)) <= 0 )
+ {
+ puts("ERROR: UTF-8 decoding failed.");
+ }
+ else
+ {
+ wxEncodingConverter ec;
+ ec.Init(wxFONTENCODING_UNICODE, wxFONTENCODING_KOI8);
+ ec.Convert(wbuf, buf);
+ printf("The same string obtained using wxEC: %s\n", buf);
}
+
+ puts("");
}
#endif // TEST_WCHAR
#ifdef TEST_ARRAYS
-static void PrintArray(const char* name, const wxArrayString& array)
-{
- printf("Dump of the array '%s'\n", name);
+#include "wx/dynarray.h"
- size_t nCount = array.GetCount();
- for ( size_t n = 0; n < nCount; n++ )
- {
- printf("\t%s[%u] = '%s'\n", name, n, array[n].c_str());
- }
-}
+#define DefineCompare(name, T) \
+ \
+int wxCMPFUNC_CONV name ## CompareValues(T first, T second) \
+{ \
+ return first - second; \
+} \
+ \
+int wxCMPFUNC_CONV name ## Compare(T* first, T* second) \
+{ \
+ return *first - *second; \
+} \
+ \
+int wxCMPFUNC_CONV name ## RevCompare(T* first, T* second) \
+{ \
+ return *second - *first; \
+} \
+
+DefineCompare(Short, short);
+DefineCompare(Int, int);
+
+// test compilation of all macros
+WX_DEFINE_ARRAY(short, wxArrayShort);
+WX_DEFINE_SORTED_ARRAY(short, wxSortedArrayShortNoCmp);
+WX_DEFINE_SORTED_ARRAY_CMP(short, ShortCompareValues, wxSortedArrayShort);
+WX_DEFINE_SORTED_ARRAY_CMP(int, IntCompareValues, wxSortedArrayInt);
+
+WX_DECLARE_OBJARRAY(Bar, ArrayBars);
+#include "wx/arrimpl.cpp"
+WX_DEFINE_OBJARRAY(ArrayBars);
-static void PrintArray(const char* name, const wxArrayInt& array)
+static void PrintArray(const char* name, const wxArrayString& array)
{
printf("Dump of the array '%s'\n", name);
size_t nCount = array.GetCount();
for ( size_t n = 0; n < nCount; n++ )
{
- printf("\t%s[%u] = %d\n", name, n, array[n]);
+ printf("\t%s[%u] = '%s'\n", name, n, array[n].c_str());
}
}
return first.length() - second.length();
}
-int wxCMPFUNC_CONV IntCompare(int *first,
- int *second)
-{
- return *first - *second;
-}
-
-int wxCMPFUNC_CONV IntRevCompare(int *first,
- int *second)
-{
- return *second - *first;
+#define TestArrayOf(name) \
+ \
+static void PrintArray(const char* name, const wxSortedArray##name & array) \
+{ \
+ printf("Dump of the array '%s'\n", name); \
+ \
+ size_t nCount = array.GetCount(); \
+ for ( size_t n = 0; n < nCount; n++ ) \
+ { \
+ printf("\t%s[%u] = %d\n", name, n, array[n]); \
+ } \
+} \
+ \
+static void PrintArray(const char* name, const wxArray##name & array) \
+{ \
+ printf("Dump of the array '%s'\n", name); \
+ \
+ size_t nCount = array.GetCount(); \
+ for ( size_t n = 0; n < nCount; n++ ) \
+ { \
+ printf("\t%s[%u] = %d\n", name, n, array[n]); \
+ } \
+} \
+ \
+static void TestArrayOf ## name ## s() \
+{ \
+ printf("*** Testing wxArray%s ***\n", #name); \
+ \
+ wxArray##name a; \
+ a.Add(1); \
+ a.Add(17); \
+ a.Add(5); \
+ a.Add(3); \
+ \
+ puts("Initially:"); \
+ PrintArray("a", a); \
+ \
+ puts("After sort:"); \
+ a.Sort(name ## Compare); \
+ PrintArray("a", a); \
+ \
+ puts("After reverse sort:"); \
+ a.Sort(name ## RevCompare); \
+ PrintArray("a", a); \
+ \
+ wxSortedArray##name b; \
+ b.Add(1); \
+ b.Add(17); \
+ b.Add(5); \
+ b.Add(3); \
+ \
+ puts("Sorted array initially:"); \
+ PrintArray("b", b); \
}
-static void TestArrayOfInts()
-{
- puts("*** Testing wxArrayInt ***\n");
-
- wxArrayInt a;
- a.Add(1);
- a.Add(17);
- a.Add(5);
- a.Add(3);
-
- puts("Initially:");
- PrintArray("a", a);
-
- puts("After sort:");
- a.Sort(IntCompare);
- PrintArray("a", a);
-
- puts("After reverse sort:");
- a.Sort(IntRevCompare);
- PrintArray("a", a);
-}
-
-#include "wx/dynarray.h"
-
-WX_DECLARE_OBJARRAY(Bar, ArrayBars);
-#include "wx/arrimpl.cpp"
-WX_DEFINE_OBJARRAY(ArrayBars);
+TestArrayOf(Short);
+TestArrayOf(Int);
static void TestArrayOfObjects()
{
PrintArray("a1", a1);
TestArrayOfObjects();
+ TestArrayOfShorts();
}
- else
- {
- TestArrayOfInts();
- }
+
+ TestArrayOfInts();
#endif // TEST_ARRAYS
#ifdef TEST_DIR
#endif // TEST_FILE
#ifdef TEST_FILENAME
- if ( 1 )
+ if ( 0 )
{
wxFileName fn;
fn.Assign("c:\\foo", "bar.baz");
DumpFileName(fn);
}
- if ( TEST_ALL )
+ if ( 1 )
{
TestFileNameConstruction();
TestFileNameMakeRelative();
{
TestOsInfo();
TestUserInfo();
- TestDiskInfo();
+
+ if ( TEST_INTERACTIVE )
+ TestDiskInfo();
}
#endif // TEST_INFO_FUNCTIONS
TestVCardWrite();
#endif // TEST_VCARD
+#ifdef TEST_VOLUME
+ TestFSVolume();
+#endif // TEST_VOLUME
+
#ifdef TEST_WCHAR
TestUtf8();
+ TestEncodingConverter();
#endif // TEST_WCHAR
#ifdef TEST_ZIP