diff --git a/qa/common/CMakeLists.txt b/qa/common/CMakeLists.txt index 1e0eeeb269..08e2bfd5a1 100644 --- a/qa/common/CMakeLists.txt +++ b/qa/common/CMakeLists.txt @@ -23,7 +23,7 @@ find_package( wxWidgets 3.0.0 COMPONENTS gl aui adv html core net base xml stc R set( common_srcs # This is needed for the global mock objects - common_mocks.cpp + ${CMAKE_SOURCE_DIR}/qa/mocks/kicad/common_mocks.cpp # The main test entry points test_module.cpp @@ -71,6 +71,8 @@ include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/pcbnew ${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/qa/mocks/pcbnew + ${CMAKE_SOURCE_DIR}/qa/mocks/include ${INC_AFTER} ) diff --git a/qa/mocks/include/mock_kiface_base.h b/qa/mocks/include/mock_kiface_base.h new file mode 100644 index 0000000000..f2795c9974 --- /dev/null +++ b/qa/mocks/include/mock_kiface_base.h @@ -0,0 +1,37 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2019-2022 KiCad Developers, see CHANGELOG.TXT for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once +#include +#include + +MOCK_BASE_CLASS( MOCK_KIFACE_BASE, KIFACE_BASE ) +{ + MOCK_KIFACE_BASE() : KIFACE_BASE( "common_test", KIWAY::KIWAY_FACE_COUNT ) {}; + virtual ~MOCK_KIFACE_BASE() {}; + + MOCK_METHOD( OnKifaceStart, 2, bool( PGM_BASE*, int ) ); + MOCK_METHOD( OnKifaceEnd, 0, void() ); + MOCK_METHOD( CreateWindow, 4, wxWindow*( wxWindow*, int, KIWAY*, int ) ); + MOCK_METHOD( IfaceOrAddress, 1, void*( int ) ); +}; diff --git a/qa/mocks/include/mock_pgm_base.h b/qa/mocks/include/mock_pgm_base.h new file mode 100644 index 0000000000..ddce851c6f --- /dev/null +++ b/qa/mocks/include/mock_pgm_base.h @@ -0,0 +1,57 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2019-2022 KiCad Developers, see CHANGELOG.TXT for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once +#include +#include + +MOCK_BASE_CLASS( MOCK_PGM_BASE, PGM_BASE ) +{ + MOCK_PGM_BASE() : PGM_BASE() {}; + virtual ~MOCK_PGM_BASE() {}; + + MOCK_METHOD( MacOpenFile, 1, void( const wxString& ) ); + MOCK_METHOD( GetSettingsManager, 0, SETTINGS_MANAGER&() ); + MOCK_METHOD( GetCommonSettings, 0, COMMON_SETTINGS*() ); + MOCK_METHOD( SetTextEditor, 1, void( const wxString& ) ); + MOCK_METHOD( GetTextEditor, 1, wxString&( bool ) ); + MOCK_METHOD( AskUserForPreferredEditor, 1, wxString&( wxString& ) ); + MOCK_CONST_METHOD( IsKicadEnvVariableDefined, 0, bool() ); + MOCK_CONST_METHOD( GetKicadEnvVariable, 0, const wxString&() ); + MOCK_CONST_METHOD( GetExecutablePath, 0, const wxString&() ); + MOCK_METHOD( GetLocale, 0, wxLocale*() ); + MOCK_CONST_METHOD( GetPdfBrowserName, 0, const wxString&() ); + MOCK_METHOD( SetPdfBrowserName, 1, void( const wxString& ) ); + MOCK_CONST_METHOD( UseSystemPdfBrowser, 0, bool() ); + MOCK_METHOD( ForceSystemPdfBrowser, 1, void( bool ) ); + MOCK_METHOD( SetLanguage, 2, bool( wxString&, bool ) ); + MOCK_METHOD( SetLanguageIdentifier, 1, void( int ) ); + MOCK_CONST_METHOD( GetSelectedLanguageIdentifier, 0, int() ); + MOCK_METHOD( SetLanguagePath, 0, void() ); + MOCK_METHOD( ReadPdfBrowserInfos, 0, void() ); + MOCK_METHOD( WritePdfBrowserInfos, 0, void() ); + MOCK_METHOD( SetLocalEnvVariable, 2, bool( const wxString&, const wxString& ) ); + MOCK_METHOD( SetLocalEnvVariables, 0, void() ); + MOCK_CONST_METHOD( GetLocalEnvVariables, 0, ENV_VAR_MAP&() ); + MOCK_METHOD( App, 0, wxApp&() ); +}; diff --git a/qa/common/common_mocks.cpp b/qa/mocks/kicad/common_mocks.cpp similarity index 59% rename from qa/common/common_mocks.cpp rename to qa/mocks/kicad/common_mocks.cpp index 18f5551a36..e5d56fb07b 100644 --- a/qa/common/common_mocks.cpp +++ b/qa/mocks/kicad/common_mocks.cpp @@ -23,49 +23,22 @@ /** * @file common_mocks.cpp - * @brief Mock objects for libcommon unit tests + * @brief Mock objects for unit tests */ -#include -#include +#include +#include -struct PGM_TEST_FRAME : public PGM_BASE -{ - void MacOpenFile( const wxString& aFileName ) override - {} -}; - PGM_BASE& Pgm() { - static PGM_TEST_FRAME program; + static MOCK_PGM_BASE program; return program; } -static struct IFACE : public KIFACE_BASE -{ - bool OnKifaceStart( PGM_BASE* aProgram, int aCtlBits ) override - { - return start_common( aCtlBits ); - } - - wxWindow* CreateWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway, int aCtlBits = 0 ) override - { - return nullptr; - } - - void* IfaceOrAddress( int aDataId ) override - { - return nullptr; - } - - IFACE( const char* aDSOname, KIWAY::FACE_T aType ) : - KIFACE_BASE( aDSOname, aType ) - {} - -} kiface( "common_test", KIWAY::KIWAY_FACE_COUNT ); KIFACE_BASE& Kiface() { + static MOCK_KIFACE_BASE kiface; return kiface; -} \ No newline at end of file +} diff --git a/qa/qa_utils/CMakeLists.txt b/qa/qa_utils/CMakeLists.txt index e28421cfcb..ec03a2c6de 100644 --- a/qa/qa_utils/CMakeLists.txt +++ b/qa/qa_utils/CMakeLists.txt @@ -43,6 +43,7 @@ include_directories( BEFORE ${INC_BEFORE} ) target_link_libraries( qa_utils common + turtle ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}