Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-rtos mbed HardwareInterface
Fork of NerfUS_cmake_cleanup by
Revision 3:aaf84424abb1, committed 2017-02-04
- Comitter:
- Maxime Dupuis
- Date:
- Sat Feb 04 22:48:36 2017 -0500
- Parent:
- 2:6e467e4978f9
- Child:
- 4:8b9f91de6cf1
- Commit message:
- Integrate GoogleTest and GoogleMock
How to build and run the tests:
- mkdir build
- cd build
- cmake ..
- make
- ./run_all_tests
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sat Feb 04 22:48:36 2017 -0500 @@ -0,0 +1,1 @@ +build/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeLists.txt Sat Feb 04 22:48:36 2017 -0500
@@ -0,0 +1,43 @@
+cmake_minimum_required(VERSION 3.5)
+project(NerfUS)
+
+# Download and unpack googletest at configure time
+configure_file(CMakeLists.txt.in
+ googletest-download/CMakeLists.txt)
+execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
+execute_process(COMMAND ${CMAKE_COMMAND} --build .
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
+
+# Prevent GoogleTest from overriding our compiler/linker options
+# when building with Visual Studio
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+
+# Add googletest directly to our build. This adds
+# the following targets: gtest, gtest_main, gmock
+# and gmock_main
+add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
+ ${CMAKE_BINARY_DIR}/googletest-build)
+
+# The gtest/gmock targets carry header search path
+# dependencies automatically when using CMake 2.8.11 or
+# later. Otherwise we have to add them here ourselves.
+if (CMAKE_VERSION VERSION_LESS 2.8.11)
+ include_directories("${gtest_SOURCE_DIR}/include"
+ "${gmock_SOURCE_DIR}/include")
+endif()
+
+# Now simply link your own targets against gtest, gmock,
+# etc. as appropriate
+include_directories(include)
+include_directories("${gtest_SOURCE_DIR}/include")
+
+# Where Google Test's libraries can be found.
+#link_directories("./googletest-build/googlemock/gtest/libgtest.a")
+
+file(GLOB SOURCES "source/*.cpp")
+file(GLOB TEST_SOURCES "test/*.cpp")
+
+add_executable(run_unit_tests ${SOURCES} ${TEST_SOURCES})
+
+target_link_libraries(run_unit_tests gtest gmock gmock_main)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeLists.txt.in Sat Feb 04 22:48:36 2017 -0500
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8.2)
+
+project(googletest-download NONE)
+
+include(ExternalProject)
+ExternalProject_Add(googletest
+ GIT_REPOSITORY https://github.com/google/googletest.git
+ GIT_TAG master
+ SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
+ BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/GoogleMockTest.cpp Sat Feb 04 22:48:36 2017 -0500
@@ -0,0 +1,38 @@
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+class Adder
+{
+ public:
+ virtual ~Adder() {}
+ virtual int add(int a, int b)
+ {
+ return a + b;
+ }
+};
+
+class MockAdder : public Adder
+{
+ public:
+ MOCK_METHOD2(add, int(int a, int b));
+};
+
+TEST(GoogleMockTest, ExpectCalled)
+{
+ MockAdder adder;
+
+ EXPECT_CALL(adder, add(1, 2));
+
+ adder.add(1, 2);
+}
+
+TEST(GoogleMockTest, DefineReturnedValue)
+{
+ using ::testing::Return;
+ MockAdder adder;
+
+ EXPECT_CALL(adder, add(1, 2))
+ .WillOnce(Return(42));
+
+ ASSERT_EQ(42, adder.add(1, 2));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/GoogleTestTest.cpp Sat Feb 04 22:48:36 2017 -0500
@@ -0,0 +1,47 @@
+#include "gtest/gtest.h"
+
+#include <string>
+
+TEST(GoogleTestTest, BasicAssertion)
+{
+ ASSERT_TRUE(true);
+ ASSERT_FALSE(false);
+}
+
+TEST(GoogleTestTest, BinaryComparison)
+{
+ ASSERT_EQ(1, 1);
+ ASSERT_NE(1, 2);
+ ASSERT_LT(1, 2);
+ ASSERT_LE(1, 2);
+ ASSERT_GT(3, 2);
+ ASSERT_GE(3, 2);
+}
+
+TEST(GoogleTestTest, CStringComparison)
+{
+ ASSERT_STREQ("alice", "alice");
+ ASSERT_STRNE("alice", "Alice");
+ ASSERT_STRCASEEQ("alice", "Alice");
+ ASSERT_STRCASENE("alice", "bob");
+}
+
+TEST(GoogleTestTest, StringComparison)
+{
+ ASSERT_EQ(std::string("alice"), std::string("alice"));
+ ASSERT_EQ(std::string("alice"), "alice");
+ ASSERT_EQ("alice", std::string("alice"));
+}
+
+TEST(GoogleTestTest, Exceptions)
+{
+ ASSERT_THROW(throw std::exception(), std::exception);
+ ASSERT_NO_THROW(true);
+}
+
+TEST(GoogleTestTest, FloatingPointsComparison)
+{
+ ASSERT_FLOAT_EQ(1.5f, 1.500000000000000000000000001f);
+ ASSERT_DOUBLE_EQ(1.5, 1.500000000000000000000000001);
+ ASSERT_NEAR(1.5, 1.51, 0.02);
+}
