From 2144ca38d214229ba6ceaf71d90b73ebbec7c042 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 17 Apr 2022 18:44:51 +0200 Subject: [PATCH] Get rid of CppUnit boilerplate in DynamicLibraryTestCase Use CATCH macros directly, this is simpler and more clear. Also use narrow strings instead of wide ones and get rid of wxT() too. No real changes. This commit is best viewed ignoring whitespace-only changes. --- tests/misc/dynamiclib.cpp | 74 ++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 44 deletions(-) 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__ }