mirror of
https://github.com/meekrosoft/fff
synced 2026-01-23 08:25:59 +01:00
Merged varargs support with const support
This commit is contained in:
@@ -77,7 +77,7 @@ end
|
||||
def define_save_arg_helper
|
||||
putd ""
|
||||
putd "#define SAVE_ARG(FUNCNAME, n) \\"
|
||||
putd " FUNCNAME##_fake.arg##n##_val = arg##n"
|
||||
putd " memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));"
|
||||
end
|
||||
|
||||
def define_room_for_more_history
|
||||
@@ -89,7 +89,7 @@ end
|
||||
def define_save_arg_history_helper
|
||||
putd ""
|
||||
putd "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \\"
|
||||
putd " FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count] = arg##ARGN"
|
||||
putd " memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));"
|
||||
end
|
||||
|
||||
def define_history_dropped_helper
|
||||
|
||||
4
fff.h
4
fff.h
@@ -29,13 +29,13 @@
|
||||
unsigned int arg_histories_dropped; \
|
||||
|
||||
#define SAVE_ARG(FUNCNAME, n) \
|
||||
FUNCNAME##_fake.arg##n##_val = arg##n
|
||||
memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));
|
||||
|
||||
#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \
|
||||
FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN
|
||||
|
||||
#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \
|
||||
FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count] = arg##ARGN
|
||||
memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));
|
||||
|
||||
#define HISTORY_DROPPED(FUNCNAME) \
|
||||
FUNCNAME##_fake.arg_histories_dropped++
|
||||
|
||||
@@ -28,6 +28,7 @@ FAKE_VALUE_FUNC(long, longfunc0);
|
||||
FAKE_VALUE_FUNC(enum MYBOOL, enumfunc0);
|
||||
FAKE_VALUE_FUNC(struct MyStruct, structfunc0);
|
||||
FAKE_VOID_FUNC3_VARARG(voidfunc3var, char *, int, ...);
|
||||
FAKE_VALUE_FUNC(int, strlcpy3, char* const, const char* const, const size_t);
|
||||
|
||||
|
||||
void setup()
|
||||
@@ -38,6 +39,7 @@ void setup()
|
||||
RESET_FAKE(enumfunc0);
|
||||
RESET_FAKE(structfunc0);
|
||||
RESET_FAKE(voidfunc3var);
|
||||
RESET_FAKE(strlcpy3);
|
||||
FFF_RESET_HISTORY();
|
||||
}
|
||||
|
||||
@@ -70,6 +72,7 @@ int main()
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_then_last_args_captured);
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_twice_then_last_args_captured);
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero);
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_const_arguments_captured);
|
||||
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls);
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history);
|
||||
|
||||
@@ -14,6 +14,7 @@ void setup()
|
||||
RESET_FAKE(enumfunc0);
|
||||
RESET_FAKE(structfunc0);
|
||||
RESET_FAKE(voidfunc3var);
|
||||
RESET_FAKE(strlcpy3);
|
||||
|
||||
FFF_RESET_HISTORY();
|
||||
}
|
||||
@@ -40,6 +41,7 @@ int main()
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_then_last_args_captured);
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_twice_then_last_args_captured);
|
||||
RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero);
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_const_arguments_captured);
|
||||
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls);
|
||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history);
|
||||
|
||||
@@ -7,3 +7,6 @@ DEFINE_FAKE_VALUE_FUNC0(long, longfunc0);
|
||||
DEFINE_FAKE_VALUE_FUNC0(enum MYBOOL, enumfunc0);
|
||||
DEFINE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
||||
DEFINE_FAKE_VOID_FUNC3_VARARG(voidfunc3var, const char *, int, ...);
|
||||
#ifndef __cplusplus
|
||||
DEFINE_FAKE_VALUE_FUNC3(int, strlcpy3, char* const, const char* const, const size_t);
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#define GLOBAL_FAKES_H_
|
||||
|
||||
#include "../fff.h"
|
||||
#include "string.h"
|
||||
|
||||
|
||||
//// Imaginary production code header file ///
|
||||
@@ -26,5 +27,8 @@ DECLARE_FAKE_VALUE_FUNC0(long, longfunc0);
|
||||
DECLARE_FAKE_VALUE_FUNC0(enum MYBOOL, enumfunc0);
|
||||
DECLARE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
||||
DECLARE_FAKE_VOID_FUNC3_VARARG(voidfunc3var, const char *, int, ...);
|
||||
#ifndef __cplusplus
|
||||
DECLARE_FAKE_VALUE_FUNC3(int, strlcpy3, char* const, const char* const, const size_t);
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* GLOBAL_FAKES_H_ */
|
||||
|
||||
@@ -63,6 +63,14 @@ TEST_F(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captu
|
||||
ASSERT_EQ(voidfunc2_fake.arg1_val, 0);
|
||||
}
|
||||
|
||||
#ifndef __cplusplus
|
||||
TEST_F(FFFTestSuite, when_fake_func_called_then_const_arguments_captured)
|
||||
{
|
||||
char dst[80];
|
||||
strlcpy3(dst, __FUNCTION__, sizeof(__FUNCTION__));
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
// Argument history
|
||||
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user