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_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_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