changeset 20:946377d1c992

skeleton for unit tests
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 17 Nov 2016 14:19:00 +0100
parents 332328330083
children 20f623762e8e
files CMakeLists.txt Resources/CMake/OrthancStone.cmake Resources/Orthanc/Resources/CMake/GoogleTestConfiguration.cmake Resources/OrthancStone.doxygen Resources/SyncOrthancFolder.py UnitTestsSources/UnitTestsMain.cpp
diffstat 6 files changed, 116 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
 #####################################################################
 
--- 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
 #####################################################################
--- /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()
--- 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
--- 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',
--- /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 <http://www.gnu.org/licenses/>.
+ **/
+
+
+#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;
+}