moved non-interactive tests for wxDynamicLibrary, wxGet/SetEnv, wxTempFile, wxCopyFile to appropriate CppUnit test suites;
removed wxFile and wxTextFile tests (complete testsuites already exist for them) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
86
tests/misc/dynamiclib.cpp
Normal file
86
tests/misc/dynamiclib.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: tests/misc/dynamiclib.cpp
|
||||
// Purpose: Test wxDynamicLibrary
|
||||
// Author: Francesco Montorsi (extracted from console sample)
|
||||
// Created: 2010-06-13
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2010 wxWidgets team
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "testprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
# pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include "wx/dynlib.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// 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 it's own registry so that these tests can be run alone
|
||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DynamicLibraryTestCase, "DynamicLibraryTestCase" );
|
||||
|
||||
void DynamicLibraryTestCase::Load()
|
||||
{
|
||||
#if defined(__WXMSW__)
|
||||
static const wxChar *LIB_NAME = wxT("kernel32.dll");
|
||||
static const wxChar *FUNC_NAME = wxT("lstrlenA");
|
||||
#elif defined(__UNIX__)
|
||||
// weird: using just libc.so does *not* work!
|
||||
static const wxChar *LIB_NAME = wxT("/lib/libc.so.6");
|
||||
static const wxChar *FUNC_NAME = wxT("strlen");
|
||||
#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 __WXMSW__
|
||||
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 // __WXMSW__
|
||||
}
|
Reference in New Issue
Block a user