From 4102deceb3a831c0e1b7bb37576c1ab670521747 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Mon, 25 Nov 2013 15:46:00 -0500 Subject: [PATCH] convert all tests to use epicsUnitTest --- testApp/Makefile | 2 - testApp/capi/Makefile | 9 -- testApp/capi/testc.cpp | 97 ------------- testApp/capi/testc.py | 57 -------- testApp/misc/Makefile | 14 +- testApp/misc/testBaseException.cpp | 44 +++--- testApp/misc/testBitSet.cpp | 92 ++++++------ testApp/misc/testByteBuffer.cpp | 217 ++++++++++++++--------------- testApp/misc/testMessageQueue.cpp | 59 ++++---- testApp/misc/testQueue.cpp | 52 +++---- testApp/misc/testThread.cpp | 60 ++++---- testApp/misc/testTimeStamp.cpp | 122 ++++++++-------- testApp/misc/testTimer.cpp | 120 +++++++--------- testApp/misc/testTypeCast.cpp | 1 - testApp/monitor/Makefile | 13 -- testApp/monitor/testMonitor.cpp | 78 ----------- testApp/property/Makefile | 5 +- testApp/property/testProperty.cpp | 143 +++++++++---------- testApp/pv/Makefile | 11 +- testApp/pv/testBitSetUtil.cpp | 51 +++---- testApp/pv/testOperators.cpp | 12 +- testApp/pv/testPVAppend.cpp | 81 +++++------ testApp/pv/testPVAuxInfo.cpp | 42 +++--- testApp/pv/testPVData.cpp | 169 +++++++++++----------- testApp/pv/testPVType.cpp | 44 +++--- testApp/pv/testStandardField.cpp | 11 +- testApp/pv/testStandardPVField.cpp | 11 +- 27 files changed, 643 insertions(+), 974 deletions(-) delete mode 100644 testApp/capi/Makefile delete mode 100644 testApp/capi/testc.cpp delete mode 100755 testApp/capi/testc.py delete mode 100644 testApp/monitor/Makefile delete mode 100644 testApp/monitor/testMonitor.cpp diff --git a/testApp/Makefile b/testApp/Makefile index 2cb742e..a2771b3 100644 --- a/testApp/Makefile +++ b/testApp/Makefile @@ -3,7 +3,5 @@ include $(TOP)/configure/CONFIG DIRS += misc DIRS += pv DIRS += property -DIRS += monitor -DIRS += capi include $(TOP)/configure/RULES_DIRS diff --git a/testApp/capi/Makefile b/testApp/capi/Makefile deleted file mode 100644 index 328d98a..0000000 --- a/testApp/capi/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -TOP=../.. - -include $(TOP)/configure/CONFIG - -LIBRARY_HOST += testc -testc_SRCS += testc.cpp -testc_LIBS += pvData Com - -include $(TOP)/configure/RULES diff --git a/testApp/capi/testc.cpp b/testApp/capi/testc.cpp deleted file mode 100644 index 3976c51..0000000 --- a/testApp/capi/testc.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* channelBase.h */ -/** - * Copyright - See the COPYRIGHT that is included with this distribution. - * EPICS pvData is distributed subject to a Software License Agreement found - * in file LICENSE that is included with this distribution. - */ -/** - * @author mrk - */ - -#include -#include -#include - -using namespace epics::pvData; - -struct StructureHandle -{ - StructureConstPtr s; - StructureHandle(StructureConstPtr s) : s(s) {} -}; - -extern "C" -{ - void * createTest() - { - FieldCreatePtr fieldCreate = getFieldCreate(); - PVDataCreatePtr pvDataCreate = getPVDataCreate(); - FieldConstPtrArray fields; - StringArray fieldNames; - fields.push_back(fieldCreate->createScalar(pvString)); - fields.push_back(fieldCreate->createScalarArray(pvDouble)); - fieldNames.push_back("name"); - fieldNames.push_back("value"); - StructureConstPtr s = fieldCreate->createStructure(fieldNames, fields); - StructureHandle * sh = new StructureHandle(s); - return (void *)sh; - } - - int getNumberFields(void * handle) - { - StructureHandle * sh = (StructureHandle *)handle; - return sh->s->getNumberFields(); - } - - const char * getFieldName(void * handle, int n) - { - StructureHandle * sh = (StructureHandle *)handle; - return sh->s->getFieldNames()[n].c_str(); - } - - int getFieldType(void * handle, const char * name) - { - StructureHandle * sh = (StructureHandle *)handle; - /* api missing const for getField(size_t) so have to use name */ - return sh->s->getField(name)->getType(); - } - - int getScalarType(void * handle, const char * name) - { - StructureHandle * sh = (StructureHandle *)handle; - FieldConstPtr f = sh->s->getField(name); - if(f->getType() == scalar) - { - ScalarConstPtr sp = std::tr1::static_pointer_cast(f); - return sp->getScalarType(); - } - else - { - return -1; - } - } - - int getElementType(void * handle, const char * name) - { - StructureHandle * sh = (StructureHandle *)handle; - FieldConstPtr f = sh->s->getField(name); - if(f->getType() == scalarArray) - { - ScalarArrayConstPtr sp = std::tr1::static_pointer_cast(f); - return sp->getElementType(); - } - else - { - return -1; - } - } - - void destroy(void * handle) - { - StructureHandle * sh = (StructureHandle *)handle; - delete sh; - } - -}; - - diff --git a/testApp/capi/testc.py b/testApp/capi/testc.py deleted file mode 100755 index 18a8826..0000000 --- a/testApp/capi/testc.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -import os -from ctypes import * - -# cytpes API - -libname = "../../lib/%s/libtestc.so" % os.environ["EPICS_HOST_ARCH"] -lib = CDLL(libname) -lib.createTest.restype = c_void_p -lib.createTest.argtypes = [] -lib.getNumberFields.restype = c_int -lib.getNumberFields.argtypes = [c_void_p] -lib.getFieldName.restype = c_char_p -lib.getFieldName.argtypes = [c_void_p, c_int] -lib.getFieldType.restype = c_int -lib.getFieldType.argtypes = [c_void_p, c_char_p] -lib.getScalarType.restype = c_int -lib.getScalarType.argtypes = [c_void_p, c_char_p] -lib.getElementType.restype = c_int -lib.getElementType.argtypes = [c_void_p, c_char_p] - -# Python API - -type_enum = ["scalar", "scalarArray", "structure", "structureArray"] - -class Structure: - def getNumberFields(self): - return lib.getNumberFields(self.handle) - def getFieldName(self, n): - return lib.getFieldName(self.handle, n) - def getFieldType(self, n): - return lib.getFieldType(self.handle, n) - def getScalarType(self, n): - return lib.getScalarType(self.handle, n) - def getElementType(self, n): - return lib.getElementType(self.handle, n) - def __enter__(self): - return self - def __exit__(self, a, b, c): - print "destroying handle" - lib.destroy(self.handle) - -class TestStructure(Structure): - def __init__(self): - self.handle = lib.createTest() - -with TestStructure() as s: - l = s.getNumberFields() - print "pvData structure has %d fields" % l - for n in range(l): - name = s.getFieldName(n) - type_ = s.getFieldType(name) - sc_type = s.getScalarType(name) - el_type = s.getElementType(name) - print name, type_enum[type_], sc_type, el_type - diff --git a/testApp/misc/Makefile b/testApp/misc/Makefile index 66f3596..dbf99ad 100644 --- a/testApp/misc/Makefile +++ b/testApp/misc/Makefile @@ -6,12 +6,15 @@ PROD_LIBS += pvData Com PROD_HOST += testThread testThread_SRCS += testThread.cpp +TESTS += testThread PROD_HOST += testTimer testTimer_SRCS += testTimer.cpp +TESTS += testTimer PROD_HOST += testBitSet testBitSet_SRCS += testBitSet.cpp +TESTS += testBitSet PROD_HOST += testOverrunBitSet testOverrunBitSet_SRCS += testOverrunBitSet.cpp @@ -22,28 +25,33 @@ testByteOrder_SRCS += testByteOrder.cpp PROD_HOST += testByteBuffer testByteBuffer_SRCS += testByteBuffer.cpp +TESTS += testByteBuffer PROD_HOST += testBaseException testBaseException_SRCS += testBaseException.cpp +TESTS += testBaseException -TESTPROD += testSharedVector +PROD_HOST += testSharedVector testSharedVector_SRCS += testSharedVector.cpp TESTS += testSharedVector -TESTPROD += testSerialization +PROD_HOST += testSerialization testSerialization_SRCS += testSerialization.cpp TESTS += testSerialization PROD_HOST += testTimeStamp testTimeStamp_SRCS += testTimeStamp.cpp +TESTS += testTimeStamp PROD_HOST += testQueue testQueue_SRCS += testQueue.cpp +TESTS += testQueue PROD_HOST += testMessageQueue testMessageQueue_SRCS += testMessageQueue.cpp +TESTS += testMessageQueue -TESTPROD += testTypeCast +PROD_HOST += testTypeCast testTypeCast_SRCS += testTypeCast.cpp TESTS += testTypeCast diff --git a/testApp/misc/testBaseException.cpp b/testApp/misc/testBaseException.cpp index 2a00995..dad14d5 100644 --- a/testApp/misc/testBaseException.cpp +++ b/testApp/misc/testBaseException.cpp @@ -11,11 +11,12 @@ #include #include #include + +#include +#include + #include - -#include - using namespace epics::pvData; struct Unroller @@ -41,13 +42,13 @@ void internalTestBaseException(int /*unused*/ = 0) } } -void testBaseException(FILE *fp) { - fprintf(fp,"testBaseException... "); +void testBaseException() { + printf("testBaseException... "); try { THROW_BASE_EXCEPTION("all is OK"); } catch (BaseException& be) { - fprintf(fp,"\n\n%s\n\n", be.what()); + printf("\n\n%s\n\n", be.what()); } try { @@ -57,38 +58,35 @@ void testBaseException(FILE *fp) { THROW_BASE_EXCEPTION_CAUSE("exception 2", be2); } } catch (BaseException& be) { - fprintf(fp,"\n\n%s\n\n", be.what()); + printf("\n\n%s\n\n", be.what()); } - fprintf(fp,"PASSED\n"); + testPass("testBaseException"); } -void testLogicException(FILE *fp) { +void testLogicException() { try { THROW_EXCEPTION(std::logic_error("There is a logic_error")); } catch (std::logic_error& be) { - fprintf(fp,"\n\n%s\n\n", be.what()); - PRINT_EXCEPTION2(be, fp); + printf("\n\n%s\n\n", be.what()); + PRINT_EXCEPTION2(be, stdout); } try { THROW_EXCEPTION2(std::logic_error, "There is another logic_error"); } catch (std::logic_error& be) { - fprintf(fp,"\n\n%s\n\n", be.what()); - fprintf(fp,"%s\n", SHOW_EXCEPTION(be).c_str()); + printf("\n\n%s\n\n", be.what()); + printf("%s\n", SHOW_EXCEPTION(be).c_str()); } + testPass("testLogicException"); } -int main(int argc,char *argv[]) +MAIN(testBaseException) { - FILE *fp=NULL; - if(argc>1){ - fp=fopen(argv[1], "w"); - if(!fp) fprintf(stderr,"Failed to open test output file\n"); - } - if(!fp) fp=stdout; - testLogicException(fp); - testBaseException(fp); - return(0); + testPlan(2); + testDiag("Tests base exception"); + testLogicException(); + testBaseException(); + return testDone(); } diff --git a/testApp/misc/testBitSet.cpp b/testApp/misc/testBitSet.cpp index fdc7bb7..b2a9b8b 100644 --- a/testApp/misc/testBitSet.cpp +++ b/testApp/misc/testBitSet.cpp @@ -14,87 +14,87 @@ #include #include -#include -#include +#include +#include using namespace epics::pvData; -void testGetSetClearFlip(FILE *fd) { - fprintf(fd,"testGetSetClearFlip... "); +static void testGetSetClearFlip() +{ + printf("testGetSetClearFlip... "); // empty BitSet* b1 = new BitSet(); - assert(b1->isEmpty()); - assert(b1->cardinality() == 0); + testOk1(b1->isEmpty()); + testOk1(b1->cardinality() == 0); // to string check std::string str; b1->toString(&str); - assert(str == "{}"); + testOk1(str == "{}"); // one b1->set(3); - assert(b1->get(3)); - assert(!b1->isEmpty()); - assert(b1->cardinality() == 1); + testOk1(b1->get(3)); + testOk1(!b1->isEmpty()); + testOk1(b1->cardinality() == 1); // to string check str.clear(); b1->toString(&str); - assert(str == "{3}"); + testOk1(str == "{3}"); // grow b1->set(66); b1->set(67); b1->set(68); - assert(b1->cardinality() == 4); + testOk1(b1->cardinality() == 4); str.clear(); b1->toString(&str); - assert(str == "{3, 66, 67, 68}"); + testOk1(str == "{3, 66, 67, 68}"); // clear one b1->clear(67); - assert(b1->cardinality() == 3); + testOk1(b1->cardinality() == 3); str.clear(); b1->toString(&str); - assert(str == "{3, 66, 68}"); + testOk1(str == "{3, 66, 68}"); // flip b1->flip(66); b1->flip(130); - assert(b1->cardinality() == 3); + testOk1(b1->cardinality() == 3); str.clear(); b1->toString(&str); - assert(str == "{3, 68, 130}"); + testOk1(str == "{3, 68, 130}"); // flip b1->set(130, false); b1->set(4, true); - assert(b1->cardinality() == 3); + testOk1(b1->cardinality() == 3); str.clear(); b1->toString(&str); - assert(str == "{3, 4, 68}"); + testOk1(str == "{3, 4, 68}"); // clear all b1->clear(); - assert(b1->isEmpty()); - assert(b1->cardinality() == 0); + testOk1(b1->isEmpty()); + testOk1(b1->cardinality() == 0); str.clear(); b1->toString(&str); - assert(str == "{}"); + testOk1(str == "{}"); delete b1; - fprintf(fd,"PASSED\n"); - } -void testOperators(FILE *fd) { - fprintf(fd,"testOperators... "); +static void testOperators() +{ + printf("testOperators... "); BitSet b1; - assert(b1 == b1); + testOk1(b1 == b1); BitSet b2; - assert(b1 == b2); + testOk1(b1 == b2); b1.set(1); - assert(!(b1 == b2)); + testOk1(!(b1 == b2)); // different internal length, but the same b2.set(100); b2.set(1); b2.flip(100); - assert(b1 == b2); + testOk1(b1 == b2); // OR test b2.set(65); @@ -102,32 +102,32 @@ void testOperators(FILE *fd) { b2.set(105); b1 |= b2; std::string str; b1.toString(&str); - assert(str == "{1, 65, 105, 106}"); + testOk1(str == "{1, 65, 105, 106}"); b1.clear(); b1 |= b2; str.clear(); b1.toString(&str); - assert(str == "{1, 65, 105, 106}"); + testOk1(str == "{1, 65, 105, 106}"); // AND test b1.set(128); b1 &= b2; - assert(b1 == b2); + testOk1(b1 == b2); // XOR test b1.set(128); b1 ^= b2; - assert(b1.cardinality() == 1 && b1.get(128) == true); + testOk1((b1.cardinality() == 1 && b1.get(128) == true)); b1.clear(); b2.clear(); b1.set(1); b2.set(256); b1 ^= b2; - assert(b1.cardinality() == 2 && b1.get(1) == true && b1.get(256) == true); + testOk1((b1.cardinality() == 2 && b1.get(1) == true && b1.get(256) == true)); // assign b1 = b2; - assert(b1 == b2); + testOk1(b1 == b2); // or_and b1.clear(); b1.set(2); @@ -135,23 +135,15 @@ void testOperators(FILE *fd) { BitSet b3; b3.set(128); b3.set(520); b1.or_and(b2, b3); str.clear(); b1.toString(&str); - assert(str == "{2, 128}"); - - fprintf(fd,"PASSED\n"); - + testOk1(str == "{2, 128}"); } -int main(int argc,char *argv[]) +MAIN(testBitSet) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } - testGetSetClearFlip(fd); - testOperators(fd); - return(0); + testPlan(29); + testGetSetClearFlip(); + testOperators(); + return testDone(); } diff --git a/testApp/misc/testByteBuffer.cpp b/testApp/misc/testByteBuffer.cpp index 9c5762d..47cbe2f 100644 --- a/testApp/misc/testByteBuffer.cpp +++ b/testApp/misc/testByteBuffer.cpp @@ -14,115 +14,115 @@ #include #include -#include -#include +#include +#include #include #include using namespace epics::pvData; +using std::cout; -void testBasicOperations(std::ostream& ofile) { - ofile<<"Basic operation tests...\n"; +void testBasicOperations() { ByteBuffer* buff = new ByteBuffer(32); - assert(buff->getSize()==32); -// assert(buff->getByteOrder()==EPICS_BYTE_ORDER); - assert(buff->getPosition()==0); - assert(buff->getLimit()==32); - assert(buff->getRemaining()==32); + testOk1(buff->getSize()==32); +// testOk1(buff->getByteOrder()==EPICS_BYTE_ORDER); + testOk1(buff->getPosition()==0); + testOk1(buff->getLimit()==32); + testOk1(buff->getRemaining()==32); buff->putBoolean(true); - assert(buff->getPosition()==1); - assert(buff->getRemaining()==31); + testOk1(buff->getPosition()==1); + testOk1(buff->getRemaining()==31); buff->putByte(-12); - assert(buff->getPosition()==2); - assert(buff->getRemaining()==30); + testOk1(buff->getPosition()==2); + testOk1(buff->getRemaining()==30); buff->putShort(10516); - assert(buff->getPosition()==4); - assert(buff->getRemaining()==28); + testOk1(buff->getPosition()==4); + testOk1(buff->getRemaining()==28); buff->putInt(0x1937628B); - assert(buff->getPosition()==8); - assert(buff->getRemaining()==24); + testOk1(buff->getPosition()==8); + testOk1(buff->getRemaining()==24); buff->putLong(2345678123LL); - assert(buff->getPosition()==16); - assert(buff->getRemaining()==16); + testOk1(buff->getPosition()==16); + testOk1(buff->getRemaining()==16); float testFloat = 34.67; buff->putFloat(testFloat); - assert(buff->getPosition()==20); - assert(buff->getRemaining()==12); + testOk1(buff->getPosition()==20); + testOk1(buff->getRemaining()==12); double testDouble = -512.23974; buff->putDouble(testDouble); - assert(buff->getPosition()==28); - assert(buff->getRemaining()==4); + testOk1(buff->getPosition()==28); + testOk1(buff->getRemaining()==4); // testing direct reads - assert(buff->getBoolean(0)==true); - assert(buff->getByte(1)==-12); - assert(buff->getShort(2)==10516); - assert(buff->getInt(4)==0x1937628B); - assert(buff->getLong(8)==2345678123LL); - assert(buff->getFloat(16)==testFloat); - assert(buff->getDouble(20)==testDouble); + testOk1(buff->getBoolean(0)==true); + testOk1(buff->getByte(1)==-12); + testOk1(buff->getShort(2)==10516); + testOk1(buff->getInt(4)==0x1937628B); + testOk1(buff->getLong(8)==2345678123LL); + testOk1(buff->getFloat(16)==testFloat); + testOk1(buff->getDouble(20)==testDouble); /* std::size_t sp = buff->getPosition(); buff->setPosition(0); - assert(buff->getBoolean()==true); - assert(buff->getByte()==-12); - assert(buff->getShort()==10516); - assert(buff->getInt()==0x1937628B); - assert(buff->getLong()==2345678123LL); - assert(buff->getFloat()==testFloat); - assert(buff->getDouble()==testDouble); + testOk1(buff->getBoolean()==true); + testOk1(buff->getByte()==-12); + testOk1(buff->getShort()==10516); + testOk1(buff->getInt()==0x1937628B); + testOk1(buff->getLong()==2345678123LL); + testOk1(buff->getFloat()==testFloat); + testOk1(buff->getDouble()==testDouble); buff->setPosition(sp); */ buff->flip(); - assert(buff->getLimit()==28); - assert(buff->getPosition()==0); - assert(buff->getRemaining()==28); + testOk1(buff->getLimit()==28); + testOk1(buff->getPosition()==0); + testOk1(buff->getRemaining()==28); - assert(buff->getBoolean()==true); - assert(buff->getPosition()==1); + testOk1(buff->getBoolean()==true); + testOk1(buff->getPosition()==1); - assert(buff->getByte()==-12); - assert(buff->getPosition()==2); + testOk1(buff->getByte()==-12); + testOk1(buff->getPosition()==2); - assert(buff->getShort()==10516); - assert(buff->getPosition()==4); + testOk1(buff->getShort()==10516); + testOk1(buff->getPosition()==4); - assert(buff->getInt()==0x1937628B); - assert(buff->getPosition()==8); + testOk1(buff->getInt()==0x1937628B); + testOk1(buff->getPosition()==8); - assert(buff->getLong()==2345678123LL); - assert(buff->getPosition()==16); + testOk1(buff->getLong()==2345678123LL); + testOk1(buff->getPosition()==16); - assert(buff->getFloat()==testFloat); - assert(buff->getPosition()==20); + testOk1(buff->getFloat()==testFloat); + testOk1(buff->getPosition()==20); - assert(buff->getDouble()==testDouble); - assert(buff->getPosition()==28); + testOk1(buff->getDouble()==testDouble); + testOk1(buff->getPosition()==28); buff->clear(); - assert(buff->getPosition()==0); - assert(buff->getLimit()==32); - assert(buff->getRemaining()==32); + testOk1(buff->getPosition()==0); + testOk1(buff->getLimit()==32); + testOk1(buff->getRemaining()==32); buff->setPosition(4); - assert(buff->getPosition()==4); - assert(buff->getLimit()==32); - assert(buff->getRemaining()==(32-4)); + testOk1(buff->getPosition()==4); + testOk1(buff->getLimit()==32); + testOk1(buff->getRemaining()==(32-4)); buff->setPosition(13); - assert(buff->getPosition()==13); - assert(buff->getLimit()==32); - assert(buff->getRemaining()==(32-13)); + testOk1(buff->getPosition()==13); + testOk1(buff->getLimit()==32); + testOk1(buff->getRemaining()==(32-13)); // testing absolute puts buff->clear(); @@ -148,35 +148,35 @@ void testBasicOperations(std::ostream& ofile) { buff->setPosition(sp); */ buff->flip(); - assert(buff->getLimit()==28); - assert(buff->getPosition()==0); - assert(buff->getRemaining()==28); + testOk1(buff->getLimit()==28); + testOk1(buff->getPosition()==0); + testOk1(buff->getRemaining()==28); - assert(buff->getBoolean()==true); - assert(buff->getPosition()==1); + testOk1(buff->getBoolean()==true); + testOk1(buff->getPosition()==1); - assert(buff->getByte()==-12); - assert(buff->getPosition()==2); + testOk1(buff->getByte()==-12); + testOk1(buff->getPosition()==2); - assert(buff->getShort()==10516); - assert(buff->getPosition()==4); + testOk1(buff->getShort()==10516); + testOk1(buff->getPosition()==4); - assert(buff->getInt()==0x1937628B); - assert(buff->getPosition()==8); + testOk1(buff->getInt()==0x1937628B); + testOk1(buff->getPosition()==8); - assert(buff->getLong()==2345678123LL); - assert(buff->getPosition()==16); + testOk1(buff->getLong()==2345678123LL); + testOk1(buff->getPosition()==16); - assert(buff->getFloat()==testFloat); - assert(buff->getPosition()==20); + testOk1(buff->getFloat()==testFloat); + testOk1(buff->getPosition()==20); - assert(buff->getDouble()==testDouble); - assert(buff->getPosition()==28); + testOk1(buff->getDouble()==testDouble); + testOk1(buff->getPosition()==28); buff->clear(); - assert(buff->getPosition()==0); - assert(buff->getLimit()==32); - assert(buff->getRemaining()==32); + testOk1(buff->getPosition()==0); + testOk1(buff->getLimit()==32); + testOk1(buff->getRemaining()==32); char src[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm' }; @@ -184,28 +184,26 @@ void testBasicOperations(std::ostream& ofile) { ' ' }; buff->put(src, 2, 6); - assert(buff->getPosition()==6); - assert(strncmp(buff->getArray(),&src[2],6)==0); + testOk1(buff->getPosition()==6); + testOk1(strncmp(buff->getArray(),&src[2],6)==0); buff->flip(); - assert(buff->getLimit()==6); - assert(buff->getPosition()==0); - assert(buff->getRemaining()==6); + testOk1(buff->getLimit()==6); + testOk1(buff->getPosition()==0); + testOk1(buff->getRemaining()==6); buff->get(dst, 2, 6); - assert(buff->getLimit()==6); - assert(buff->getPosition()==6); - assert(strncmp(&src[2],&dst[2],6)==0); + testOk1(buff->getLimit()==6); + testOk1(buff->getPosition()==6); + testOk1(strncmp(&src[2],&dst[2],6)==0); - ofile<<" First 10 characters of destination: >>"<>"<putShort(0x0102); buff->putInt(0x0A0B0C0D); - assert(strncmp(buff->getArray(),refBuffer,6)==0); + testOk1(strncmp(buff->getArray(),refBuffer,6)==0); buff->flip(); - assert(buff->getShort()==0x0102); - assert(buff->getInt()==0x0A0B0C0D); + testOk1(buff->getShort()==0x0102); + testOk1(buff->getInt()==0x0A0B0C0D); delete buff; - ofile<<"!!! PASSED\n"; } -int main(int argc, char *argv[]) { - std::ofstream outfile; - std::ostream *out=NULL; - if(argc>1) { - outfile.open(argv[1]); - if(outfile.is_open()){ - out=&outfile; - }else{ - fprintf(stderr, "Failed to open test output file\n"); - } - } - if(!out) out=&std::cout; - testBasicOperations(*out); - testInverseEndianness(*out); - return (0); +MAIN(testByteBuffer) +{ + testPlan(82); + testDiag("Tests byteBuffer"); + testBasicOperations(); + testInverseEndianness(); + return testDone(); } diff --git a/testApp/misc/testMessageQueue.cpp b/testApp/misc/testMessageQueue.cpp index c0315ac..efb2a6a 100644 --- a/testApp/misc/testMessageQueue.cpp +++ b/testApp/misc/testMessageQueue.cpp @@ -16,8 +16,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -28,7 +28,7 @@ using namespace epics::pvData; -static void testBasic(FILE * fd,FILE *auxfd) { +static void testBasic() { int queueSize = 3; StringArray messages; messages.reserve(5); @@ -41,53 +41,44 @@ static void testBasic(FILE * fd,FILE *auxfd) { bool result; MessageNodePtr messageNode; result = queue->isEmpty(); - assert(result); + testOk1(result); result = queue->put(messages[0],infoMessage,true); - assert(result); + testOk1(result); result = queue->put(messages[1],infoMessage,true); - assert(result); + testOk1(result); result = queue->put(messages[2],warningMessage,true); - assert(result); - assert(queue->isFull()); + testOk1(result); + testOk1(queue->isFull()); result = queue->put(messages[3],infoMessage,true); - assert(result==true); + testOk1(result==true); messageNode = queue->get(); - assert(messageNode.get()!=NULL); - fprintf(fd,"message %s messageType %s\n", + testOk1(messageNode.get()!=NULL); + printf("message %s messageType %s\n", messageNode->getMessage().c_str(), getMessageTypeName(messageNode->getMessageType()).c_str()); - assert(messageNode->getMessage().compare(messages[0])==0); + testOk1(messageNode->getMessage().compare(messages[0])==0); queue->release(); messageNode = queue->get(); - assert(messageNode.get()!=NULL); - assert(messageNode->getMessage().compare(messages[1])==0); + testOk1(messageNode.get()!=NULL); + testOk1(messageNode->getMessage().compare(messages[1])==0); queue->release(); messageNode = queue->get(); - assert(messageNode.get()!=NULL); - fprintf(fd,"message %s messageType %s\n", + testOk1(messageNode.get()!=NULL); + printf("message %s messageType %s\n", messageNode->getMessage().c_str(), getMessageTypeName(messageNode->getMessageType()).c_str()); - assert(messageNode->getMessage().compare(messages[3])==0); + testOk1(messageNode->getMessage().compare(messages[3])==0); queue->release(); result = queue->isEmpty(); - assert(result); - fprintf(fd,"PASSED\n"); + testOk1(result); + printf("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+"); - } - testBasic(fd,auxfd); - return (0); +MAIN(testMessageQueue) +{ + testPlan(13); + testDiag("Tests messageQueue"); + testBasic(); + return testDone(); } diff --git a/testApp/misc/testQueue.cpp b/testApp/misc/testQueue.cpp index 05edd19..8f9e908 100644 --- a/testApp/misc/testQueue.cpp +++ b/testApp/misc/testQueue.cpp @@ -16,8 +16,9 @@ #include #include -#include -#include +#include +#include + #include #include @@ -44,15 +45,14 @@ typedef std::tr1::shared_ptr SinkPtr; class Sink : public epicsThreadRunable { public: - static SinkPtr create(DataQueue &queue,FILE *auxfd); - Sink(DataQueue &queue,FILE *auxfd); + static SinkPtr create(DataQueue &queue); + Sink(DataQueue &queue); ~Sink(); void stop(); void look(); virtual void run(); private: DataQueue &queue; - FILE *auxfd; bool isStopped; Event *wait; Event *stopped; @@ -61,14 +61,13 @@ private: epicsThread *thread; }; -SinkPtr Sink::create(DataQueue &queue,FILE *auxfd) +SinkPtr Sink::create(DataQueue &queue) { - return SinkPtr(new Sink(queue,auxfd)); + return SinkPtr(new Sink(queue)); } -Sink::Sink(DataQueue &queue,FILE *auxfd) +Sink::Sink(DataQueue &queue) : queue(queue), - auxfd(auxfd), isStopped(false), wait(new Event()), stopped(new Event()), @@ -111,14 +110,14 @@ void Sink::run() waitEmpty->signal(); break; } - fprintf(auxfd," sink a %d b %d\n",data->a,data->b); + printf(" sink a %d b %d\n",data->a,data->b); queue.releaseUsed(data); } } stopped->signal(); } -static void testBasic(FILE * fd,FILE *auxfd ) { +static void testBasic() { DataPtrArray dataArray; dataArray.reserve(numElements); for(int i=0; ia,data->b); + printf("source a %d b %d\n",data->a,data->b); queue.setUsed(data); } sink->look(); // now alternate for(int i=0; ia,data->b); + testOk1(data.get()!=NULL); + printf("source a %d b %d\n",data->a,data->b); queue.setUsed(data); sink->look(); } sink->stop(); - fprintf(fd,"PASSED\n"); + printf("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+"); - } - testBasic(fd,auxfd); - return (0); +MAIN(testQueue) +{ + testPlan(5); + testDiag("Tests queue"); + testBasic(); + return testDone(); } diff --git a/testApp/misc/testThread.cpp b/testApp/misc/testThread.cpp index 2c72b23..f3993e8 100644 --- a/testApp/misc/testThread.cpp +++ b/testApp/misc/testThread.cpp @@ -17,8 +17,9 @@ #include #include -#include -#include +#include +#include + #include #include @@ -38,28 +39,29 @@ public: FILE *out; bool actuallyRan; Event begin, end; - Action(FILE* fp): out(fp), actuallyRan(false) {} + Action(): actuallyRan(false) {} virtual void run() { - fprintf(out, "Action waiting\n"); + printf("Action waiting\n"); begin.signal(); bool waited=end.wait(); actuallyRan=true; - fprintf(out, "Action %s\n", waited?"true":"false"); + printf("Action %s\n", waited?"true":"false"); } }; -static void testThreadRun(FILE *fd) { +static void testThreadRun() { // show that we can control thread start and stop - ActionPtr ax(new Action(fd)); + ActionPtr ax(new Action()); { ThreadPtr tr(new Thread(actionName,lowPriority,ax.get())); bool w=ax->begin.wait(); - fprintf(fd, "main %s\n", w?"true":"false"); - fprintf(fd, "Action is %s\n", ax->actuallyRan?"true":"false"); + printf( "main %s\n", w?"true":"false"); + printf( "Action is %s\n", ax->actuallyRan?"true":"false"); ax->end.signal(); } - fprintf(fd, "Action is %s\n", ax->actuallyRan?"true":"false"); - fprintf(fd,"testThreadRun PASSED\n"); + testOk1(ax->actuallyRan==true); + printf( "Action is %s\n", ax->actuallyRan?"true":"false"); + printf("testThreadRun PASSED\n"); } class Basic; @@ -80,6 +82,7 @@ public: { executor->execute(getPtrSelf()); bool result = wait.wait(); + testOk1(result==true); if(result==false) printf("basic::run wait returned false\n"); } virtual void command() @@ -97,11 +100,11 @@ private: typedef std::tr1::shared_ptr BasicPtr; -static void testBasic(FILE *fd) { +static void testBasic() { ExecutorPtr executor(new Executor(String("basic"),middlePriority)); BasicPtr basic( new Basic(executor)); basic->run(); - fprintf(fd,"testBasic PASSED\n"); + printf("testBasic PASSED\n"); } class MyFunc : public TimeFunctionRequester { @@ -126,35 +129,26 @@ typedef std::tr1::shared_ptr MyFuncPtr; #ifdef TESTTHREADCONTEXT -static void testThreadContext(FILE *fd,FILE *auxFd) { +static void testThreadContext() { ExecutorPtr executor(new Executor(String("basic"),middlePriority)); BasicPtr basic(new Basic(executor)); MyFuncPtr myFunc(new MyFunc(basic)); TimeFunctionPtr timeFunction(new TimeFunction(myFunc)); double perCall = timeFunction->timeCall(); perCall *= 1e6; - fprintf(auxFd,"time per call %f microseconds\n",perCall); - fprintf(fd,"testThreadContext PASSED\n"); + printf("time per call %f microseconds\n",perCall); + printf("testThreadContext PASSED\n"); } #endif -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+"); - } - testThreadRun(fd); - testBasic(fd); +MAIN(testThread) +{ + testPlan(2); + testDiag("Tests thread"); + testThreadRun(); + testBasic(); #ifdef TESTTHREADCONTEXT - char *auxFileName = 0; - if(argc>2) auxFileName = argv[2]; - FILE *auxFd = stdout; - if(auxFileName!=0 && auxFileName[0]!=0) { - auxFd = fopen(auxFileName,"w+"); - } - testThreadContext(fd,auxFd); + testThreadContext(); #endif - return 0; + return testDone(); } diff --git a/testApp/misc/testTimeStamp.cpp b/testApp/misc/testTimeStamp.cpp index d2a044f..e8a418f 100644 --- a/testApp/misc/testTimeStamp.cpp +++ b/testApp/misc/testTimeStamp.cpp @@ -19,7 +19,8 @@ #include #include -#include +#include +#include #include @@ -27,12 +28,12 @@ using namespace epics::pvData; static bool debug = false; -void testTimeStamp(FILE *fd,FILE *auxfd) +void testTimeStamp() { - assert(nanoSecPerSec==1000000000); + testOk1(nanoSecPerSec==1000000000); TimeStamp current; current.getCurrent(); - fprintf(auxfd,"current %lli %i milliSec %lli\n", + printf("current %lli %i milliSec %lli\n", (long long)current.getSecondsPastEpoch(), current.getNanoSeconds(), (long long)current.getMilliseconds()); @@ -40,7 +41,7 @@ void testTimeStamp(FILE *fd,FILE *auxfd) current.toTime_t(tt); struct tm ctm; memcpy(&ctm,localtime(&tt),sizeof(struct tm)); - fprintf(auxfd, + printf( "%4.4d.%2.2d.%2.2d %2.2d:%2.2d:%2.2d %d isDst %s\n", ctm.tm_year+1900,ctm.tm_mon + 1,ctm.tm_mday, ctm.tm_hour,ctm.tm_min,ctm.tm_sec, @@ -48,13 +49,13 @@ void testTimeStamp(FILE *fd,FILE *auxfd) (ctm.tm_isdst==0) ? "false" : "true"); tt = time(&tt); current.fromTime_t(tt); - fprintf(auxfd,"fromTime_t\ncurrent %lli %i milliSec %lli\n", + printf("fromTime_t\ncurrent %lli %i milliSec %lli\n", (long long)current.getSecondsPastEpoch(), current.getNanoSeconds(), (long long)current.getMilliseconds()); current.toTime_t(tt); memcpy(&ctm,localtime(&tt),sizeof(struct tm)); - fprintf(auxfd, + printf( "%4.4d.%2.2d.%2.2d %2.2d:%2.2d:%2.2d %d isDst %s\n", ctm.tm_year+1900,ctm.tm_mon + 1,ctm.tm_mday, ctm.tm_hour,ctm.tm_min,ctm.tm_sec, @@ -66,79 +67,70 @@ void testTimeStamp(FILE *fd,FILE *auxfd) left.put(current.getSecondsPastEpoch(),current.getNanoSeconds()); double diff; diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); - assert(diff==0.0); - assert((left==right)); - assert(!(left!=right)); - assert((left<=right)); - assert(!(left=right)); - assert(!(left>right)); + if(debug) printf("diff %e\n",diff); + testOk1(diff==0.0); + testOk1((left==right)); + testOk1(!(left!=right)); + testOk1((left<=right)); + testOk1(!(left=right)); + testOk1(!(left>right)); left.put(current.getSecondsPastEpoch()+1,current.getNanoSeconds()); diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); - assert(diff==1.0); - assert(!(left==right)); - assert((left!=right)); - assert(!(left<=right)); - assert(!(left=right)); - assert((left>right)); + if(debug) printf("diff %e\n",diff); + testOk1(diff==1.0); + testOk1(!(left==right)); + testOk1((left!=right)); + testOk1(!(left<=right)); + testOk1(!(left=right)); + testOk1((left>right)); left.put(current.getSecondsPastEpoch()-1,current.getNanoSeconds()); diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); - assert(diff==-1.0); - assert(!(left==right)); - assert((left!=right)); - assert((left<=right)); - assert((left=right)); - assert(!(left>right)); + if(debug) printf("diff %e\n",diff); + testOk1(diff==-1.0); + testOk1(!(left==right)); + testOk1((left!=right)); + testOk1((left<=right)); + testOk1((left=right)); + testOk1(!(left>right)); left.put(current.getSecondsPastEpoch(),current.getNanoSeconds()-nanoSecPerSec); diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); - assert(diff==-1.0); - assert(!(left==right)); - assert((left!=right)); - assert((left<=right)); - assert((left=right)); - assert(!(left>right)); + if(debug) printf("diff %e\n",diff); + testOk1(diff==-1.0); + testOk1(!(left==right)); + testOk1((left!=right)); + testOk1((left<=right)); + testOk1((left=right)); + testOk1(!(left>right)); left.put(current.getSecondsPastEpoch(),current.getNanoSeconds()-1); diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); - assert(diff<0.0); - assert(!(left==right)); - assert((left!=right)); - assert((left<=right)); - assert((left=right)); - assert(!(left>right)); + if(debug) printf("diff %e\n",diff); + testOk1(diff<0.0); + testOk1(!(left==right)); + testOk1((left!=right)); + testOk1((left<=right)); + testOk1((left=right)); + testOk1(!(left>right)); left.put(current.getSecondsPastEpoch(),current.getNanoSeconds()); left += .1; diff = TimeStamp::diff(left,right); - if(debug) fprintf(fd,"diff %e\n",diff); + if(debug) printf("diff %e\n",diff); left.put(current.getSecondsPastEpoch(),current.getNanoSeconds()); int64 inc = -1; left += inc; diff = TimeStamp::diff(left,right); - assert(diff==-1.0); - fprintf(fd,"PASSED\n"); + testOk1(diff==-1.0); + printf("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+"); - } - testTimeStamp(fd,auxfd); - return (0); +MAIN(testTimeStamp) +{ + testPlan(37); + testDiag("Tests timeStamp"); + testTimeStamp(); + return testDone(); } diff --git a/testApp/misc/testTimer.cpp b/testApp/misc/testTimer.cpp index 7c33d17..1e1b550 100644 --- a/testApp/misc/testTimer.cpp +++ b/testApp/misc/testTimer.cpp @@ -16,8 +16,9 @@ #include #include -#include -#include +#include +#include + #include #include #include @@ -38,10 +39,8 @@ typedef std::tr1::shared_ptr 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; nisScheduled(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; nisScheduled(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(); } diff --git a/testApp/misc/testTypeCast.cpp b/testApp/misc/testTypeCast.cpp index 2fd5cf3..92a37fd 100644 --- a/testApp/misc/testTypeCast.cpp +++ b/testApp/misc/testTypeCast.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/testApp/monitor/Makefile b/testApp/monitor/Makefile deleted file mode 100644 index a7e946f..0000000 --- a/testApp/monitor/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -TOP=../.. - -include $(TOP)/configure/CONFIG - -PROD_HOST += testMonitor -testMonitor_SRCS += testMonitor.cpp -testMonitor_LIBS += pvData Com - - -include $(TOP)/configure/RULES -#---------------------------------------- -# ADD RULES AFTER THIS LINE - diff --git a/testApp/monitor/testMonitor.cpp b/testApp/monitor/testMonitor.cpp deleted file mode 100644 index ce33e7a..0000000 --- a/testApp/monitor/testMonitor.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* testPVdata.cpp */ -/** - * Copyright - See the COPYRIGHT that is included with this distribution. - * EPICS pvData is distributed subject to a Software License Agreement found - * in file LICENSE that is included with this distribution. - */ -/* Author: Marty Kraimer Date: 2010.11 */ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - - -using namespace epics::pvData; - -static String allProperties("alarm,timeStamp,display,control,valueAlarm"); -static StandardFieldPtr standardField = getStandardField(); - -class MonitorImpl : public Monitor -{ -public: - POINTER_DEFINITIONS(MonitorImpl); - MonitorImpl() {} - virtual ~MonitorImpl() {} - virtual void destroy() {} - virtual Status start() - { - printf("start called\n"); - return status; - } - virtual Status stop() - { - printf("stop called\n"); - return status; - } - virtual MonitorElementPtr poll() - { - printf("poll called\n"); - return emptyElement; - } - virtual void release(MonitorElementPtr const & /*monitorElement*/) - { - printf("release called\n"); - } -private: - Status status; - MonitorElementPtr emptyElement; -}; - -static void testMonitor() -{ - MonitorPtr monitor(new MonitorImpl()); - monitor->start(); - MonitorElementPtr monitorElement = monitor->poll(); - monitor->release(monitorElement); - monitor->stop(); - printf("PASSED\n"); -} - - -int main(int, char **) -{ - testMonitor(); - return(0); -} - diff --git a/testApp/property/Makefile b/testApp/property/Makefile index 0c57bf3..51662dd 100644 --- a/testApp/property/Makefile +++ b/testApp/property/Makefile @@ -2,10 +2,13 @@ TOP=../.. include $(TOP)/configure/CONFIG -PROD_HOST += testProperty +TESTPROD += testProperty testProperty_SRCS += testProperty.cpp +TESTS += testProperty + testProperty_LIBS += pvData Com +TESTSCRIPTS_HOST += $(TESTS:%=%.t) include $(TOP)/configure/RULES #---------------------------------------- diff --git a/testApp/property/testProperty.cpp b/testApp/property/testProperty.cpp index 3a8450c..b51b222 100644 --- a/testApp/property/testProperty.cpp +++ b/testApp/property/testProperty.cpp @@ -13,8 +13,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -48,13 +48,13 @@ static String allProperties("alarm,timeStamp,display,control"); static PVStructurePtr doubleRecord; static PVStructurePtr enumeratedRecord; -static void createRecords(FILE * fd,FILE* /*auxfd*/) +static void createRecords() { doubleRecord = standardPVField->scalar(pvDouble,allProperties); if(debug) { builder.clear(); doubleRecord->toString(&builder); - fprintf(fd,"doubleRecord\n%s\n",builder.c_str()); + printf("doubleRecord\n%s\n",builder.c_str()); } StringArray choices; choices.reserve(4); @@ -66,25 +66,25 @@ static void createRecords(FILE * fd,FILE* /*auxfd*/) if(debug) { builder.clear(); enumeratedRecord->toString(&builder); - fprintf(fd,"enumeratedRecord\n%s\n",builder.c_str()); + printf("enumeratedRecord\n%s\n",builder.c_str()); } } -static void printRecords(FILE * fd,FILE* /*auxfd*/) +static void printRecords() { - fprintf(fd,"doubleRecord\n"); + printf("doubleRecord\n"); builder.clear(); doubleRecord->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); - fprintf(fd,"enumeratedRecord\n"); + printf("%s\n",builder.c_str()); + printf("enumeratedRecord\n"); builder.clear(); enumeratedRecord->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + printf("%s\n",builder.c_str()); } -static void testAlarm(FILE * fd,FILE* /*auxfd*/) +static void testAlarm() { - if(debug) fprintf(fd,"testAlarm\n"); + if(debug) printf("testAlarm\n"); Alarm alarm; PVAlarm pvAlarm; bool result; @@ -94,30 +94,30 @@ static void testAlarm(FILE * fd,FILE* /*auxfd*/) return; } result = pvAlarm.attach(pvField); - assert(result); + testOk1(result); Alarm al; al.setMessage(String("testMessage")); al.setSeverity(majorAlarm); al.setStatus(clientStatus); result = pvAlarm.set(al); - assert(result); + testOk1(result); pvAlarm.get(alarm); - assert(al.getMessage().compare(alarm.getMessage())==0); - assert(al.getSeverity()==alarm.getSeverity()); - assert(al.getStatus()==alarm.getStatus()); + testOk1(al.getMessage().compare(alarm.getMessage())==0); + testOk1(al.getSeverity()==alarm.getSeverity()); + testOk1(al.getStatus()==alarm.getStatus()); String message = alarm.getMessage(); String severity = (*AlarmSeverityFunc::getSeverityNames())[alarm.getSeverity()]; String status = (*AlarmStatusFunc::getStatusNames())[alarm.getStatus()]; if(debug) { - fprintf(fd," message %s severity %s status %s\n", + printf(" message %s severity %s status %s\n", message.c_str(),severity.c_str(),status.c_str()); } - fprintf(fd,"testAlarm PASSED\n"); + printf("testAlarm PASSED\n"); } -static void testTimeStamp(FILE * fd,FILE *auxfd) +static void testTimeStamp() { - if(debug) fprintf(fd,"testTimeStamp\n"); + if(debug) printf("testTimeStamp\n"); TimeStamp timeStamp; PVTimeStamp pvTimeStamp; bool result; @@ -127,22 +127,22 @@ static void testTimeStamp(FILE * fd,FILE *auxfd) return; } result = pvTimeStamp.attach(pvField); - assert(result); + testOk1(result); TimeStamp ts; ts.getCurrent(); ts.setUserTag(32); result = pvTimeStamp.set(ts); - assert(result); + testOk1(result); pvTimeStamp.get(timeStamp); - assert(ts.getSecondsPastEpoch()==timeStamp.getSecondsPastEpoch()); - assert(ts.getNanoSeconds()==timeStamp.getNanoSeconds()); - assert(ts.getUserTag()==timeStamp.getUserTag()); + testOk1(ts.getSecondsPastEpoch()==timeStamp.getSecondsPastEpoch()); + testOk1(ts.getNanoSeconds()==timeStamp.getNanoSeconds()); + testOk1(ts.getUserTag()==timeStamp.getUserTag()); time_t tt; timeStamp.toTime_t(tt); struct tm ctm; memcpy(&ctm,localtime(&tt),sizeof(struct tm)); if(debug) { - fprintf(auxfd, + printf( "%4.4d.%2.2d.%2.2d %2.2d:%2.2d:%2.2d %d nanoSeconds isDst %s userTag %d\n", ctm.tm_year+1900,ctm.tm_mon + 1,ctm.tm_mday, ctm.tm_hour,ctm.tm_min,ctm.tm_sec, @@ -152,12 +152,12 @@ static void testTimeStamp(FILE * fd,FILE *auxfd) } timeStamp.put(0,0); pvTimeStamp.set(timeStamp); - fprintf(fd,"testTimeStamp PASSED\n"); + printf("testTimeStamp PASSED\n"); } -static void testControl(FILE * fd,FILE* /*auxfd*/) +static void testControl() { - if(debug) fprintf(fd,"testControl\n"); + if(debug) printf("testControl\n"); Control control; PVControl pvControl; bool result; @@ -167,24 +167,24 @@ static void testControl(FILE * fd,FILE* /*auxfd*/) return; } result = pvControl.attach(pvField); - assert(result); + testOk1(result); Control cl; cl.setLow(1.0); cl.setHigh(10.0); result = pvControl.set(cl); - assert(result); + testOk1(result); pvControl.get(control); - assert(cl.getLow()==control.getLow()); - assert(cl.getHigh()==control.getHigh()); + testOk1(cl.getLow()==control.getLow()); + testOk1(cl.getHigh()==control.getHigh()); double low = control.getLow(); double high = control.getHigh(); - if(debug) fprintf(fd," low %f high %f\n",low,high); - fprintf(fd,"testControl PASSED\n"); + if(debug) printf(" low %f high %f\n",low,high); + printf("testControl PASSED\n"); } -static void testDisplay(FILE * fd,FILE* /*auxfd*/) +static void testDisplay() { - if(debug) fprintf(fd,"testDisplay\n"); + if(debug) printf("testDisplay\n"); Display display; PVDisplay pvDisplay; bool result; @@ -194,7 +194,7 @@ static void testDisplay(FILE * fd,FILE* /*auxfd*/) return; } result = pvDisplay.attach(pvField); - assert(result); + testOk1(result); Display dy; dy.setLow(-10.0); dy.setHigh(-1.0); @@ -202,22 +202,22 @@ static void testDisplay(FILE * fd,FILE* /*auxfd*/) dy.setFormat(String("%f10.0")); dy.setUnits(String("volts")); result = pvDisplay.set(dy); - assert(result); + testOk1(result); pvDisplay.get(display); - assert(dy.getLow()==display.getLow()); - assert(dy.getHigh()==display.getHigh()); - assert(dy.getDescription().compare(display.getDescription())==0); - assert(dy.getFormat().compare(display.getFormat())==0); - assert(dy.getUnits().compare(display.getUnits())==0); + testOk1(dy.getLow()==display.getLow()); + testOk1(dy.getHigh()==display.getHigh()); + testOk1(dy.getDescription().compare(display.getDescription())==0); + testOk1(dy.getFormat().compare(display.getFormat())==0); + testOk1(dy.getUnits().compare(display.getUnits())==0); double low = display.getLow(); double high = display.getHigh(); - if(debug) fprintf(fd," low %f high %f\n",low,high); - fprintf(fd,"testDisplay PASSED\n"); + if(debug) printf(" low %f high %f\n",low,high); + printf("testDisplay PASSED\n"); } -static void testEnumerated(FILE * fd,FILE* /*auxfd*/) +static void testEnumerated() { - if(debug) fprintf(fd,"testEnumerated\n"); + if(debug) printf("testEnumerated\n"); PVEnumerated pvEnumerated; bool result; PVFieldPtr pvField = enumeratedRecord->getSubField(String("value")); @@ -226,50 +226,39 @@ static void testEnumerated(FILE * fd,FILE* /*auxfd*/) return; } result = pvEnumerated.attach(pvField); - assert(result); + testOk1(result); int32 index = pvEnumerated.getIndex(); String choice = pvEnumerated.getChoice(); PVStringArray::const_svector choices = pvEnumerated.getChoices(); int32 numChoices = pvEnumerated.getNumberChoices(); if(debug) { - fprintf(fd,"index %d choice %s choices",index,choice.c_str()); - for(int i=0; i1) 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+"); - } + testPlan(22); + testDiag("Tests property"); fieldCreate = getFieldCreate(); pvDataCreate = getPVDataCreate(); standardField = getStandardField(); standardPVField = getStandardPVField(); convert = getConvert(); - createRecords(fd,auxfd); - testAlarm(fd,auxfd); - testTimeStamp(fd,auxfd); - testControl(fd,auxfd); - testDisplay(fd,auxfd); - testEnumerated(fd,auxfd); - if(debug) printRecords(fd,auxfd); - fprintf(fd,"ALL PASSED\n"); - return(0); + createRecords(); + testAlarm(); + testTimeStamp(); + testControl(); + testDisplay(); + testEnumerated(); + if(debug) printRecords(); + return testDone();; } diff --git a/testApp/pv/Makefile b/testApp/pv/Makefile index 33b7015..4dc7c30 100644 --- a/testApp/pv/Makefile +++ b/testApp/pv/Makefile @@ -5,6 +5,7 @@ include $(TOP)/configure/CONFIG PROD_HOST += testBitSetUtil testBitSetUtil_SRCS += testBitSetUtil.cpp testBitSetUtil_LIBS += pvData Com +TESTS += testBitSetUtil PROD_HOST += testIntrospect testIntrospect_SRCS += testIntrospect.cpp @@ -14,32 +15,39 @@ TESTS += testIntrospect PROD_HOST += testPVAppend testPVAppend_SRCS += testPVAppend.cpp testPVAppend_LIBS += pvData Com +TESTS += testPVAppend PROD_HOST += testPVType testPVType_SRCS += testPVType.cpp testPVType_LIBS += pvData Com +TESTS += testPVType PROD_HOST += testPVAuxInfo testPVAuxInfo_SRCS += testPVAuxInfo.cpp testPVAuxInfo_LIBS += pvData Com +TESTS += testPVAuxInfo PROD_HOST += testStandardField testStandardField_SRCS += testStandardField.cpp testStandardField_LIBS += pvData Com +TESTS += testStandardField PROD_HOST += testStandardPVField testStandardPVField_SRCS += testStandardPVField.cpp testStandardPVField_LIBS += pvData Com +TESTS += testStandardPVField PROD_HOST += testPVData testPVData_SRCS += testPVData.cpp testPVData_LIBS += pvData Com +TESTS += testPVData PROD_HOST += testConvert testConvert_SRCS += testConvert.cpp testConvert_LIBS += pvData Com +TESTS += testConvert -TESTPROD += testPVScalarArray +PROD_HOST += testPVScalarArray testPVScalarArray_SRCS += testPVScalarArray.cpp testPVScalarArray_LIBS += pvData Com TESTS += testPVScalarArray @@ -52,6 +60,7 @@ TESTS += testPVStructureArray PROD_HOST += testOperators testOperators_SRCS += testOperators.cpp testOperators_LIBS += pvData Com +TESTS += testOperators PROD_HOST += testFieldBuilder testFieldBuilder_SRCS += testFieldBuilder.cpp diff --git a/testApp/pv/testBitSetUtil.cpp b/testApp/pv/testBitSetUtil.cpp index 55e5344..d526e68 100644 --- a/testApp/pv/testBitSetUtil.cpp +++ b/testApp/pv/testBitSetUtil.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -33,9 +33,9 @@ static StandardPVFieldPtr standardPVField; static ConvertPtr convert; static String builder(""); -static void test(FILE * fd) +static void test() { - if(debug) fprintf(fd,"\ntestBitSetUtil\n"); + if(debug) printf("\ntestBitSetUtil\n"); StringArray fieldNames; PVFieldPtrArray pvFields; fieldNames.reserve(5); @@ -62,17 +62,17 @@ static void test(FILE * fd) fieldNames,pvFields); builder.clear(); pvs->toString(&builder); - if(debug) fprintf(fd,"pvs\n%s\n",builder.c_str()); + if(debug) printf("pvs\n%s\n",builder.c_str()); int32 nfields = pvs->getNumberFields(); BitSetPtr bitSet = BitSet::create(nfields); for(int32 i=0; iset(i); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); BitSetUtil::compress(bitSet,pvs); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); bitSet->clear(); PVFieldPtr pvField = pvs->getSubField("timeStamp"); int32 offsetTimeStamp = pvField->getFieldOffset(); @@ -84,18 +84,18 @@ static void test(FILE * fd) int32 offsetUserTag = pvField->getFieldOffset(); bitSet->set(offsetSeconds); BitSetUtil::compress(bitSet,pvs); - assert(bitSet->get(offsetSeconds)==true); + testOk1(bitSet->get(offsetSeconds)==true); bitSet->set(offsetNano); bitSet->set(offsetUserTag); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); BitSetUtil::compress(bitSet,pvs); - assert(bitSet->get(offsetSeconds)==false); - assert(bitSet->get(offsetTimeStamp)==true); + testOk1(bitSet->get(offsetSeconds)==false); + testOk1(bitSet->get(offsetTimeStamp)==true); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); bitSet->clear(); pvField = pvs->getSubField("current"); @@ -116,42 +116,37 @@ static void test(FILE * fd) bitSet->set(offsetMessage); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); BitSetUtil::compress(bitSet,pvs); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); - assert(bitSet->get(offsetCurrent)==true); + if(debug) printf("bitSet\n%s\n",builder.c_str()); + testOk1(bitSet->get(offsetCurrent)==true); bitSet->clear(); bitSet->set(offsetSeverity); bitSet->set(offsetStatus); bitSet->set(offsetMessage); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); + if(debug) printf("bitSet\n%s\n",builder.c_str()); BitSetUtil::compress(bitSet,pvs); builder.clear(); bitSet->toString(&builder); - if(debug) fprintf(fd,"bitSet\n%s\n",builder.c_str()); - assert(bitSet->get(offsetAlarm)==true); + if(debug) printf("bitSet\n%s\n",builder.c_str()); + testOk1(bitSet->get(offsetAlarm)==true); bitSet->clear(); - fprintf(fd,"testBitSetUtil PASSED\n"); + printf("testBitSetUtil PASSED\n"); } -int main(int argc,char *argv[]) +MAIN(testBitSetUtil) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } + testPlan(5); fieldCreate = getFieldCreate(); pvDataCreate = getPVDataCreate(); standardField = getStandardField(); standardPVField = getStandardPVField(); convert = getConvert(); - test(fd); - return(0); + test(); + return testDone(); } diff --git a/testApp/pv/testOperators.cpp b/testApp/pv/testOperators.cpp index 2926486..a614737 100644 --- a/testApp/pv/testOperators.cpp +++ b/testApp/pv/testOperators.cpp @@ -12,7 +12,8 @@ #include #include -#include +#include +#include using namespace epics::pvData; @@ -20,8 +21,9 @@ static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static StandardFieldPtr standardField = getStandardField(); static StandardPVFieldPtr standardPVField = getStandardPVField(); -int main(int, char **) +MAIN(testOperators) { + testPlan(2); PVStructurePtr pvStructure = standardPVField->scalar(pvDouble, "alarm,timeStamp,display,control,valueAlarm"); @@ -32,7 +34,7 @@ int main(int, char **) double dv; *pvValue >>= dv; - assert(testDV == dv); + testOk1(testDV == dv); const std::string testSV = "test message"; @@ -42,7 +44,7 @@ int main(int, char **) std::string sv; *pvMessage >>= sv; - assert(testSV == sv); + testOk1(testSV == sv); // // to stream tests @@ -86,6 +88,6 @@ int main(int, char **) pvStructureArray->replace(freeze(pvStructures)); std::cout << *pvStructure << std::endl; - return 0; + return testDone(); } diff --git a/testApp/pv/testPVAppend.cpp b/testApp/pv/testPVAppend.cpp index 2e6a9d2..7dd1a91 100644 --- a/testApp/pv/testPVAppend.cpp +++ b/testApp/pv/testPVAppend.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -39,24 +39,24 @@ static String alarmTimeStampValueAlarm("alarm,timeStamp,valueAlarm"); static String allProperties("alarm,timeStamp,display,control,valueAlarm"); static void checkNameAndParent( - FILE *fd,PVStructurePtr & pvStructure, int indentLevel) + PVStructurePtr & pvStructure, int indentLevel) { builder.clear(); if(debug) { convert->newLine(&builder,indentLevel); - fprintf(fd,"%s this %p indentLevel %d", + printf("%s this %p indentLevel %d", builder.c_str(),pvStructure.get(),indentLevel); } PVFieldPtrArray pvFields = pvStructure->getPVFields(); StringArray fieldNames = pvStructure->getStructure()->getFieldNames(); for(size_t i = 0; igetParent()==pvStructure.get()); - assert(pvField->getFieldName().compare(fieldNames[i])==0); + testOk1(pvField->getParent()==pvStructure.get()); + testOk1(pvField->getFieldName().compare(fieldNames[i])==0); builder.clear(); if(debug) { convert->newLine(&builder,indentLevel); - fprintf(fd,"%s this %p name %s parent %p", + printf("%s this %p name %s parent %p", builder.c_str(), pvField.get(), pvField->getFieldName().c_str(), @@ -64,15 +64,15 @@ static void checkNameAndParent( } if(pvField->getField()->getType()==structure) { PVStructurePtr xxx = static_pointer_cast(pvField); - checkNameAndParent(fd,xxx,indentLevel+1); + checkNameAndParent(xxx,indentLevel+1); } } builder.clear(); } -static void testAppendSimple(FILE * fd) +static void testAppendSimple() { - if(debug) fprintf(fd,"\ntestAppendSimple\n"); + if(debug) printf("\ntestAppendSimple\n"); PVFieldPtrArray fields; StringArray names; PVStructurePtr pvParent = pvDataCreate->createPVStructure(names,fields); @@ -88,13 +88,13 @@ static void testAppendSimple(FILE * fd) pvParent->appendPVField("extra",pvField); builder.clear(); pvParent->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - fprintf(fd,"testAppendSimple PASSED\n"); + if(debug) printf("%s\n",builder.c_str()); + printf("testAppendSimple PASSED\n"); } -static void testAppendMore(FILE * fd) +static void testAppendMore() { - if(debug) fprintf(fd,"\ntestAppendMore\n"); + if(debug) printf("\ntestAppendMore\n"); PVFieldPtrArray fields; StringArray names; PVStructurePtr pvStructure = pvDataCreate->createPVStructure(names,fields); @@ -116,14 +116,14 @@ static void testAppendMore(FILE * fd) pvStructure->appendPVField("child2",pvField); builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - checkNameAndParent(fd,pvStructure,0); - fprintf(fd,"testAppendMore PASSED\n"); + if(debug) printf("%s\n",builder.c_str()); + checkNameAndParent(pvStructure,0); + printf("testAppendMore PASSED\n"); } -static void testAppendStructures(FILE * fd) +static void testAppendStructures() { - if(debug) fprintf(fd,"\ntestAppendStructures\n"); + if(debug) printf("\ntestAppendStructures\n"); PVFieldPtrArray fields; StringArray names; PVStructurePtr pvParent = pvDataCreate->createPVStructure(names,fields); @@ -141,11 +141,11 @@ static void testAppendStructures(FILE * fd) pvValue->appendPVField("index",pvIndex); builder.clear(); pvParent->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); + if(debug) printf("%s\n",builder.c_str()); builder.clear(); pvParent->getField()->toString(&builder); - if(debug) fprintf(fd,"field\n%s\n",builder.c_str()); - fprintf(fd,"testAppendStructures PASSED\n"); + if(debug) printf("field\n%s\n",builder.c_str()); + printf("testAppendStructures PASSED\n"); } static void append2(PVStructurePtr &pvStructure, @@ -168,9 +168,9 @@ static void append2(PVStructurePtr &pvStructure, pvFields.push_back(pvStringField); pvStructure->appendPVFields(names,pvFields); } -static void testAppends(FILE * fd) +static void testAppends() { - if(debug) fprintf(fd,"\ntestAppends\n"); + if(debug) printf("\ntestAppends\n"); PVFieldPtrArray emptyPVFields; StringArray emptyNames; PVFieldPtrArray pvFields; @@ -191,39 +191,34 @@ static void testAppends(FILE * fd) names,pvFields); builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - checkNameAndParent(fd,pvStructure,0); + if(debug) printf("%s\n",builder.c_str()); + checkNameAndParent(pvStructure,0); PVFieldPtr pvField = pvStructure->getSubField("child2.Bill"); - assert(pvField.get()!=NULL); + testOk1(pvField.get()!=NULL); pvField->renameField("Joe"); builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); + if(debug) printf("%s\n",builder.c_str()); pvField->getParent()->removePVField("Joe"); builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - checkNameAndParent(fd,pvStructure,0); - fprintf(fd,"testAppends PASSED\n"); + if(debug) printf("%s\n",builder.c_str()); + checkNameAndParent(pvStructure,0); + printf("testAppends PASSED\n"); } -int main(int argc,char *argv[]) +MAIN(testPVAppend) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } + testPlan(31); fieldCreate = getFieldCreate(); pvDataCreate = getPVDataCreate(); standardField = getStandardField(); standardPVField = getStandardPVField(); convert = getConvert(); - testAppendStructures(fd); - testAppendSimple(fd); - testAppendMore(fd); - testAppends(fd); - return(0); + testAppendStructures(); + testAppendSimple(); + testAppendMore(); + testAppends(); + return testDone(); } diff --git a/testApp/pv/testPVAuxInfo.cpp b/testApp/pv/testPVAuxInfo.cpp index cb98403..494d1d1 100644 --- a/testApp/pv/testPVAuxInfo.cpp +++ b/testApp/pv/testPVAuxInfo.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -34,9 +34,9 @@ static StandardPVFieldPtr standardPVField; static ConvertPtr convert; static String buffer; -static void printOffsets(PVStructurePtr pvStructure,FILE *fd) +static void printOffsets(PVStructurePtr pvStructure) { - fprintf(fd,"%s offset %lu next %lu number %lu\n", + printf("%s offset %lu next %lu number %lu\n", pvStructure->getFieldName().c_str(), (long unsigned)pvStructure->getFieldOffset(), (long unsigned)pvStructure->getNextFieldOffset(), @@ -47,10 +47,10 @@ static void printOffsets(PVStructurePtr pvStructure,FILE *fd) PVFieldPtr pvField = fields[i]; if(pvField->getField()->getType()==structure) { PVStructurePtr xxx = static_pointer_cast(pvField); - printOffsets(xxx,fd); + printOffsets(xxx); continue; } - fprintf(fd,"%s offset %lli next %lli number %lli\n", + printf("%s offset %lli next %lli number %lli\n", pvField->getFieldName().c_str(), (long long)pvField->getFieldOffset(), (long long)pvField->getNextFieldOffset(), @@ -58,44 +58,40 @@ static void printOffsets(PVStructurePtr pvStructure,FILE *fd) } } -static void testPVAuxInfo(FILE * fd) { - if(debug) fprintf(fd,"\ntestPVAuxInfo\n"); +static void testPVAuxInfo() +{ + if(debug) printf("\ntestPVAuxInfo\n"); PVStructurePtr pvStructure = standardPVField->scalar( pvDouble,"alarm,timeStamp,display,control"); PVStructurePtr display = pvStructure->getStructureField("display"); - assert(display.get()!=NULL); + testOk1(display.get()!=NULL); PVAuxInfoPtr auxInfo = display->getPVAuxInfo(); auxInfo->createInfo("factory",pvString); auxInfo->createInfo("junk",pvDouble); PVScalarPtr pscalar = auxInfo->getInfo(String("factory")); - assert(pscalar.get()!=0); + testOk1(pscalar.get()!=0); convert->fromString(pscalar,"factoryName"); pscalar = auxInfo->getInfo("junk"); - assert(pscalar.get()!=0); + testOk1(pscalar.get()!=0); convert->fromString(pscalar,"3.0"); buffer.clear(); pvStructure->toString(&buffer); - if(debug) fprintf(fd,"%s\n",buffer.c_str()); + if(debug) printf("%s\n",buffer.c_str()); // now show field offsets - if(debug) printOffsets(pvStructure,fd); - fprintf(fd,"testPVAuxInfo PASSED\n"); + if(debug) printOffsets(pvStructure); + printf("testPVAuxInfo PASSED\n"); } -int main(int argc,char *argv[]) +MAIN(testPVAuxInfo) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } + testPlan(3); fieldCreate = getFieldCreate(); pvDataCreate = getPVDataCreate(); standardField = getStandardField(); standardPVField = getStandardPVField(); convert = getConvert(); - testPVAuxInfo(fd); - return(0); + testPVAuxInfo(); + return testDone(); } diff --git a/testApp/pv/testPVData.cpp b/testApp/pv/testPVData.cpp index 71654da..020cca8 100644 --- a/testApp/pv/testPVData.cpp +++ b/testApp/pv/testPVData.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -37,9 +37,9 @@ static String alarmTimeStamp("alarm,timeStamp"); static String alarmTimeStampValueAlarm("alarm,timeStamp,valueAlarm"); static String allProperties("alarm,timeStamp,display,control,valueAlarm"); -static void testAppend(FILE * fd) +static void testAppend() { - if(debug) fprintf(fd,"\ntestAppend\n"); + if(debug) printf("\ntestAppend\n"); PVFieldPtrArray pvFields; StringArray fieldNames; PVStructurePtr pvParent = pvDataCreate->createPVStructure( @@ -51,13 +51,13 @@ static void testAppend(FILE * fd) pvParent->appendPVField("request",pvField); builder.clear(); pvParent->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - fprintf(fd,"testAppend PASSED\n"); + if(debug) printf("%s\n",builder.c_str()); + printf("testAppend PASSED\n"); } -static void testCreatePVStructure(FILE * fd) +static void testCreatePVStructure() { - if(debug) fprintf(fd,"\ntestCreatePVStructure\n"); + if(debug) printf("\ntestCreatePVStructure\n"); PVStructurePtr pv0 = standardPVField->scalar( pvDouble,alarmTimeStampValueAlarm); PVScalarPtr pv1 = pvDataCreate->createPVScalar(pvString); @@ -73,11 +73,11 @@ static void testCreatePVStructure(FILE * fd) fieldNames,pvFields); builder.clear(); pvParent->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); - fprintf(fd,"testCreatePVStructure PASSED\n"); + if(debug) printf("%s\n",builder.c_str()); + printf("testCreatePVStructure PASSED\n"); } -static void testPVScalarCommon(FILE * fd,String /*fieldName*/,ScalarType stype) +static void testPVScalarCommon(String /*fieldName*/,ScalarType stype) { PVScalarPtr pvScalar = pvDataCreate->createPVScalar(stype); if(stype==pvBoolean) { @@ -87,11 +87,11 @@ static void testPVScalarCommon(FILE * fd,String /*fieldName*/,ScalarType stype) } builder.clear(); pvScalar->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); + if(debug) printf("%s\n",builder.c_str()); } static void testPVScalarWithProperties( - FILE * fd,String /*fieldName*/,ScalarType stype) + String /*fieldName*/,ScalarType stype) { PVStructurePtr pvStructure; bool hasValueAlarm = false; @@ -212,45 +212,45 @@ static void testPVScalarWithProperties( } PVLongPtr seconds = pvStructure->getLongField( String("timeStamp.secondsPastEpoch")); - assert(seconds!=0); + testOk1(seconds!=0); seconds->put(123456789); PVIntPtr nano = pvStructure->getIntField(String("timeStamp.nanoSeconds")); - assert(nano!=0); + testOk1(nano!=0); nano->put(1000000); PVIntPtr severity = pvStructure->getIntField(String("alarm.severity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(2); PVStringPtr message = pvStructure->getStringField(String("alarm.message")); - assert(message!=0); + testOk1(message!=0); message->put(String("messageForAlarm")); if(hasDisplayControl) { PVStringPtr desc = pvStructure->getStringField( String("display.description")); - assert(desc!=0); + testOk1(desc!=0); desc->put(String("this is a description")); PVStringPtr format = pvStructure->getStringField( String("display.format")); - assert(format!=0); + testOk1(format!=0); format->put(String("f10.2")); PVStringPtr units = pvStructure->getStringField( String("display.units")); - assert(units!=0); + testOk1(units!=0); units->put(String("SomeUnits")); PVDoublePtr limit = pvStructure->getDoubleField( String("display.limitLow")); - assert(limit!=0); + testOk1(limit!=0); limit->put(0.0); limit = pvStructure->getDoubleField( String("display.limitHigh")); - assert(limit!=0); + testOk1(limit!=0); limit->put(10.0); limit = pvStructure->getDoubleField( String("control.limitLow")); - assert(limit!=0); + testOk1(limit!=0); limit->put(1.0); limit = pvStructure->getDoubleField( String("control.limitHigh")); - assert(limit!=0); + testOk1(limit!=0); limit->put(9.0); } if(hasValueAlarm) { @@ -261,24 +261,24 @@ static void testPVScalarWithProperties( pvField = pvStructure->getSubField( String("valueAlarm.lowAlarmLimit")); PVScalarPtr pvtemp = static_pointer_cast(pvField); - assert(pvtemp.get()!=0); + testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,1.0); pvField = pvStructure->getSubField( String("valueAlarm.highAlarmLimit")); pvtemp = static_pointer_cast(pvField); - assert(pvtemp.get()!=0); + testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,9.0); severity = pvStructure->getIntField( String("valueAlarm.lowAlarmSeverity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(2); severity = pvStructure->getIntField( String("valueAlarm.highAlarmSeverity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(2); PVBooleanPtr active = pvStructure->getBooleanField( String("valueAlarm.active")); - assert(active!=0); + testOk1(active!=0); active->put(true); } if(hasBooleanAlarm) { @@ -288,60 +288,61 @@ static void testPVScalarWithProperties( pvBoolean->put(true); severity = pvStructure->getIntField( String("valueAlarm.falseSeverity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(0); severity = pvStructure->getIntField( String("valueAlarm.trueSeverity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(2); severity = pvStructure->getIntField( String("valueAlarm.changeStateSeverity")); - assert(severity!=0); + testOk1(severity!=0); severity->put(1); } builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); + if(debug) printf("%s\n",builder.c_str()); } -static void testPVScalar(FILE * fd) { - if(debug) fprintf(fd,"\ntestScalar\n"); - testPVScalarCommon(fd,String("boolean"),pvByte); - testPVScalarCommon(fd,String("byte"),pvByte); - testPVScalarCommon(fd,String("short"),pvShort); - testPVScalarCommon(fd,String("int"),pvInt); - testPVScalarCommon(fd,String("long"),pvLong); - testPVScalarCommon(fd,String("ubyte"),pvUByte); - testPVScalarCommon(fd,String("ushort"),pvUShort); - testPVScalarCommon(fd,String("uint"),pvUInt); - testPVScalarCommon(fd,String("ulong"),pvULong); - testPVScalarCommon(fd,String("float"),pvFloat); - testPVScalarCommon(fd,String("double"),pvDouble); - testPVScalarCommon(fd,String("string"),pvString); +static void testPVScalar() +{ + if(debug) printf("\ntestScalar\n"); + testPVScalarCommon(String("boolean"),pvByte); + testPVScalarCommon(String("byte"),pvByte); + testPVScalarCommon(String("short"),pvShort); + testPVScalarCommon(String("int"),pvInt); + testPVScalarCommon(String("long"),pvLong); + testPVScalarCommon(String("ubyte"),pvUByte); + testPVScalarCommon(String("ushort"),pvUShort); + testPVScalarCommon(String("uint"),pvUInt); + testPVScalarCommon(String("ulong"),pvULong); + testPVScalarCommon(String("float"),pvFloat); + testPVScalarCommon(String("double"),pvDouble); + testPVScalarCommon(String("string"),pvString); - testPVScalarWithProperties(fd,String("boolean"),pvBoolean); - testPVScalarWithProperties(fd,String("byte"),pvByte); - testPVScalarWithProperties(fd,String("short"),pvShort); - testPVScalarWithProperties(fd,String("int"),pvInt); - testPVScalarWithProperties(fd,String("long"),pvLong); - testPVScalarWithProperties(fd,String("ubyte"),pvUByte); - testPVScalarWithProperties(fd,String("ushort"),pvUShort); - testPVScalarWithProperties(fd,String("uint"),pvUInt); - testPVScalarWithProperties(fd,String("ulong"),pvULong); - testPVScalarWithProperties(fd,String("float"),pvFloat); - testPVScalarWithProperties(fd,String("double"),pvDouble); - testPVScalarWithProperties(fd,String("string"),pvString); - fprintf(fd,"testScalar PASSED\n"); + testPVScalarWithProperties(String("boolean"),pvBoolean); + testPVScalarWithProperties(String("byte"),pvByte); + testPVScalarWithProperties(String("short"),pvShort); + testPVScalarWithProperties(String("int"),pvInt); + testPVScalarWithProperties(String("long"),pvLong); + testPVScalarWithProperties(String("ubyte"),pvUByte); + testPVScalarWithProperties(String("ushort"),pvUShort); + testPVScalarWithProperties(String("uint"),pvUInt); + testPVScalarWithProperties(String("ulong"),pvULong); + testPVScalarWithProperties(String("float"),pvFloat); + testPVScalarWithProperties(String("double"),pvDouble); + testPVScalarWithProperties(String("string"),pvString); + printf("testScalar PASSED\n"); } -static void testScalarArrayCommon(FILE * fd,String /*fieldName*/,ScalarType stype) +static void testScalarArrayCommon(String /*fieldName*/,ScalarType stype) { PVStructurePtr pvStructure = standardPVField->scalarArray( stype,alarmTimeStamp); PVScalarArrayPtr scalarArray = pvStructure->getScalarArrayField( "value",stype); - assert(scalarArray.get()!=0); + testOk1(scalarArray.get()!=0); if(stype==pvBoolean) { StringArray values(3); values[0] = "true"; @@ -357,41 +358,37 @@ static void testScalarArrayCommon(FILE * fd,String /*fieldName*/,ScalarType styp } builder.clear(); pvStructure->toString(&builder); - if(debug) fprintf(fd,"%s\n",builder.c_str()); + if(debug) printf("%s\n",builder.c_str()); PVFieldPtr pvField = pvStructure->getSubField("alarm.status"); pvField->message("this is a test",infoMessage); } -static void testScalarArray(FILE * fd) { - if(debug) fprintf(fd,"\ntestScalarArray\n"); - testScalarArrayCommon(fd,String("boolean"),pvBoolean); - testScalarArrayCommon(fd,String("byte"),pvByte); - testScalarArrayCommon(fd,String("short"),pvShort); - testScalarArrayCommon(fd,String("int"),pvInt); - testScalarArrayCommon(fd,String("long"),pvLong); - testScalarArrayCommon(fd,String("float"),pvFloat); - testScalarArrayCommon(fd,String("double"),pvDouble); - testScalarArrayCommon(fd,String("string"),pvString); - fprintf(fd,"testScalarArray PASSED\n"); +static void testScalarArray() +{ + if(debug) printf("\ntestScalarArray\n"); + testScalarArrayCommon(String("boolean"),pvBoolean); + testScalarArrayCommon(String("byte"),pvByte); + testScalarArrayCommon(String("short"),pvShort); + testScalarArrayCommon(String("int"),pvInt); + testScalarArrayCommon(String("long"),pvLong); + testScalarArrayCommon(String("float"),pvFloat); + testScalarArrayCommon(String("double"),pvDouble); + testScalarArrayCommon(String("string"),pvString); + printf("testScalarArray PASSED\n"); } -int main(int argc,char *argv[]) +MAIN(testPVData) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } + testPlan(179); fieldCreate = getFieldCreate(); pvDataCreate = getPVDataCreate(); standardField = getStandardField(); standardPVField = getStandardPVField(); convert = getConvert(); - testAppend(fd); - testCreatePVStructure(fd); - testPVScalar(fd); - testScalarArray(fd); - return(0); + testAppend(); + testCreatePVStructure(); + testPVScalar(); + testScalarArray(); + return testDone(); } diff --git a/testApp/pv/testPVType.cpp b/testApp/pv/testPVType.cpp index 582775d..ee3464e 100644 --- a/testApp/pv/testPVType.cpp +++ b/testApp/pv/testPVType.cpp @@ -12,62 +12,58 @@ #include #include -#include +#include +#include #include #include using namespace epics::pvData; -int main(int argc,char *argv[]) +MAIN(testPVType) { - char *fileName = 0; - if(argc>1) fileName = argv[1]; - FILE * fd = stdout; - if(fileName!=0 && fileName[0]!=0) { - fd = fopen(fileName,"w+"); - } - assert(sizeof(int8)==1); - assert(sizeof(int16)==2); - assert(sizeof(int32)==4); - assert(sizeof(int64)==8); - assert(sizeof(uint32)==4); - assert(sizeof(uint64)==8); + testPlan(6); + testOk1(sizeof(int8)==1); + testOk1(sizeof(int16)==2); + testOk1(sizeof(int32)==4); + testOk1(sizeof(int64)==8); + testOk1(sizeof(uint32)==4); + testOk1(sizeof(uint64)==8); int intValue; int8 byteInt; intValue = 0x7f; byteInt = intValue; - fprintf(fd,"int8 max %d",(int)byteInt); + printf("int8 max %d",(int)byteInt); intValue = 0x80; byteInt = intValue; - fprintf(fd," min %d\n",(int)byteInt); + printf(" min %d\n",(int)byteInt); int16 shortInt; intValue = 0x7fff; shortInt = intValue; - fprintf(fd,"int8 max %hd",shortInt); + printf("int8 max %hd",shortInt); intValue = 0x8000; shortInt = intValue; - fprintf(fd," min %hd\n",shortInt); + printf(" min %hd\n",shortInt); int32 intInt; intValue = 0x7fffffff; intInt = intValue; - fprintf(fd,"int8 max %d",intInt); + printf("int8 max %d",intInt); intValue = 0x80000000; intInt = intValue; - fprintf(fd," min %d\n",intInt); + printf(" min %d\n",intInt); int64 longInt = 0x7fffffff; longInt <<= 32; longInt |= 0xffffffff; - fprintf(fd,"int8 max %lli",(long long)longInt); + printf("int8 max %lli",(long long)longInt); longInt = intValue = 0x80000000;; longInt <<= 32; - fprintf(fd," min %lli\n",(long long)longInt); + printf(" min %lli\n",(long long)longInt); - fprintf(fd,"PASSED\n"); - return(0); + printf("PASSED\n"); + return testDone(); } diff --git a/testApp/pv/testStandardField.cpp b/testApp/pv/testStandardField.cpp index 661caa1..cf181b9 100644 --- a/testApp/pv/testStandardField.cpp +++ b/testApp/pv/testStandardField.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -35,8 +35,9 @@ static void print(String name) if(debug) printf("\n%s\n%s\n",name.c_str(),builder.c_str()); } -int main(int, char **) +MAIN(testStandardField) { + testPlan(1); StructureConstPtr doubleValue = standardField->scalar(pvDouble, "alarm,timeStamp,display,control,valueAlarm"); builder.clear(); @@ -65,7 +66,7 @@ int main(int, char **) builder.clear(); structureArrayValue->toString(&builder); print("structureArrayValue"); - printf("PASSED\n"); - return(0); + testPass("testStandardField"); + return testDone(); } diff --git a/testApp/pv/testStandardPVField.cpp b/testApp/pv/testStandardPVField.cpp index 11a276b..d13e8fb 100644 --- a/testApp/pv/testStandardPVField.cpp +++ b/testApp/pv/testStandardPVField.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -37,8 +37,9 @@ static void print(String name) if(debug) printf("\n%s\n%s\n",name.c_str(),builder.c_str()); } -int main(int, char **) +MAIN(testStandardPVField) { + testPlan(1); PVStructurePtr pvStructure = standardPVField->scalar(pvDouble, "alarm,timeStamp,display,control,valueAlarm"); PVDoublePtr pvValue = pvStructure->getDoubleField("value"); @@ -80,7 +81,7 @@ int main(int, char **) builder.clear(); pvStructure->toString(&builder); print("structureArrayTest"); - printf("PASSED\n"); - return(0); + testPass("testStandardPVField"); + return testDone(); }