# HG changeset patch # User Sebastien Jodogne # Date 1479388740 -3600 # Node ID 946377d1c992ce8c6fb175ad74e239daae90754d # Parent 33232833008312ea437b40c66b8797019d313367 skeleton for unit tests diff -r 332328330083 -r 946377d1c992 CMakeLists.txt --- a/CMakeLists.txt Wed Nov 16 12:36:18 2016 +0100 +++ b/CMakeLists.txt Thu Nov 17 14:19:00 2016 +0100 @@ -11,6 +11,16 @@ ##################################################################### +## CMake parameters for Google Test +##################################################################### + +SET(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test") +SET(USE_GTEST_DEBIAN_SOURCE_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)") + +include(${ORTHANC_ROOT}/Resources/CMake/GoogleTestConfiguration.cmake) + + +##################################################################### ## Build all the sample applications ##################################################################### @@ -30,6 +40,18 @@ ##################################################################### +## Build the unit tests +##################################################################### + +add_executable(UnitTests + ${GTEST_SOURCES} + UnitTestsSources/UnitTestsMain.cpp + ) + +target_link_libraries(UnitTests OrthancStone) + + +##################################################################### ## Generate the documentation if Doxygen is present ##################################################################### diff -r 332328330083 -r 946377d1c992 Resources/CMake/OrthancStone.cmake --- a/Resources/CMake/OrthancStone.cmake Wed Nov 16 12:36:18 2016 +0100 +++ b/Resources/CMake/OrthancStone.cmake Thu Nov 17 14:19:00 2016 +0100 @@ -1,3 +1,6 @@ +# Version of the build, should always be "mainline" except in release branches +set(ORTHANC_STONE_VERSION "mainline") + ##################################################################### ## Parameters of the build ##################################################################### diff -r 332328330083 -r 946377d1c992 Resources/Orthanc/Resources/CMake/GoogleTestConfiguration.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Orthanc/Resources/CMake/GoogleTestConfiguration.cmake Thu Nov 17 14:19:00 2016 +0100 @@ -0,0 +1,41 @@ +if (USE_GTEST_DEBIAN_SOURCE_PACKAGE) + set(GTEST_SOURCES /usr/src/gtest/src/gtest-all.cc) + include_directories(/usr/src/gtest) + + if (NOT EXISTS /usr/include/gtest/gtest.h OR + NOT EXISTS ${GTEST_SOURCES}) + message(FATAL_ERROR "Please install the libgtest-dev package") + endif() + +elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST) + set(GTEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/gtest-1.7.0) + set(GTEST_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/gtest-1.7.0.zip") + set(GTEST_MD5 "2d6ec8ccdf5c46b05ba54a9fd1d130d7") + + DownloadPackage(${GTEST_MD5} ${GTEST_URL} "${GTEST_SOURCES_DIR}") + + include_directories( + ${GTEST_SOURCES_DIR}/include + ${GTEST_SOURCES_DIR} + ) + + set(GTEST_SOURCES + ${GTEST_SOURCES_DIR}/src/gtest-all.cc + ) + + # https://code.google.com/p/googletest/issues/detail?id=412 + if (MSVC) # VS2012 does not support tuples correctly yet + add_definitions(/D _VARIADIC_MAX=10) + endif() + + source_group(ThirdParty\\GoogleTest REGULAR_EXPRESSION ${GTEST_SOURCES_DIR}/.*) + +else() + include(FindGTest) + if (NOT GTEST_FOUND) + message(FATAL_ERROR "Unable to find GoogleTest") + endif() + + include_directories(${GTEST_INCLUDE_DIRS}) + link_libraries(${GTEST_LIBRARIES}) +endif() diff -r 332328330083 -r 946377d1c992 Resources/OrthancStone.doxygen --- a/Resources/OrthancStone.doxygen Wed Nov 16 12:36:18 2016 +0100 +++ b/Resources/OrthancStone.doxygen Thu Nov 17 14:19:00 2016 +0100 @@ -32,7 +32,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = +PROJECT_NUMBER = @ORTHANC_STONE_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff -r 332328330083 -r 946377d1c992 Resources/SyncOrthancFolder.py --- a/Resources/SyncOrthancFolder.py Wed Nov 16 12:36:18 2016 +0100 +++ b/Resources/SyncOrthancFolder.py Thu Nov 17 14:19:00 2016 +0100 @@ -54,6 +54,7 @@ 'Resources/CMake/BoostConfiguration.cmake', 'Resources/CMake/Compiler.cmake', 'Resources/CMake/DownloadPackage.cmake', + 'Resources/CMake/GoogleTestConfiguration.cmake', 'Resources/CMake/JsonCppConfiguration.cmake', 'Resources/CMake/LibCurlConfiguration.cmake', 'Resources/CMake/LibIconvConfiguration.cmake', diff -r 332328330083 -r 946377d1c992 UnitTestsSources/UnitTestsMain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UnitTestsSources/UnitTestsMain.cpp Thu Nov 17 14:19:00 2016 +0100 @@ -0,0 +1,48 @@ +/** + * Stone of Orthanc + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * + * 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 3 of the + * License, or (at your option) any later version. + * + * In addition, as a special exception, the copyright holders of this + * program give permission to link the code of its release with the + * OpenSSL project's "OpenSSL" library (or with modified versions of it + * that use the same license as the "OpenSSL" library), and distribute + * the linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If you + * modify file(s) with this exception, you may extend this exception to + * your version of the file(s), but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source files + * in the program, then also delete it here. + * + * 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, see . + **/ + + +#include "gtest/gtest.h" + +#include "../Resources/Orthanc/Core/Logging.h" + +int main(int argc, char **argv) +{ + Orthanc::Logging::Initialize(); + Orthanc::Logging::EnableInfoLevel(true); + + ::testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); + + Orthanc::Logging::Finalize(); + + return result; +}