96 lines
2.2 KiB
C++
96 lines
2.2 KiB
C++
#include <cstdlib>
|
|
#include <cstdio>
|
|
|
|
#include "TestDesc.h"
|
|
#if defined(EMBEDDED)
|
|
#include "FPGA.h"
|
|
#else
|
|
#include "Semihosting.h"
|
|
#endif
|
|
#include "IORunner.h"
|
|
#include "ArrayMemory.h"
|
|
using namespace std;
|
|
|
|
#ifndef MEMSIZE
|
|
#ifdef BENCHMARK
|
|
#define MEMSIZE 300000
|
|
#else
|
|
#define MEMSIZE 230000
|
|
#endif
|
|
#endif
|
|
|
|
// Dummy (will be generated by python scripts)
|
|
// char* array describing the tests and the input patterns.
|
|
// Reference patterns are ignored in this case.
|
|
#include "TestDrive.h"
|
|
|
|
extern "C" void testmain_hook (void) __attribute__ ((weak));
|
|
|
|
void testmain_hook(void)
|
|
{
|
|
|
|
}
|
|
|
|
int testmain(const char *patterns)
|
|
{
|
|
testmain_hook();
|
|
char *memoryBuf=NULL;
|
|
|
|
memoryBuf = (char*)malloc(MEMSIZE);
|
|
if (memoryBuf !=NULL)
|
|
{
|
|
try
|
|
{
|
|
// Choice of a memory manager.
|
|
// Here we choose the Array one (only implemented one)
|
|
Client::ArrayMemory memory(memoryBuf,MEMSIZE);
|
|
|
|
// There is also possibility of using "FPGA" io
|
|
#if defined(EMBEDDED)
|
|
Client::FPGA io(testDesc,patterns);
|
|
#else
|
|
Client::Semihosting io("../TestDesc.txt","../Patterns","../Output","../Parameters");
|
|
#endif
|
|
|
|
|
|
// Pattern Manager making the link between IO and Memory
|
|
Client::PatternMgr mgr(&io,&memory);
|
|
|
|
|
|
// A Runner to run the test.
|
|
// An IO runner is driven by some IO
|
|
// In future one may have a client/server runner driven
|
|
// by a server running on a host.
|
|
#if defined(EMBEDDED)
|
|
Client::IORunner runner(&io,&mgr,Testing::kTestOnly);
|
|
//Client::IORunner runner(&io,&mgr,Testing::kTestAndDump);
|
|
#else
|
|
// Works also in embedded but slower since data is dumped
|
|
Client::IORunner runner(&io,&mgr,Testing::kTestAndDump);
|
|
#endif
|
|
|
|
|
|
// Root object containing all the tests
|
|
Root d(1);
|
|
|
|
// Runner applied to the tree of tests
|
|
d.accept(&runner);
|
|
|
|
}
|
|
catch(...)
|
|
{
|
|
printf("Exception\n");
|
|
}
|
|
|
|
|
|
free(memoryBuf);
|
|
}
|
|
else
|
|
{
|
|
printf("NOT ENOUGH MEMORY\n");
|
|
}
|
|
|
|
/* code */
|
|
return 0;
|
|
}
|