diff --git a/ext/gtest/CMakeLists.txt b/ext/gtest/CMakeLists.txt index ef207be27880ec28af8d5e9afda9adabd292078c..3b7d7826b235fd3c362e72a871d6fd45a77d22c6 100644 --- a/ext/gtest/CMakeLists.txt +++ b/ext/gtest/CMakeLists.txt @@ -17,10 +17,12 @@ ExternalProject_Add(googletest # Specify include dir ExternalProject_Get_Property(googletest source_dir) set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE) +set(GMOCK_INCLUDE_DIRS ${source_dir}/googlemock/include PARENT_SCOPE) # Specify MainTest's link libraries ExternalProject_Get_Property(googletest binary_dir) set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE) +set(GMOCK_LIBS_DIR ${binary_dir}/googlemock PARENT_SCOPE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d0df51b1e663c6e246e91cd4c93b5a508fb55d8a..06ff10fe452e01d4f26447b8f8aac1c95a4cb35e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -4,7 +4,11 @@ include_directories( ) # Include main source dir -include_directories (${${PROJECT_NAME_STR}_SOURCE_DIR}/src ${GTEST_INCLUDE_DIRS} ) +include_directories ( + ${${PROJECT_NAME_STR}_SOURCE_DIR}/src + ${GTEST_INCLUDE_DIRS} + ${GMOCK_INCLUDE_DIRS} +) # Exclude tests from coverage set(CTEST_CUSTOM_COVERAGE_EXCLUDE *) @@ -19,6 +23,7 @@ add_executable(unit_test ${SRCS}) add_dependencies(unit_test googletest) target_link_libraries(unit_test ${GTEST_LIBS_DIR}/libgtest.a ${GTEST_LIBS_DIR}/libgtest_main.a + ${GMOCK_LIBS_DIR}/libgmock.a ${GMOCK_LIBS_DIR}/libgmock_main.a ${CMAKE_THREAD_LIBS_INIT}) # Add tests... diff --git a/tests/silly_test.cpp b/tests/silly_test.cpp index 3704f4c54c01101c916873b2c0ea02a85b03faff..3e4001ea35fdedbc156b6a9af3c585a2174718d7 100644 --- a/tests/silly_test.cpp +++ b/tests/silly_test.cpp @@ -1,4 +1,22 @@ #include "gtest/gtest.h" +#include "gmock/gmock.h" + +using ::testing::Return; + +class Thing { +private: + int ans; +public: + Thing(): ans(42) {}; + virtual int lue() { + return ans; + } +}; + +class MockThing : public Thing { +public: + MOCK_METHOD0(lue, int()); +}; // Just a dummy test that it will fail! TEST(silly_test, silly_test) { @@ -6,3 +24,12 @@ TEST(silly_test, silly_test) { int b = 1; EXPECT_EQ(a, b) << "a ("<<a<<") should be equal to b ("<<b<<")"; } + +TEST(silly_test, silly_mock) { + MockThing m; + EXPECT_CALL(m, lue()).WillOnce(Return(44)); + + int a = m.lue(); + + EXPECT_EQ(a, 42) << "The answer to Life, the Universe and Everything should be 42!!!" ; +}