#include "wx/dynlib.h"
+#ifdef __UNIX__
+ #include "wx/filename.h"
+ #include "wx/log.h"
+#endif
+
// ----------------------------------------------------------------------------
// test class
// ----------------------------------------------------------------------------
// register in the unnamed registry so that these tests are run by default
CPPUNIT_TEST_SUITE_REGISTRATION( DynamicLibraryTestCase );
-// also include in it's own registry so that these tests can be run alone
+// also include in its own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DynamicLibraryTestCase, "DynamicLibraryTestCase" );
void DynamicLibraryTestCase::Load()
{
-#if defined(__WXMSW__)
+#if defined(__WINDOWS__)
static const wxChar *LIB_NAME = wxT("kernel32.dll");
static const wxChar *FUNC_NAME = wxT("lstrlenA");
#elif defined(__UNIX__)
+#ifdef __DARWIN__
+ static const wxChar *LIB_NAME = wxT("/usr/lib/libc.dylib");
+#else
// weird: using just libc.so does *not* work!
static const wxChar *LIB_NAME = wxT("/lib/libc.so.6");
+#endif
static const wxChar *FUNC_NAME = wxT("strlen");
+
+ if ( !wxFileName::Exists(LIB_NAME) )
+ {
+ wxLogWarning("Shared library \"%s\" doesn't exist, "
+ "skipping DynamicLibraryTestCase::Load() test.");
+ return;
+ }
#else
#error "don't know how to test wxDllLoader on this platform"
#endif
// Call the function dynamically loaded
CPPUNIT_ASSERT( pfnStrlen("foo") == 3 );
-#ifdef __WXMSW__
+#ifdef __WINDOWS__
static const wxChar *FUNC_NAME_AW = wxT("lstrlen");
typedef int (wxSTDCALL *wxStrlenTypeAorW)(const wxChar *);
CPPUNIT_ASSERT_MESSAGE( errMsg2.ToStdString(), pfnStrlenAorW );
CPPUNIT_ASSERT( pfnStrlenAorW(wxT("foobar")) == 6 );
-#endif // __WXMSW__
+#endif // __WINDOWS__
}