mirror of
https://github.com/meekrosoft/fff
synced 2026-01-23 00:15:59 +01:00
Add tests to verify std::function works with capturing lambda
Introduce a test that uses a capturing lambda as a custom_fake. Signed-off-by: Yuval Peress <peress@google.com>
This commit is contained in:
@@ -38,6 +38,22 @@ add_executable(cpp_global_test
|
|||||||
target_include_directories(cpp_global_test PRIVATE include)
|
target_include_directories(cpp_global_test PRIVATE include)
|
||||||
target_link_libraries(cpp_global_test PRIVATE gtest fff)
|
target_link_libraries(cpp_global_test PRIVATE gtest fff)
|
||||||
|
|
||||||
|
# Create the C++ custom function signature executable
|
||||||
|
add_executable(cpp_custom_fn_signature_test
|
||||||
|
src/fff_test_custom_function_template.cpp
|
||||||
|
${COMMON_FILE_LIST}
|
||||||
|
)
|
||||||
|
target_include_directories(cpp_custom_fn_signature_test PRIVATE include)
|
||||||
|
target_link_libraries(cpp_custom_fn_signature_test PRIVATE gtest fff)
|
||||||
|
# Due to a bug in WinLibs for Windows it's not currently possible to use:
|
||||||
|
# target_precompile_headers(cpp_custom_fn_signature_test PUBLIC include/custom_function.hpp)
|
||||||
|
# See more info at target_precompile_headers(cpp_custom_fn_signature_test PUBLIC include/custom_function.hpp)
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME cpp_custom_fn_signature_test
|
||||||
|
COMMAND $<TARGET_FILE:cpp_custom_fn_signature_test>
|
||||||
|
)
|
||||||
|
|
||||||
# Add the tests for ctest
|
# Add the tests for ctest
|
||||||
add_test(
|
add_test(
|
||||||
NAME c_test
|
NAME c_test
|
||||||
|
|||||||
10
test/include/custom_function.hpp
Normal file
10
test/include/custom_function.hpp
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/* Copyright 2022 Google LLC
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
#define CUSTOM_FFF_FUNCTION_TEMPLATE(RETURN, FUNCNAME, ...) \
|
||||||
|
std::function<RETURN (__VA_ARGS__)> FUNCNAME
|
||||||
11
test/include/fff_wrapper.hpp
Normal file
11
test/include/fff_wrapper.hpp
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/* Copyright 2022 Google LLC
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
#include "custom_function.hpp"
|
||||||
|
|
||||||
|
#include <fff.h>
|
||||||
29
test/src/fff_test_custom_function_template.cpp
Normal file
29
test/src/fff_test_custom_function_template.cpp
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/* Copyright 2022 Google LLC
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include "fff_wrapper.hpp"
|
||||||
|
|
||||||
|
DEFINE_FFF_GLOBALS
|
||||||
|
|
||||||
|
FAKE_VOID_FUNC(do_stuff, int);
|
||||||
|
|
||||||
|
class FFFCustomFakeSuite : public ::testing::Test {
|
||||||
|
public:
|
||||||
|
void SetUp() override {
|
||||||
|
RESET_FAKE(do_stuff);
|
||||||
|
FFF_RESET_HISTORY();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(FFFCustomFakeSuite, custom_cpp_fake_function)
|
||||||
|
{
|
||||||
|
int x = 0;
|
||||||
|
do_stuff_fake.custom_fake = [&x](int i) {
|
||||||
|
x = i;
|
||||||
|
};
|
||||||
|
do_stuff(5);
|
||||||
|
ASSERT_EQ(5, x);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user