testtools/micromock/unittests/micromocktest/hypothetic_module.c (135 lines of code) (raw):
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
/*defines*/
#include "stdafx_c.h"
#include "hypothetic_module.h"
#include "hypothetic_module_interfaces.h"
#define SHADOW_BUFFER_SIZE 100
/*types*/
typedef struct data_tag
{
int wasZeroCalled;
int wasizeroCalled;
int wasoneCalled;
int ioneiShadow;
int wastwoCalled;
char twosShadow[SHADOW_BUFFER_SIZE];
int twoiShadow;
int wasthreeCalled;
char threecShadow;
char threesShadow[SHADOW_BUFFER_SIZE];
int threeiShadow;
int wasfourCalled;
unsigned short int foursiShadow;
char fourcShadow;
char foursShadow[SHADOW_BUFFER_SIZE];
int fouriShadow;
int wasfiveCalled;
pVoidFunction fivepVoidShadow;
unsigned short int fivesiShadow;
char fivecShadow;
char fivesShadow[SHADOW_BUFFER_SIZE];
int fiveiShadow;
int wassixCalled;
char sixc1Shadow ,sixc2Shadow ,sixc3Shadow ,sixc4Shadow ,sixc5Shadow ,sixc6Shadow;
}data;
/*static variables*/
static data d;
/*static functions*/
/*variable exports*/
/*function exports*/
void zero(void)
{
d.wasZeroCalled=1;
}
int izero(void)
{
d.wasizeroCalled=1;
return 0;
}
int one(_In_ int i)
{
d.wasoneCalled=1;
d.ioneiShadow=i;
return 0;
}
int two(_In_z_ pChar s, _In_ int i)
{
d.wastwoCalled=1;
strcpy_s(d.twosShadow, SHADOW_BUFFER_SIZE,s);
//d.twosShadow[0]=s;
d.twoiShadow = i;
return 0;
}
int three(_In_ char c, _In_z_ pChar s, _In_ int i)
{
d.wasthreeCalled=1;
d.threecShadow=c;
strcpy_s(d.threesShadow, SHADOW_BUFFER_SIZE, s);
//d.threesShadow[0]=s;
d.threeiShadow = i;
return 0;
}
int four(_In_ unsigned short int si, _In_ char c, _In_z_ pChar s, _In_ int i)
{
d.wasfourCalled=1;
d.foursiShadow = si;
d.fourcShadow=c;
strcpy_s(d.foursShadow, SHADOW_BUFFER_SIZE, s);
//d.foursShadow[0]=s;
d.fouriShadow = i;
return 0;
}
int five(_In_opt_ pVoidFunction pVoid, _In_ unsigned short int si, _In_ char c, _In_z_ pChar s, _In_ int i)
{
d.wasfiveCalled=1;
d.fivepVoidShadow = pVoid;
d.fivesiShadow = si;
d.fivecShadow=c;
strcpy_s(d.fivesShadow, SHADOW_BUFFER_SIZE, s);
//d.fivesShadow[0]=s;
d.fiveiShadow = i;
return 0;
}
int six(_In_ char c1, _In_ char c2, _In_ char c3, _In_ char c4, _In_ char c5, _In_ char c6)
{
d.wassixCalled=1;
d.sixc1Shadow=c1;
d.sixc2Shadow=c2;
d.sixc3Shadow=c3;
d.sixc4Shadow=c4;
d.sixc5Shadow=c5;
d.sixc6Shadow=c6;
return 0;
}
void theTask(void)
{
if(d.wasZeroCalled)
{
d.wasZeroCalled=0;
whenzero();
}
if(d.wasizeroCalled)
{
d.wasizeroCalled=0;
whenizero();
}
if(d.wasoneCalled)
{
d.wasoneCalled=0;
whenone(d.ioneiShadow+1);
}
if(d.wastwoCalled)
{
d.wastwoCalled=0;
whentwo(d.twosShadow, d.twoiShadow+2);
}
if(d.wasthreeCalled)
{
d.wasthreeCalled=0;
whenthree(d.threecShadow+3, d.threesShadow, d.threeiShadow+3);
}
if(d.wasfourCalled)
{
d.wasfourCalled=0;
whenfour(d.foursiShadow+4, d.fourcShadow+4, d.foursShadow, d.fouriShadow+4);
}
if(d.wasfiveCalled)
{
d.wasfiveCalled=0;
whenfive(d.fivepVoidShadow, d.fivesiShadow+5, d.fivecShadow+5, d.fivesShadow, d.fiveiShadow+5);
}
if(d.wassixCalled)
{
d.wassixCalled=0;
whensix(d.sixc1Shadow+6,d.sixc2Shadow+6,d.sixc3Shadow+6,d.sixc4Shadow+6,d.sixc5Shadow+6,d.sixc6Shadow+6);
}
}