1
0
mirror of https://github.com/meekrosoft/fff synced 2026-01-23 00:15:59 +01:00

memset return values in reset function

This commit is contained in:
Mike Long
2011-03-10 12:30:39 +01:00
parent 19f0c41e00
commit c1d80c74a5
4 changed files with 289 additions and 264 deletions

View File

@@ -5,8 +5,14 @@
$cpp_output = true
$MAX_ARGS = 10
$DEFAULT_ARG_HISTORY = 10
$MAX_CALL_HISTORY = 10
$DEFAULT_ARG_HISTORY = 50
$MAX_CALL_HISTORY = 50
def output_constants
puts "#define FFF_MAX_ARGS ((unsigned)#{$MAX_ARGS})"
puts "#define FFF_ARG_HISTORY_LEN ((unsigned)#{$DEFAULT_ARG_HISTORY})"
puts "#define FFF_CALL_HISTORY_LEN ((unsigned)#{$MAX_CALL_HISTORY})"
end
def output_macro(args, is_value_function)
@@ -145,7 +151,7 @@ def output_reset_function(arg_count, is_value_function)
puts " memset(FUNCNAME##_arg#{i}_history, 0, sizeof(FUNCNAME##_arg#{i}_history)); \\"
}
puts " FUNCNAME##_call_count = 0; \\"
puts " FUNCNAME##_return_val = 0; \\" unless not is_value_function
puts " memset(&FUNCNAME##_return_val, 0, sizeof(FUNCNAME##_return_val)); \\" unless not is_value_function
puts " } \\"
end
@@ -207,6 +213,7 @@ end
# lets generate!!
output_c_and_cpp{
output_constants
output_cpp_reset_code if $cpp_output
output_cpp_static_initializer if $cpp_output
10.times {|arg_count| output_macro(arg_count, false)}

490
fff.h

File diff suppressed because it is too large Load Diff

View File

@@ -11,18 +11,30 @@ void setup();
#define ASSERT_EQ(A, B) assert((A) == (B))
#define ASSERT(A) assert((A))
enum MYBOOL { FALSE = 899, TRUE };
struct MyStruct {
int x;
int y;
};
FAKE_VOID_FUNC1(voidfunc1, int);
FAKE_VOID_FUNC2(voidfunc2, char, char);
FAKE_VALUE_FUNC0(long, longfunc0);
FAKE_VALUE_FUNC0(enum MYBOOL, enumfunc0);
FAKE_VALUE_FUNC0(struct MyStruct, structfunc0);
void setup()
{
RESET_FAKE(voidfunc1);
RESET_FAKE(voidfunc2);
RESET_FAKE(longfunc0);
RESET_FAKE(enumfunc0);
RESET_FAKE(structfunc0);
RESET_HISTORY();
}
TEST_F(FFFTestSuite, when_void_func_never_called_then_callcount_is_zero)
{
ASSERT_EQ(voidfunc1_call_count, 0);
@@ -87,10 +99,10 @@ TEST_F(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captu
}
// Argument history
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_ten_calls)
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls)
{
ASSERT_EQ(10u, (sizeof voidfunc2_arg0_history) / (sizeof voidfunc2_arg0_history[0]));
ASSERT_EQ(10u, (sizeof voidfunc2_arg1_history) / (sizeof voidfunc2_arg1_history[0]));
ASSERT_EQ(FFF_ARG_HISTORY_LEN, (sizeof voidfunc2_arg0_history) / (sizeof voidfunc2_arg0_history[0]));
ASSERT_EQ(FFF_ARG_HISTORY_LEN, (sizeof voidfunc2_arg1_history) / (sizeof voidfunc2_arg1_history[0]));
}
TEST_F(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history)
@@ -115,8 +127,8 @@ TEST_F(FFFTestSuite, argument_history_is_reset_when_RESET_FAKE_called)
TEST_F(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_dropped)
{
int i;
for (i = 0; i < 10; i++)
unsigned int i;
for (i = 0; i < FFF_ARG_HISTORY_LEN; i++)
{
voidfunc2('1' + i, '2' + i);
}
@@ -125,8 +137,8 @@ TEST_F(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_
TEST_F(FFFTestSuite, when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped)
{
int i;
for (i = 0; i < 10; i++)
unsigned int i;
for (i = 0; i < FFF_ARG_HISTORY_LEN; i++)
{
voidfunc2('1' + i, '2' + i);
}
@@ -182,11 +194,11 @@ TEST_F(FFFTestSuite, reset_call_history_resets_call_history)
TEST_F(FFFTestSuite, call_history_will_not_write_past_array_bounds)
{
for (unsigned int i = 0; i < MAX_CALL_HISTORY + 1; i++)
for (unsigned int i = 0; i < FFF_CALL_HISTORY_LEN + 1; i++)
{
REGISTER_CALL(longfunc0);
}
ASSERT_EQ(MAX_CALL_HISTORY, call_history_idx);
ASSERT_EQ(FFF_CALL_HISTORY_LEN, call_history_idx);
}
TEST_F(FFFTestSuite, calling_fake_registers_one_call)
@@ -215,7 +227,7 @@ int main()
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_created_default_history_is_ten_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, argument_history_is_reset_when_RESET_FAKE_called);
RUN_TEST(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_dropped);

View File

@@ -87,10 +87,10 @@ TEST_F(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captu
}
// Argument history
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_ten_calls)
TEST_F(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls)
{
ASSERT_EQ(10u, (sizeof voidfunc2_arg0_history) / (sizeof voidfunc2_arg0_history[0]));
ASSERT_EQ(10u, (sizeof voidfunc2_arg1_history) / (sizeof voidfunc2_arg1_history[0]));
ASSERT_EQ(FFF_ARG_HISTORY_LEN, (sizeof voidfunc2_arg0_history) / (sizeof voidfunc2_arg0_history[0]));
ASSERT_EQ(FFF_ARG_HISTORY_LEN, (sizeof voidfunc2_arg1_history) / (sizeof voidfunc2_arg1_history[0]));
}
TEST_F(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history)
@@ -115,8 +115,8 @@ TEST_F(FFFTestSuite, argument_history_is_reset_when_RESET_FAKE_called)
TEST_F(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_dropped)
{
int i;
for (i = 0; i < 10; i++)
unsigned int i;
for (i = 0; i < FFF_ARG_HISTORY_LEN; i++)
{
voidfunc2('1' + i, '2' + i);
}
@@ -125,8 +125,8 @@ TEST_F(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_
TEST_F(FFFTestSuite, when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped)
{
int i;
for (i = 0; i < 10; i++)
unsigned int i;
for (i = 0; i < FFF_ARG_HISTORY_LEN; i++)
{
voidfunc2('1' + i, '2' + i);
}
@@ -182,11 +182,11 @@ TEST_F(FFFTestSuite, reset_call_history_resets_call_history)
TEST_F(FFFTestSuite, call_history_will_not_write_past_array_bounds)
{
for (unsigned int i = 0; i < MAX_CALL_HISTORY + 1; i++)
for (unsigned int i = 0; i < FFF_CALL_HISTORY_LEN + 1; i++)
{
REGISTER_CALL(longfunc0);
}
ASSERT_EQ(MAX_CALL_HISTORY, call_history_idx);
ASSERT_EQ(FFF_CALL_HISTORY_LEN, call_history_idx);
}
TEST_F(FFFTestSuite, calling_fake_registers_one_call)