forked from 3rd-party/fff
Initial commit
This commit is contained in:
123
src/.cproject
Normal file
123
src/.cproject
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?>
|
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1238120309">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1238120309" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration buildProperties="" id="cdt.managedbuild.toolchain.gnu.base.1238120309" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1238120309.1907625956" name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1159475659" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.930806366" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||
<builder id="cdt.managedbuild.target.gnu.builder.base.1668825616" managedBuildOn="false" name="Gnu Make Builder.Default" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.753105937" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1202985208" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.19785768" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1428594416" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.2075660182" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.base.702543168" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="makefileGenerator">
|
||||
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
|
||||
<buildOutputProvider>
|
||||
<openAction enabled="true" filePath=""/>
|
||||
<parser enabled="true"/>
|
||||
</buildOutputProvider>
|
||||
<scannerInfoProvider id="specsFile">
|
||||
<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
|
||||
<parser enabled="true"/>
|
||||
</scannerInfoProvider>
|
||||
</profile>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="src.null.156807570" name="src"/>
|
||||
</storageModule>
|
||||
</cproject>
|
||||
79
src/.project
Normal file
79
src/.project
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>src</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>?name?</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||
<value>make</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
114
src/cmock.c
Normal file
114
src/cmock.c
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* cmock.c
|
||||
*
|
||||
* Created on: Dec 9, 2010
|
||||
* Author: mlong
|
||||
*/
|
||||
|
||||
#include "embedded.h"
|
||||
#include "cmock.h"
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
FAKE_VOID_FUNC0(DISPLAY_init);
|
||||
FAKE_VOID_FUNC0(DISPLAY_clear);
|
||||
FAKE_VOID_FUNC1(DISPLAY_output_message, const char*);
|
||||
FAKE_VALUE_FUNC0(int, DISPLAY_get_line_capacity);
|
||||
FAKE_VALUE_FUNC0(int, DISPLAY_get_line_insert_index);
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Register resets
|
||||
RESET_FAKE(DISPLAY_init);
|
||||
RESET_FAKE(DISPLAY_clear);
|
||||
RESET_FAKE(DISPLAY_output_message);
|
||||
RESET_FAKE(DISPLAY_get_line_capacity);
|
||||
RESET_FAKE(DISPLAY_get_line_insert_index);
|
||||
|
||||
// non default init
|
||||
DISPLAY_get_line_capacity_return_val = 10;
|
||||
}
|
||||
|
||||
#define TEST_F(IGNORE, NAME) void NAME()
|
||||
TEST_F(GreeterTests, init_initialises_display)
|
||||
{
|
||||
UI_init();
|
||||
assert(1 == DISPLAY_init_call_count);
|
||||
}
|
||||
|
||||
TEST_F(GreeterTests, given_name_when_greet_called_outputs_name)
|
||||
{
|
||||
// given
|
||||
char name[] = "mike";
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
assert(1 == DISPLAY_output_message_call_count);
|
||||
assert(name == DISPLAY_output_message_arg0_val);
|
||||
}
|
||||
|
||||
|
||||
TEST_F(GreeterTests, given_name_and_3_times_when_greetmultiple_called_outputs_name_3_times)
|
||||
{
|
||||
// given
|
||||
char name[] = "mike";
|
||||
// when
|
||||
UI_greet_multiple_times(name, 3);
|
||||
// then
|
||||
assert(3 == DISPLAY_output_message_call_count);
|
||||
assert(name == DISPLAY_output_message_arg0_val);
|
||||
}
|
||||
|
||||
TEST_F(GreeterTests, given_non_full_screen_will_not_reset_display)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 10;
|
||||
DISPLAY_get_line_insert_index_return_val = 0;
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
assert(0 == DISPLAY_clear_call_count);
|
||||
assert(1 == DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
// Order assumption
|
||||
TEST_F(GreeterTests, given_full_screen_single_will_reset_display_then_output)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 1;
|
||||
DISPLAY_get_line_insert_index_return_val = 1;
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
assert(1 == DISPLAY_clear_call_count);
|
||||
assert(1 == DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
// Order assumption
|
||||
TEST_F(GreeterTests, given_full_screen_multiple_will_reset_display_then_output)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 4;
|
||||
DISPLAY_get_line_insert_index_return_val = 4;
|
||||
// when
|
||||
UI_greet_multiple_times(name, 1);
|
||||
// then
|
||||
assert(1 == DISPLAY_clear_call_count);
|
||||
assert(1 == DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
#define RUN_TEST(TESTNAME) printf("Running %s\n", #TESTNAME); setup(); TESTNAME();
|
||||
int main()
|
||||
{
|
||||
RUN_TEST(init_initialises_display);
|
||||
RUN_TEST(given_name_when_greet_called_outputs_name);
|
||||
RUN_TEST(given_name_when_greet_called_outputs_name);
|
||||
RUN_TEST(given_name_and_3_times_when_greetmultiple_called_outputs_name_3_times);
|
||||
RUN_TEST(given_full_screen_single_will_reset_display_then_output);
|
||||
RUN_TEST(given_full_screen_multiple_will_reset_display_then_output);
|
||||
return 0;
|
||||
}
|
||||
520
src/cmock.h
Normal file
520
src/cmock.h
Normal file
@@ -0,0 +1,520 @@
|
||||
#ifndef FAKE_FUNCTIONS
|
||||
#define FAKE_FUNCTIONS
|
||||
|
||||
|
||||
/* Defining a void function with 0 parameters*/
|
||||
#define FAKE_VOID_FUNC0(FUNCNAME) \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(){ \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 1 parameters*/
|
||||
#define FAKE_VOID_FUNC1(FUNCNAME, ARG0_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 2 parameters*/
|
||||
#define FAKE_VOID_FUNC2(FUNCNAME, ARG0_TYPE, ARG1_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 3 parameters*/
|
||||
#define FAKE_VOID_FUNC3(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 4 parameters*/
|
||||
#define FAKE_VOID_FUNC4(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 5 parameters*/
|
||||
#define FAKE_VOID_FUNC5(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 6 parameters*/
|
||||
#define FAKE_VOID_FUNC6(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 7 parameters*/
|
||||
#define FAKE_VOID_FUNC7(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 8 parameters*/
|
||||
#define FAKE_VOID_FUNC8(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a void function with 9 parameters*/
|
||||
#define FAKE_VOID_FUNC9(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static ARG8_TYPE FUNCNAME##_arg8_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_arg8_val = arg8; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 0 parameters*/
|
||||
#define FAKE_VALUE_FUNC0(RETURN_TYPE, FUNCNAME) \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(){ \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 1 parameters*/
|
||||
#define FAKE_VALUE_FUNC1(RETURN_TYPE, FUNCNAME, ARG0_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 2 parameters*/
|
||||
#define FAKE_VALUE_FUNC2(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 3 parameters*/
|
||||
#define FAKE_VALUE_FUNC3(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 4 parameters*/
|
||||
#define FAKE_VALUE_FUNC4(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 5 parameters*/
|
||||
#define FAKE_VALUE_FUNC5(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 6 parameters*/
|
||||
#define FAKE_VALUE_FUNC6(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 7 parameters*/
|
||||
#define FAKE_VALUE_FUNC7(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 8 parameters*/
|
||||
#define FAKE_VALUE_FUNC8(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 9 parameters*/
|
||||
#define FAKE_VALUE_FUNC9(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static ARG8_TYPE FUNCNAME##_arg8_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_arg8_val = arg8; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
|
||||
|
||||
/* Defining a function to reset a fake function */
|
||||
#define RESET_FAKE(FUNCNAME) { \
|
||||
FUNCNAME##_reset(); \
|
||||
} \
|
||||
|
||||
#endif // FAKE_FUNCTIONS
|
||||
106
src/cppmock.cpp
Normal file
106
src/cppmock.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
//============================================================================
|
||||
// Name : cmock.cpp
|
||||
// Author : Mike Long
|
||||
// Version :
|
||||
// Copyright : Don't steal
|
||||
// Description : Hello World in C++, Ansi-style
|
||||
//============================================================================
|
||||
|
||||
#include "cppmock.hpp"
|
||||
|
||||
extern "C"{
|
||||
#include "embedded.h"
|
||||
}
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
FAKE_VOID_FUNC0(DISPLAY_init);
|
||||
FAKE_VOID_FUNC0(DISPLAY_clear);
|
||||
FAKE_VOID_FUNC1(DISPLAY_output_message, const char*);
|
||||
FAKE_VALUE_FUNC0(int, DISPLAY_get_line_capacity);
|
||||
FAKE_VALUE_FUNC0(int, DISPLAY_get_line_insert_index);
|
||||
|
||||
|
||||
class GreeterTests : public testing::Test
|
||||
{
|
||||
public:
|
||||
|
||||
void SetUp()
|
||||
{
|
||||
// Register resets
|
||||
RESET_FAKES();
|
||||
// non default init
|
||||
DISPLAY_get_line_capacity_return_val = 10;
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(GreeterTests, init_initialises_display)
|
||||
{
|
||||
UI_init();
|
||||
ASSERT_EQ(1, DISPLAY_init_call_count);
|
||||
}
|
||||
|
||||
TEST_F(GreeterTests, given_name_when_greet_called_outputs_name)
|
||||
{
|
||||
// given
|
||||
char name[] = "mike";
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
ASSERT_EQ(1, DISPLAY_output_message_call_count);
|
||||
ASSERT_EQ(name, DISPLAY_output_message_arg0_val);
|
||||
}
|
||||
|
||||
|
||||
TEST_F(GreeterTests, given_name_and_3_times_when_greetmultiple_called_outputs_name_3_times)
|
||||
{
|
||||
// given
|
||||
char name[] = "mike";
|
||||
// when
|
||||
UI_greet_multiple_times(name, 3);
|
||||
// then
|
||||
ASSERT_EQ(3, DISPLAY_output_message_call_count);
|
||||
ASSERT_EQ(name, DISPLAY_output_message_arg0_val);
|
||||
}
|
||||
|
||||
TEST_F(GreeterTests, given_non_full_screen_will_not_reset_display)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 10;
|
||||
DISPLAY_get_line_insert_index_return_val = 0;
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
ASSERT_EQ(0, DISPLAY_clear_call_count);
|
||||
ASSERT_EQ(1, DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
// Order assumption
|
||||
TEST_F(GreeterTests, given_full_screen_single_will_reset_display_then_output)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 1;
|
||||
DISPLAY_get_line_insert_index_return_val = 1;
|
||||
// when
|
||||
UI_greet(name);
|
||||
// then
|
||||
ASSERT_EQ(1, DISPLAY_clear_call_count);
|
||||
ASSERT_EQ(1, DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
// Order assumption
|
||||
TEST_F(GreeterTests, given_full_screen_multiple_will_reset_display_then_output)
|
||||
{
|
||||
char name[] = "mike";
|
||||
// given
|
||||
DISPLAY_get_line_capacity_return_val = 4;
|
||||
DISPLAY_get_line_insert_index_return_val = 4;
|
||||
// when
|
||||
UI_greet_multiple_times(name, 1);
|
||||
// then
|
||||
ASSERT_EQ(1, DISPLAY_clear_call_count);
|
||||
ASSERT_EQ(1, DISPLAY_output_message_call_count);
|
||||
}
|
||||
|
||||
604
src/cppmock.hpp
Normal file
604
src/cppmock.hpp
Normal file
@@ -0,0 +1,604 @@
|
||||
#ifndef FAKE_FUNCTIONS
|
||||
#define FAKE_FUNCTIONS
|
||||
|
||||
#include <vector>
|
||||
typedef void (*void_fptr)();
|
||||
std::vector<void_fptr> reset_functions;
|
||||
void RESET_FAKES()
|
||||
{
|
||||
std::vector<void_fptr>::iterator it = reset_functions.begin();
|
||||
for( ; it != reset_functions.end(); ++it)
|
||||
{
|
||||
void_fptr ptr = *it;
|
||||
ptr();
|
||||
}
|
||||
|
||||
}
|
||||
#define STATIC_INIT(FUNCNAME) \
|
||||
class StaticInitializer_##FUNCNAME \
|
||||
{ \
|
||||
public: \
|
||||
StaticInitializer_##FUNCNAME() \
|
||||
{ \
|
||||
reset_functions.push_back(FUNCNAME##_reset); \
|
||||
} \
|
||||
}; \
|
||||
static StaticInitializer_##FUNCNAME staticInitializer_##FUNCNAME; \
|
||||
|
||||
|
||||
/* Defining a void function with 0 parameters*/
|
||||
#define FAKE_VOID_FUNC0(FUNCNAME) \
|
||||
extern "C"{ \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(){ \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 1 parameters*/
|
||||
#define FAKE_VOID_FUNC1(FUNCNAME, ARG0_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 2 parameters*/
|
||||
#define FAKE_VOID_FUNC2(FUNCNAME, ARG0_TYPE, ARG1_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 3 parameters*/
|
||||
#define FAKE_VOID_FUNC3(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 4 parameters*/
|
||||
#define FAKE_VOID_FUNC4(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 5 parameters*/
|
||||
#define FAKE_VOID_FUNC5(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 6 parameters*/
|
||||
#define FAKE_VOID_FUNC6(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 7 parameters*/
|
||||
#define FAKE_VOID_FUNC7(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 8 parameters*/
|
||||
#define FAKE_VOID_FUNC8(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a void function with 9 parameters*/
|
||||
#define FAKE_VOID_FUNC9(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static ARG8_TYPE FUNCNAME##_arg8_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_arg8_val = arg8; \
|
||||
FUNCNAME##_call_count++; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 0 parameters*/
|
||||
#define FAKE_VALUE_FUNC0(RETURN_TYPE, FUNCNAME) \
|
||||
extern "C"{ \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(){ \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 1 parameters*/
|
||||
#define FAKE_VALUE_FUNC1(RETURN_TYPE, FUNCNAME, ARG0_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 2 parameters*/
|
||||
#define FAKE_VALUE_FUNC2(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 3 parameters*/
|
||||
#define FAKE_VALUE_FUNC3(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 4 parameters*/
|
||||
#define FAKE_VALUE_FUNC4(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 5 parameters*/
|
||||
#define FAKE_VALUE_FUNC5(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 6 parameters*/
|
||||
#define FAKE_VALUE_FUNC6(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 7 parameters*/
|
||||
#define FAKE_VALUE_FUNC7(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 8 parameters*/
|
||||
#define FAKE_VALUE_FUNC8(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function returning a value with 9 parameters*/
|
||||
#define FAKE_VALUE_FUNC9(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \
|
||||
extern "C"{ \
|
||||
static ARG0_TYPE FUNCNAME##_arg0_val; \
|
||||
static ARG1_TYPE FUNCNAME##_arg1_val; \
|
||||
static ARG2_TYPE FUNCNAME##_arg2_val; \
|
||||
static ARG3_TYPE FUNCNAME##_arg3_val; \
|
||||
static ARG4_TYPE FUNCNAME##_arg4_val; \
|
||||
static ARG5_TYPE FUNCNAME##_arg5_val; \
|
||||
static ARG6_TYPE FUNCNAME##_arg6_val; \
|
||||
static ARG7_TYPE FUNCNAME##_arg7_val; \
|
||||
static ARG8_TYPE FUNCNAME##_arg8_val; \
|
||||
static RETURN_TYPE FUNCNAME##_return_val; \
|
||||
static int FUNCNAME##_call_count = 0; \
|
||||
RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \
|
||||
FUNCNAME##_arg0_val = arg0; \
|
||||
FUNCNAME##_arg1_val = arg1; \
|
||||
FUNCNAME##_arg2_val = arg2; \
|
||||
FUNCNAME##_arg3_val = arg3; \
|
||||
FUNCNAME##_arg4_val = arg4; \
|
||||
FUNCNAME##_arg5_val = arg5; \
|
||||
FUNCNAME##_arg6_val = arg6; \
|
||||
FUNCNAME##_arg7_val = arg7; \
|
||||
FUNCNAME##_arg8_val = arg8; \
|
||||
FUNCNAME##_call_count++; \
|
||||
return FUNCNAME##_return_val; \
|
||||
} \
|
||||
void FUNCNAME##_reset(){ \
|
||||
FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \
|
||||
FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \
|
||||
FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \
|
||||
FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \
|
||||
FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \
|
||||
FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \
|
||||
FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \
|
||||
FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \
|
||||
FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \
|
||||
FUNCNAME##_call_count = 0; \
|
||||
} \
|
||||
} \
|
||||
STATIC_INIT(FUNCNAME) \
|
||||
|
||||
|
||||
/* Defining a function to reset a fake function */
|
||||
#define RESET_FAKE(FUNCNAME) { \
|
||||
FUNCNAME##_reset(); \
|
||||
} \
|
||||
|
||||
#endif // FAKE_FUNCTIONS
|
||||
34
src/embedded.c
Normal file
34
src/embedded.c
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
|
||||
|
||||
void DISPLAY_init();
|
||||
void DISPLAY_clear();
|
||||
int DISPLAY_get_line_capacity();
|
||||
int DISPLAY_get_line_insert_index();
|
||||
void DISPLAY_output_message(char * message);
|
||||
|
||||
void UI_init()
|
||||
{
|
||||
DISPLAY_init();
|
||||
}
|
||||
|
||||
void UI_greet(char * name)
|
||||
{
|
||||
if(DISPLAY_get_line_capacity() == DISPLAY_get_line_insert_index())
|
||||
{
|
||||
DISPLAY_clear();
|
||||
}
|
||||
DISPLAY_output_message(name);
|
||||
}
|
||||
|
||||
void UI_greet_multiple_times(char * name, int times)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < times; i++)
|
||||
{
|
||||
UI_greet(name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
10
src/embedded.h
Normal file
10
src/embedded.h
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
#ifndef EMBEDDED_CODE
|
||||
#define EMBEDDED_CODE
|
||||
|
||||
void UI_init();
|
||||
void UI_greet(char * name);
|
||||
void UI_greet_multiple_times(char * name, int times);
|
||||
|
||||
|
||||
#endif /* EMBEDDED_CODE */
|
||||
155
src/fakegen.rb
Normal file
155
src/fakegen.rb
Normal file
@@ -0,0 +1,155 @@
|
||||
|
||||
# fakegen.rb
|
||||
# A simple code generator to create some C macros for defining test fake functions
|
||||
|
||||
|
||||
$cpp_output = true
|
||||
|
||||
def output_macro(args, is_value_function)
|
||||
|
||||
macro_name_preamble = is_value_function ? "FAKE_VALUE_FUNC" : "FAKE_VOID_FUNC";
|
||||
macro_name = "#{macro_name_preamble}#{args}"
|
||||
return_type = is_value_function ? "RETURN_TYPE" : ""
|
||||
|
||||
output_macro_header(macro_name, args, return_type)
|
||||
|
||||
extern_c { # define argument capture variables
|
||||
output_variables(args, is_value_function)
|
||||
output_function_signature(args, is_value_function)
|
||||
|
||||
puts "{ \\"
|
||||
output_function_body(args, is_value_function)
|
||||
puts " } \\"
|
||||
output_reset_function(args)
|
||||
}
|
||||
puts "STATIC_INIT(FUNCNAME) \\"
|
||||
puts ""
|
||||
end
|
||||
|
||||
def output_reset_code
|
||||
puts <<-REGISTRATION
|
||||
#include <vector>
|
||||
typedef void (*void_fptr)();
|
||||
std::vector<void_fptr> reset_functions;
|
||||
void RESET_FAKES()
|
||||
{
|
||||
std::vector<void_fptr>::iterator it = reset_functions.begin();
|
||||
for( ; it != reset_functions.end(); ++it)
|
||||
{
|
||||
void_fptr ptr = *it;
|
||||
ptr();
|
||||
}
|
||||
|
||||
}
|
||||
REGISTRATION
|
||||
end
|
||||
|
||||
def output_static_initializer
|
||||
puts <<-MY_STATIC_INITIALIZER
|
||||
#define STATIC_INIT(FUNCNAME) \\
|
||||
class StaticInitializer_##FUNCNAME \\
|
||||
{ \\
|
||||
public: \\
|
||||
StaticInitializer_##FUNCNAME() \\
|
||||
{ \\
|
||||
reset_functions.push_back(FUNCNAME##_reset); \\
|
||||
} \\
|
||||
}; \\
|
||||
static StaticInitializer_##FUNCNAME staticInitializer_##FUNCNAME; \\
|
||||
|
||||
MY_STATIC_INITIALIZER
|
||||
end
|
||||
|
||||
def output_macro_header(macro_name, args, return_type)
|
||||
puts ""
|
||||
|
||||
output_macro_name(macro_name, args, return_type)
|
||||
|
||||
end
|
||||
|
||||
def output_macro_name(macro_name, args, return_type)
|
||||
parameter_list = return_type
|
||||
if return_type == ""
|
||||
puts "/* Defining a void function with #{args} parameters*/"
|
||||
else
|
||||
puts "/* Defining a function returning a value with #{args} parameters*/"
|
||||
parameter_list += ", "
|
||||
end
|
||||
parameter_list += "FUNCNAME"
|
||||
print "#define #{macro_name}(" + parameter_list
|
||||
|
||||
args.times { |i| print ", ARG#{i}_TYPE" }
|
||||
|
||||
puts ") \\"
|
||||
end
|
||||
|
||||
def output_variables(args, is_value_function)
|
||||
args.times { |i| puts " static ARG#{i}_TYPE FUNCNAME##_arg#{i}_val; \\" }
|
||||
puts " static RETURN_TYPE FUNCNAME##_return_val; \\" unless not is_value_function
|
||||
puts " static int FUNCNAME##_call_count = 0; \\"
|
||||
end
|
||||
|
||||
def output_function_signature(args, is_value_function)
|
||||
if is_value_function
|
||||
print " RETURN_TYPE FUNCNAME("
|
||||
else
|
||||
print " void FUNCNAME("
|
||||
end
|
||||
|
||||
args.times { |i| print "ARG#{i}_TYPE arg#{i}" }
|
||||
|
||||
print ")"
|
||||
end
|
||||
|
||||
def output_function_body(args, is_value_function)
|
||||
# capture arguments
|
||||
args.times { |i| puts " FUNCNAME##_arg#{i}_val = arg#{i}; \\" }
|
||||
# update call count
|
||||
puts " FUNCNAME##_call_count++; \\"
|
||||
# return something if value function
|
||||
puts " return FUNCNAME##_return_val; \\" unless not is_value_function
|
||||
end
|
||||
|
||||
def output_reset_function(args)
|
||||
puts " void FUNCNAME##_reset(){ \\"
|
||||
args.times { |i|
|
||||
puts " FUNCNAME##_arg#{i}_val = (ARG#{i}_TYPE) 0; \\"
|
||||
}
|
||||
puts " FUNCNAME##_call_count = 0; \\"
|
||||
puts " } \\"
|
||||
end
|
||||
|
||||
def define_reset_fake
|
||||
puts ""
|
||||
puts "/* Defining a function to reset a fake function */"
|
||||
puts "#define RESET_FAKE(FUNCNAME) { \\"
|
||||
puts " FUNCNAME##_reset(); \\"
|
||||
puts "} \\"
|
||||
end
|
||||
|
||||
def include_guard
|
||||
puts "#ifndef FAKE_FUNCTIONS"
|
||||
puts "#define FAKE_FUNCTIONS"
|
||||
puts ""
|
||||
|
||||
yield
|
||||
|
||||
puts ""
|
||||
puts "#endif // FAKE_FUNCTIONS"
|
||||
end
|
||||
|
||||
def extern_c
|
||||
|
||||
puts "extern \"C\"{ \\" unless !$cpp_output
|
||||
yield
|
||||
puts "} \\" unless !$cpp_output
|
||||
end
|
||||
|
||||
# lets generate!!
|
||||
include_guard {
|
||||
output_reset_code if $cpp_output
|
||||
output_static_initializer if $cpp_output
|
||||
10.times {|arg_count| output_macro(arg_count, false)}
|
||||
10.times {|arg_count| output_macro(arg_count, true)}
|
||||
define_reset_fake
|
||||
}
|
||||
Reference in New Issue
Block a user