| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/misc/dynamiclib.cpp
 
- // Purpose:     Test wxDynamicLibrary
 
- // Author:      Francesco Montorsi (extracted from console sample)
 
- // Created:     2010-06-13
 
- // Copyright:   (c) 2010 wxWidgets team
 
- ///////////////////////////////////////////////////////////////////////////////
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #include "testprec.h"
 
- #ifdef __BORLANDC__
 
- #   pragma hdrstop
 
- #endif
 
- #include "wx/dynlib.h"
 
- #ifdef __UNIX__
 
-     #include "wx/filename.h"
 
-     #include "wx/log.h"
 
- #endif
 
- // ----------------------------------------------------------------------------
 
- // test class
 
- // ----------------------------------------------------------------------------
 
- class DynamicLibraryTestCase : public CppUnit::TestCase
 
- {
 
- public:
 
-     DynamicLibraryTestCase() { }
 
- private:
 
-     CPPUNIT_TEST_SUITE( DynamicLibraryTestCase );
 
-         CPPUNIT_TEST( Load );
 
-     CPPUNIT_TEST_SUITE_END();
 
-     void Load();
 
-     
 
-     DECLARE_NO_COPY_CLASS(DynamicLibraryTestCase)
 
- };
 
- // register in the unnamed registry so that these tests are run by default
 
- CPPUNIT_TEST_SUITE_REGISTRATION( DynamicLibraryTestCase );
 
- // 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(__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
 
-     wxDynamicLibrary lib(LIB_NAME);
 
-     CPPUNIT_ASSERT( lib.IsLoaded() );
 
-     typedef int (wxSTDCALL *wxStrlenType)(const char *);
 
-     wxStrlenType pfnStrlen = (wxStrlenType)lib.GetSymbol(FUNC_NAME);
 
-     
 
-     wxString errMsg = wxString::Format("ERROR: function '%s' wasn't found in '%s'.\n",
 
-                                        FUNC_NAME, LIB_NAME);
 
-     CPPUNIT_ASSERT_MESSAGE( errMsg.ToStdString(), pfnStrlen );
 
-     // Call the function dynamically loaded
 
-     CPPUNIT_ASSERT( pfnStrlen("foo") == 3 );
 
- #ifdef __WINDOWS__
 
-     static const wxChar *FUNC_NAME_AW = wxT("lstrlen");
 
-     typedef int (wxSTDCALL *wxStrlenTypeAorW)(const wxChar *);
 
-     wxStrlenTypeAorW
 
-         pfnStrlenAorW = (wxStrlenTypeAorW)lib.GetSymbolAorW(FUNC_NAME_AW);
 
-     wxString errMsg2 = wxString::Format("ERROR: function '%s' wasn't found in '%s'.\n",
 
-                                        FUNC_NAME_AW, LIB_NAME);
 
-     CPPUNIT_ASSERT_MESSAGE( errMsg2.ToStdString(), pfnStrlenAorW );
 
-     CPPUNIT_ASSERT( pfnStrlenAorW(wxT("foobar")) == 6 );
 
- #endif // __WINDOWS__
 
- }
 
 
  |