convert all tests to use epicsUnitTest
This commit is contained in:
@@ -16,8 +16,9 @@
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
|
||||
#include <epicsAssert.h>
|
||||
#include <epicsExit.h>
|
||||
#include <epicsUnitTest.h>
|
||||
#include <testMain.h>
|
||||
|
||||
#include <pv/timeStamp.h>
|
||||
#include <pv/event.h>
|
||||
#include <pv/timer.h>
|
||||
@@ -38,10 +39,8 @@ typedef std::tr1::shared_ptr<MyCallback> MyCallbackPtr;
|
||||
class MyCallback : public TimerCallback {
|
||||
public:
|
||||
POINTER_DEFINITIONS(MyCallback);
|
||||
MyCallback(String name,FILE *fd,FILE *auxfd,EventPtr const & wait)
|
||||
MyCallback(String name,EventPtr const & wait)
|
||||
: name(name),
|
||||
fd(fd),
|
||||
auxfd(auxfd),
|
||||
wait(wait)
|
||||
{
|
||||
}
|
||||
@@ -55,18 +54,16 @@ public:
|
||||
}
|
||||
virtual void timerStopped()
|
||||
{
|
||||
fprintf(fd,"timerStopped %s\n",name.c_str());
|
||||
printf("timerStopped %s\n",name.c_str());
|
||||
}
|
||||
TimeStamp &getTimeStamp() { return timeStamp;}
|
||||
private:
|
||||
String name;
|
||||
FILE *fd;
|
||||
FILE *auxfd;
|
||||
EventPtr wait;
|
||||
TimeStamp timeStamp;
|
||||
};
|
||||
|
||||
static void testBasic(FILE *fd, FILE *auxfd)
|
||||
static void testBasic()
|
||||
{
|
||||
if(debug) {
|
||||
printf("\n\ntestBasic oneDelay %lf twoDelay %lf threeDaley %lf\n",
|
||||
@@ -79,20 +76,20 @@ static void testBasic(FILE *fd, FILE *auxfd)
|
||||
EventPtr eventTwo(new Event());
|
||||
EventPtr eventThree(new Event());
|
||||
TimerPtr timer(new Timer(String("timer"),middlePriority));
|
||||
MyCallbackPtr callbackOne(new MyCallback(one,fd,auxfd,eventOne));
|
||||
MyCallbackPtr callbackTwo(new MyCallback(two,fd,auxfd,eventTwo));
|
||||
MyCallbackPtr callbackThree(new MyCallback(three,fd,auxfd,eventThree));
|
||||
MyCallbackPtr callbackOne(new MyCallback(one,eventOne));
|
||||
MyCallbackPtr callbackTwo(new MyCallback(two,eventTwo));
|
||||
MyCallbackPtr callbackThree(new MyCallback(three,eventThree));
|
||||
for(int n=0; n<ntimes; n++) {
|
||||
currentTimeStamp.getCurrent();
|
||||
assert(!timer->isScheduled(callbackOne));
|
||||
assert(!timer->isScheduled(callbackTwo));
|
||||
assert(!timer->isScheduled(callbackThree));
|
||||
testOk1(!timer->isScheduled(callbackOne));
|
||||
testOk1(!timer->isScheduled(callbackTwo));
|
||||
testOk1(!timer->isScheduled(callbackThree));
|
||||
timer->scheduleAfterDelay(callbackOne,oneDelay);
|
||||
timer->scheduleAfterDelay(callbackTwo,twoDelay);
|
||||
timer->scheduleAfterDelay(callbackThree,threeDelay);
|
||||
if(oneDelay>.1) assert(timer->isScheduled(callbackOne));
|
||||
if(twoDelay>.1) assert(timer->isScheduled(callbackTwo));
|
||||
if(threeDelay>.1) assert(timer->isScheduled(callbackThree));
|
||||
if(oneDelay>.1) testOk1(timer->isScheduled(callbackOne));
|
||||
if(twoDelay>.1) testOk1(timer->isScheduled(callbackTwo));
|
||||
if(threeDelay>.1) testOk1(timer->isScheduled(callbackThree));
|
||||
if(debug) {
|
||||
String builder;
|
||||
timer->toString(&builder);
|
||||
@@ -107,34 +104,34 @@ static void testBasic(FILE *fd, FILE *auxfd)
|
||||
callbackOne->getTimeStamp(),currentTimeStamp);
|
||||
delta = diff - oneDelay;
|
||||
if(debug) {
|
||||
fprintf(auxfd,"one requested %f actual %f delta %f\n",
|
||||
printf("one requested %f actual %f delta %f\n",
|
||||
oneDelay,diff,delta);
|
||||
}
|
||||
if(delta<0.0) delta = -delta;
|
||||
assert(delta<.1);
|
||||
testOk1(delta<.1);
|
||||
diff = TimeStamp::diff(
|
||||
callbackTwo->getTimeStamp(),currentTimeStamp);
|
||||
delta = diff - twoDelay;
|
||||
if(debug) {
|
||||
fprintf(auxfd,"two requested %f actual %f delta %f\n",
|
||||
printf("two requested %f actual %f delta %f\n",
|
||||
twoDelay,diff,delta);
|
||||
}
|
||||
if(delta<0.0) delta = -delta;
|
||||
assert(delta<.1);
|
||||
testOk1(delta<.1);
|
||||
diff = TimeStamp::diff(
|
||||
callbackThree->getTimeStamp(),currentTimeStamp);
|
||||
delta = diff - threeDelay;
|
||||
if(debug) {
|
||||
fprintf(auxfd,"three requested %f actual %f delta %f\n",
|
||||
printf("three requested %f actual %f delta %f\n",
|
||||
threeDelay,diff,delta);
|
||||
}
|
||||
if(delta<0.0) delta = -delta;
|
||||
assert(delta<.1);
|
||||
testOk1(delta<.1);
|
||||
}
|
||||
fprintf(fd,"testBasic PASSED\n");
|
||||
printf("testBasic PASSED\n");
|
||||
}
|
||||
|
||||
static void testCancel(FILE *fd, FILE *auxfd)
|
||||
static void testCancel()
|
||||
{
|
||||
if(debug) {
|
||||
printf("\n\ntestCancel oneDelay %lf twoDelay %lf threeDaley %lf\n",
|
||||
@@ -147,21 +144,21 @@ static void testCancel(FILE *fd, FILE *auxfd)
|
||||
EventPtr eventTwo(new Event());
|
||||
EventPtr eventThree(new Event());
|
||||
TimerPtr timer(new Timer(String("timer"),middlePriority));
|
||||
MyCallbackPtr callbackOne(new MyCallback(one,fd,auxfd,eventOne));
|
||||
MyCallbackPtr callbackTwo(new MyCallback(two,fd,auxfd,eventTwo));
|
||||
MyCallbackPtr callbackThree(new MyCallback(three,fd,auxfd,eventThree));
|
||||
MyCallbackPtr callbackOne(new MyCallback(one,eventOne));
|
||||
MyCallbackPtr callbackTwo(new MyCallback(two,eventTwo));
|
||||
MyCallbackPtr callbackThree(new MyCallback(three,eventThree));
|
||||
for(int n=0; n<ntimes; n++) {
|
||||
currentTimeStamp.getCurrent();
|
||||
assert(!timer->isScheduled(callbackOne));
|
||||
assert(!timer->isScheduled(callbackTwo));
|
||||
assert(!timer->isScheduled(callbackThree));
|
||||
testOk1(!timer->isScheduled(callbackOne));
|
||||
testOk1(!timer->isScheduled(callbackTwo));
|
||||
testOk1(!timer->isScheduled(callbackThree));
|
||||
timer->scheduleAfterDelay(callbackOne,oneDelay);
|
||||
timer->scheduleAfterDelay(callbackTwo,twoDelay);
|
||||
timer->scheduleAfterDelay(callbackThree,threeDelay);
|
||||
timer->cancel(callbackTwo);
|
||||
if(oneDelay>.1) assert(timer->isScheduled(callbackOne));
|
||||
assert(!timer->isScheduled(callbackTwo));
|
||||
if(threeDelay>.1) assert(timer->isScheduled(callbackThree));
|
||||
if(oneDelay>.1) testOk1(timer->isScheduled(callbackOne));
|
||||
testOk1(!timer->isScheduled(callbackTwo));
|
||||
if(threeDelay>.1) testOk1(timer->isScheduled(callbackThree));
|
||||
if(debug) {
|
||||
String builder;
|
||||
timer->toString(&builder);
|
||||
@@ -175,64 +172,55 @@ static void testCancel(FILE *fd, FILE *auxfd)
|
||||
callbackOne->getTimeStamp(),currentTimeStamp);
|
||||
delta = diff - oneDelay;
|
||||
if(debug) {
|
||||
fprintf(auxfd,"one requested %f actual %f delta %f\n",
|
||||
printf("one requested %f actual %f delta %f\n",
|
||||
oneDelay,diff,delta);
|
||||
}
|
||||
if(delta<0.0) delta = -delta;
|
||||
assert(delta<.1);
|
||||
testOk1(delta<.1);
|
||||
diff = TimeStamp::diff(
|
||||
callbackThree->getTimeStamp(),currentTimeStamp);
|
||||
delta = diff - threeDelay;
|
||||
if(debug) {
|
||||
fprintf(auxfd,"three requested %f actual %f delta %f\n",
|
||||
printf("three requested %f actual %f delta %f\n",
|
||||
threeDelay,diff,delta);
|
||||
}
|
||||
if(delta<0.0) delta = -delta;
|
||||
assert(delta<.1);
|
||||
testOk1(delta<.1);
|
||||
}
|
||||
fprintf(fd,"testCancel PASSED\n");
|
||||
printf("testCancel PASSED\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char *fileName = 0;
|
||||
if(argc>1) fileName = argv[1];
|
||||
FILE * fd = stdout;
|
||||
if(fileName!=0 && fileName[0]!=0) {
|
||||
fd = fopen(fileName,"w+");
|
||||
}
|
||||
char *auxFileName = 0;
|
||||
if(argc>2) auxFileName = argv[2];
|
||||
FILE *auxfd = stdout;
|
||||
if(auxFileName!=0 && auxFileName[0]!=0) {
|
||||
auxfd = fopen(auxFileName,"w+");
|
||||
}
|
||||
MAIN(testTimer)
|
||||
{
|
||||
testPlan(171);
|
||||
testDiag("Tests timer");
|
||||
oneDelay = .4;
|
||||
twoDelay = .2;
|
||||
threeDelay = .1;
|
||||
fprintf(fd,"oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
printf("oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
oneDelay,twoDelay,threeDelay);
|
||||
testBasic(fd,auxfd);
|
||||
testCancel(fd,auxfd);
|
||||
testBasic();
|
||||
testCancel();
|
||||
oneDelay = .1;
|
||||
twoDelay = .2;
|
||||
threeDelay = .4;
|
||||
fprintf(fd,"oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
printf("oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
oneDelay,twoDelay,threeDelay);
|
||||
testBasic(fd,auxfd);
|
||||
testCancel(fd,auxfd);
|
||||
testBasic();
|
||||
testCancel();
|
||||
oneDelay = .1;
|
||||
twoDelay = .4;
|
||||
threeDelay = .2;
|
||||
fprintf(fd,"oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
printf("oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
oneDelay,twoDelay,threeDelay);
|
||||
testBasic(fd,auxfd);
|
||||
testCancel(fd,auxfd);
|
||||
testBasic();
|
||||
testCancel();
|
||||
oneDelay = .0;
|
||||
twoDelay = .0;
|
||||
threeDelay = .0;
|
||||
fprintf(fd,"oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
printf("oneDelay %f twoDelay %f threeDelay %f\n",
|
||||
oneDelay,twoDelay,threeDelay);
|
||||
testBasic(fd,auxfd);
|
||||
testCancel(fd,auxfd);
|
||||
return (0);
|
||||
testBasic();
|
||||
testCancel();
|
||||
return testDone();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user