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
|
def define_save_arg_helper
|
||||||
putd ""
|
putd ""
|
||||||
putd "#define SAVE_ARG(FUNCNAME, n) \\"
|
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
|
end
|
||||||
|
|
||||||
def define_room_for_more_history
|
def define_room_for_more_history
|
||||||
@@ -89,7 +89,7 @@ end
|
|||||||
def define_save_arg_history_helper
|
def define_save_arg_history_helper
|
||||||
putd ""
|
putd ""
|
||||||
putd "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \\"
|
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
|
end
|
||||||
|
|
||||||
def define_history_dropped_helper
|
def define_history_dropped_helper
|
||||||
|
|||||||
4
fff.h
4
fff.h
@@ -29,13 +29,13 @@
|
|||||||
unsigned int arg_histories_dropped; \
|
unsigned int arg_histories_dropped; \
|
||||||
|
|
||||||
#define SAVE_ARG(FUNCNAME, n) \
|
#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) \
|
#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \
|
||||||
FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN
|
FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN
|
||||||
|
|
||||||
#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \
|
#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) \
|
#define HISTORY_DROPPED(FUNCNAME) \
|
||||||
FUNCNAME##_fake.arg_histories_dropped++
|
FUNCNAME##_fake.arg_histories_dropped++
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ FAKE_VALUE_FUNC(long, longfunc0);
|
|||||||
FAKE_VALUE_FUNC(enum MYBOOL, enumfunc0);
|
FAKE_VALUE_FUNC(enum MYBOOL, enumfunc0);
|
||||||
FAKE_VALUE_FUNC(struct MyStruct, structfunc0);
|
FAKE_VALUE_FUNC(struct MyStruct, structfunc0);
|
||||||
FAKE_VOID_FUNC3_VARARG(voidfunc3var, char *, int, ...);
|
FAKE_VOID_FUNC3_VARARG(voidfunc3var, char *, int, ...);
|
||||||
|
FAKE_VALUE_FUNC(int, strlcpy3, char* const, const char* const, const size_t);
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
@@ -38,6 +39,7 @@ void setup()
|
|||||||
RESET_FAKE(enumfunc0);
|
RESET_FAKE(enumfunc0);
|
||||||
RESET_FAKE(structfunc0);
|
RESET_FAKE(structfunc0);
|
||||||
RESET_FAKE(voidfunc3var);
|
RESET_FAKE(voidfunc3var);
|
||||||
|
RESET_FAKE(strlcpy3);
|
||||||
FFF_RESET_HISTORY();
|
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_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_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_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_created_default_history_is_fifty_calls);
|
||||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history);
|
RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ void setup()
|
|||||||
RESET_FAKE(enumfunc0);
|
RESET_FAKE(enumfunc0);
|
||||||
RESET_FAKE(structfunc0);
|
RESET_FAKE(structfunc0);
|
||||||
RESET_FAKE(voidfunc3var);
|
RESET_FAKE(voidfunc3var);
|
||||||
|
RESET_FAKE(strlcpy3);
|
||||||
|
|
||||||
FFF_RESET_HISTORY();
|
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_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_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_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_created_default_history_is_fifty_calls);
|
||||||
RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history);
|
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(enum MYBOOL, enumfunc0);
|
||||||
DEFINE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
DEFINE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
||||||
DEFINE_FAKE_VOID_FUNC3_VARARG(voidfunc3var, const char *, int, ...);
|
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_
|
#define GLOBAL_FAKES_H_
|
||||||
|
|
||||||
#include "../fff.h"
|
#include "../fff.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
|
|
||||||
//// Imaginary production code header file ///
|
//// 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(enum MYBOOL, enumfunc0);
|
||||||
DECLARE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
DECLARE_FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
|
||||||
DECLARE_FAKE_VOID_FUNC3_VARARG(voidfunc3var, const char *, int, ...);
|
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_ */
|
#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);
|
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
|
// Argument history
|
||||||
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls)
|
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user