diff --git a/tests/misc/dynamiclib.cpp b/tests/misc/dynamiclib.cpp index 99aca1bf74..b6b1ad1099 100644 --- a/tests/misc/dynamiclib.cpp +++ b/tests/misc/dynamiclib.cpp @@ -23,47 +23,26 @@ // test class // ---------------------------------------------------------------------------- -class DynamicLibraryTestCase : public CppUnit::TestCase -{ -public: - DynamicLibraryTestCase() { } - -private: - CPPUNIT_TEST_SUITE( DynamicLibraryTestCase ); - CPPUNIT_TEST( Load ); - CPPUNIT_TEST_SUITE_END(); - - void Load(); - - wxDECLARE_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() +TEST_CASE("DynamicLibrary::Load", "[dynlib]") { #if defined(__WINDOWS__) - static const wxChar *LIB_NAME = wxT("kernel32.dll"); - static const wxChar *FUNC_NAME = wxT("lstrlenA"); + static const char* const LIB_NAME = "kernel32.dll"; + static const char* const FUNC_NAME = "lstrlenA"; #elif defined(__UNIX__) #ifdef __DARWIN__ - static const wxChar *LIB_NAME = wxT("/usr/lib/libc.dylib"); + static const char* const LIB_NAME = "/usr/lib/libc.dylib"; #else // weird: using just libc.so does *not* work! - static const wxChar *LIB_NAME = wxT("/lib/libc.so.6"); + static const char* const LIB_NAME = "/lib/libc.so.6"; #endif - static const wxChar *FUNC_NAME = wxT("strlen"); + static const char* const FUNC_NAME = "strlen"; // Under macOS 12+ we can actually load the libc dylib even though the // corresponding file doesn't exist on disk, so skip this check there. #ifndef __DARWIN__ if ( !wxFileName::Exists(LIB_NAME) ) { - WARN("Shared library \"" << wxString(LIB_NAME) << "\" doesn't exist, " + WARN("Shared library \"" << LIB_NAME << "\" doesn't exist, " "skipping DynamicLibraryTestCase::Load() test."); return; } @@ -73,29 +52,36 @@ void DynamicLibraryTestCase::Load() #endif wxDynamicLibrary lib(LIB_NAME); - CPPUNIT_ASSERT( lib.IsLoaded() ); + REQUIRE( lib.IsLoaded() ); - typedef int (wxSTDCALL *wxStrlenType)(const char *); - wxStrlenType pfnStrlen = (wxStrlenType)lib.GetSymbol(FUNC_NAME); + SECTION("strlen") + { + 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 != NULL) ); + INFO("'" << FUNC_NAME << "' wasn't found in '" << LIB_NAME << "'"); + CHECK( pfnStrlen ); - // Call the function dynamically loaded - CPPUNIT_ASSERT( pfnStrlen("foo") == 3 ); + if ( pfnStrlen ) + { + // Call the function dynamically loaded + CHECK( pfnStrlen("foo") == 3 ); + } + } #ifdef __WINDOWS__ - static const wxChar *FUNC_NAME_AW = wxT("lstrlen"); + SECTION("A/W") + { + static const wxChar *FUNC_NAME_AW = wxT("lstrlen"); - typedef int (wxSTDCALL *wxStrlenTypeAorW)(const wxChar *); - wxStrlenTypeAorW - pfnStrlenAorW = (wxStrlenTypeAorW)lib.GetSymbolAorW(FUNC_NAME_AW); + 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 != NULL) ); + INFO( "'" << FUNC_NAME_AW << "' wasn't found in '" << LIB_NAME << "'"); + REQUIRE( pfnStrlenAorW ); - CPPUNIT_ASSERT( pfnStrlenAorW(wxT("foobar")) == 6 ); + CHECK( pfnStrlenAorW(wxT("foobar")) == 6 ); + } #endif // __WINDOWS__ }