Knowledge Base Nr: 00326 modultest.cpp - http://www.swe-kaiser.de
Downloads:
c/cpp: stubben von code zum testen der funktionalität (modultest)
######### zu testende funktion
void FunktionZuTesten()
{
asm("mftbl %0" : "=r"(tbl_u32));
asm("mthid0 r0");
asm("e_lis r0, 0x0000");
}
######### header in modul mit zu testender funktion einbinden (nur im testfall)
#undef asm
#define myasm(a) CopyAsmCmd(asm_cnt++, a);
#define asm(a) myasm(#a);
extern int asm_cnt;
extern void CopyAsmCmd(char* index, char* source);
######### testmodul mit testfunktionen dazulinken (nur im testfall)
char asm_cmd[20][40] = {0};
int asm_cnt;
void CopyAsmCmd(int index, char* source)
{
// source kann '"' am anfang und ende enthalten! nicht mitkopieren
int n;
for (n=0; n<39; n++)
{
asm_cmd[index][n] = source[n+1];
if (source[n] == 0)
break;
}
if ((source[0] == '"') && (source[n-1] == '"'))
asm_cmd[index][n-2] = 0;
else
asm_cmd[index][n-1] = 0;
}
boolean CompareAsmCmd(int index, char* soll)
{
for (int n=0; n<40; n++)
{
if (asm_cmd[index][n] != soll[n])
return FALSE;
if (soll[n] == 0)
return TRUE;
}
return FALSE;
}
int testfunktion()
{
int result = 0;
asm_cnt = 0;
for (int i=0; i<20; i++)
asm_cmd[i][0] = 0;
FunktionZuTesten();
if (CompareAsmCmd(0, "mftbl %0\" : \"=r\"(tbl_u32)") != TRUE)
result |= 0x0001;
if (CompareAsmCmd(1, "mthid0 r0") != TRUE)
result |= 0x0002;
if (CompareAsmCmd(2, "e_lis r0, 0x0000") != TRUE)
result |= 0x0004;
if (asm_cnt != 3)
result |= 0x1000;
return result;
}
void main()
{
if (testfunktion() != 0)
printf("FunktionZuTesten() fehlerhaft!");
else
printf("FunktionZuTesten() ok!");
}