From fc932f1ad2695d7a8d0daf52f6d7e41a443a352e Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 9 Feb 2011 20:28:38 -0500 Subject: [PATCH] add testSerialization to testAll --- test/testAll.sh | 1 + test/testSerialization | 39 +++++++++++ test/testSerialization.sh | 1 + test/testSerializationDiff | 0 test/testSerializationGold | 39 +++++++++++ testApp/misc/testSerialization.cpp | 102 ++++++++++++++++------------- 6 files changed, 136 insertions(+), 46 deletions(-) create mode 100644 test/testSerialization create mode 120000 test/testSerialization.sh create mode 100644 test/testSerializationDiff create mode 100644 test/testSerializationGold diff --git a/test/testAll.sh b/test/testAll.sh index 164ccab..bf90e1e 100755 --- a/test/testAll.sh +++ b/test/testAll.sh @@ -12,3 +12,4 @@ ./testTimer.sh || exit $? ./testQueue.sh || exit $? ./testMessageQueue.sh || exit $? +./testSerialization.sh || exit $? diff --git a/test/testSerialization b/test/testSerialization new file mode 100644 index 0000000..22d7bd9 --- /dev/null +++ b/test/testSerialization @@ -0,0 +1,39 @@ +Testing scalar equals... +!!! PASSED + +Testing scalars... + PVBoolean + PVByte + PVShort + PVInt + PVLong + PVFloat + PVDouble + PVString +!!! PASSED + +Testing arrays... + PVBooleanArray + PVByteArray + PVShortArray + PVIntArray + PVLongArray + PVFloatArray + PVDoubleArray + PVStringArray +!!! PASSED + +Testing scalar non-initialized... +!!! PASSED + +Testing array non-initialized... +!!! PASSED + +Testing structure... + Simple structure serialization + Complex structure serialization +!!! PASSED + +Done. +pvField totalConstruct 158 totalDestruct 158 +field totalConstruct 68 totalDestruct 68 diff --git a/test/testSerialization.sh b/test/testSerialization.sh new file mode 120000 index 0000000..2dcdfc4 --- /dev/null +++ b/test/testSerialization.sh @@ -0,0 +1 @@ +testPVType.sh \ No newline at end of file diff --git a/test/testSerializationDiff b/test/testSerializationDiff new file mode 100644 index 0000000..e69de29 diff --git a/test/testSerializationGold b/test/testSerializationGold new file mode 100644 index 0000000..22d7bd9 --- /dev/null +++ b/test/testSerializationGold @@ -0,0 +1,39 @@ +Testing scalar equals... +!!! PASSED + +Testing scalars... + PVBoolean + PVByte + PVShort + PVInt + PVLong + PVFloat + PVDouble + PVString +!!! PASSED + +Testing arrays... + PVBooleanArray + PVByteArray + PVShortArray + PVIntArray + PVLongArray + PVFloatArray + PVDoubleArray + PVStringArray +!!! PASSED + +Testing scalar non-initialized... +!!! PASSED + +Testing array non-initialized... +!!! PASSED + +Testing structure... + Simple structure serialization + Complex structure serialization +!!! PASSED + +Done. +pvField totalConstruct 158 totalDestruct 158 +field totalConstruct 68 totalDestruct 68 diff --git a/testApp/misc/testSerialization.cpp b/testApp/misc/testSerialization.cpp index c582afa..415a976 100644 --- a/testApp/misc/testSerialization.cpp +++ b/testApp/misc/testSerialization.cpp @@ -10,6 +10,7 @@ * Author: Miha Vitorovic */ #include +#include #include @@ -35,7 +36,6 @@ #define DOUBLE_MIN_VALUE 4.9E-324 using namespace epics::pvData; -using std::cout; namespace epics { namespace pvData { @@ -96,12 +96,12 @@ void serializationTest(PVField* field) { delete deserializedField; // clean up } -void testScalar() { - cout<<"Testing scalars...\n"; +void testScalar(std::ostream& ofile) { + ofile<<"Testing scalars...\n"; PVDataCreate* factory = getPVDataCreate(); assert(factory!=NULL); - cout<<"\tPVBoolean\n"; + ofile<<"\tPVBoolean\n"; PVBoolean* pvBoolean = (PVBoolean*)factory->createPVScalar(NULL, "pvBoolean", epics::pvData::pvBoolean); pvBoolean->put(false); @@ -110,7 +110,7 @@ void testScalar() { serializationTest(pvBoolean); delete pvBoolean; - cout<<"\tPVByte\n"; + ofile<<"\tPVByte\n"; PVByte* pvByte = (PVByte*)factory->createPVScalar(NULL, "pvByte", epics::pvData::pvByte); pvByte->put(0); @@ -123,7 +123,7 @@ void testScalar() { serializationTest(pvByte); delete pvByte; - cout<<"\tPVShort\n"; + ofile<<"\tPVShort\n"; PVShort* pvShort = (PVShort*)factory->createPVScalar(NULL, "pvShort", epics::pvData::pvShort); pvShort->put(0); @@ -140,7 +140,7 @@ void testScalar() { serializationTest(pvShort); delete pvShort; - cout<<"\tPVInt\n"; + ofile<<"\tPVInt\n"; PVInt* pvInt = (PVInt*)factory->createPVScalar(NULL, "pvInt", epics::pvData::pvInt); pvInt->put(0); @@ -161,7 +161,7 @@ void testScalar() { serializationTest(pvInt); delete pvInt; - cout<<"\tPVLong\n"; + ofile<<"\tPVLong\n"; PVLong* pvLong = (PVLong*)factory->createPVScalar(NULL, "pvLong", epics::pvData::pvLong); pvLong->put(0); @@ -186,7 +186,7 @@ void testScalar() { serializationTest(pvLong); delete pvLong; - cout<<"\tPVFloat\n"; + ofile<<"\tPVFloat\n"; PVFloat* pvFloat = (PVFloat*)factory->createPVScalar(NULL, "pvFloat", epics::pvData::pvFloat); pvFloat->put(0); @@ -199,7 +199,7 @@ void testScalar() { serializationTest(pvFloat); delete pvFloat; - cout<<"\tPVDouble\n"; + ofile<<"\tPVDouble\n"; PVDouble* pvDouble = (PVDouble*)factory->createPVScalar(NULL, "pvDouble", epics::pvData::pvDouble); pvDouble->put(0); @@ -212,7 +212,7 @@ void testScalar() { serializationTest(pvDouble); delete pvDouble; - cout<<"\tPVString\n"; + ofile<<"\tPVString\n"; PVString* pvString = (PVString*)factory->createPVScalar(NULL, "pvString", epics::pvData::pvString); pvString->put(""); @@ -232,16 +232,16 @@ void testScalar() { delete pvString; - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } -void testArray() { - cout<<"Testing arrays...\n"; +void testArray(std::ostream& ofile) { + ofile<<"Testing arrays...\n"; PVDataCreate* factory = getPVDataCreate(); assert(factory!=NULL); - cout<<"\tPVBooleanArray\n"; + ofile<<"\tPVBooleanArray\n"; bool boolEmpty[] = { }; bool bv[] = { false, true, false, true, true }; PVBooleanArray* pvBoolean = (PVBooleanArray*)factory->createPVScalarArray( @@ -252,7 +252,7 @@ void testArray() { serializationTest(pvBoolean); delete pvBoolean; - cout<<"\tPVByteArray\n"; + ofile<<"\tPVByteArray\n"; int8 byteEmpty[] = { }; int8 byv[] = { 0, 1, 2, -1, BYTE_MAX_VALUE, BYTE_MAX_VALUE-1, BYTE_MIN_VALUE+1, BYTE_MIN_VALUE }; @@ -264,7 +264,7 @@ void testArray() { serializationTest(pvByte); delete pvByte; - cout<<"\tPVShortArray\n"; + ofile<<"\tPVShortArray\n"; int16 shortEmpty[] = { }; int16 sv[] = { 0, 1, 2, -1, SHORT_MAX_VALUE, SHORT_MAX_VALUE-1, SHORT_MIN_VALUE+1, SHORT_MIN_VALUE }; @@ -276,7 +276,7 @@ void testArray() { serializationTest(pvShort); delete pvShort; - cout<<"\tPVIntArray\n"; + ofile<<"\tPVIntArray\n"; int32 intEmpty[] = { }; int32 iv[] = { 0, 1, 2, -1, INT_MAX_VALUE, INT_MAX_VALUE-1, INT_MIN_VALUE+1, INT_MIN_VALUE }; @@ -288,7 +288,7 @@ void testArray() { serializationTest(pvInt); delete pvInt; - cout<<"\tPVLongArray\n"; + ofile<<"\tPVLongArray\n"; int64 longEmpty[] = { }; int64 lv[] = { 0, 1, 2, -1, LONG_MAX_VALUE, LONG_MAX_VALUE-1, LONG_MIN_VALUE+1, LONG_MIN_VALUE }; @@ -300,7 +300,7 @@ void testArray() { serializationTest(pvLong); delete pvLong; - cout<<"\tPVFloatArray\n"; + ofile<<"\tPVFloatArray\n"; float floatEmpty[] = { }; float fv[] = { (float)0.0, (float)1.1, (float)2.3, (float)-1.4, FLOAT_MAX_VALUE, FLOAT_MAX_VALUE-(float)123456.789, FLOAT_MIN_VALUE @@ -313,7 +313,7 @@ void testArray() { serializationTest(pvFloat); delete pvFloat; - cout<<"\tPVDoubleArray\n"; + ofile<<"\tPVDoubleArray\n"; double doubleEmpty[] = { }; double dv[] = { (double)0.0, (double)1.1, (double)2.3, (double)-1.4, DOUBLE_MAX_VALUE, DOUBLE_MAX_VALUE-(double)123456.789, @@ -326,7 +326,7 @@ void testArray() { serializationTest(pvDouble); delete pvDouble; - cout<<"\tPVStringArray\n"; + ofile<<"\tPVStringArray\n"; String stringEmpty[] = { }; String strv[] = @@ -347,11 +347,11 @@ void testArray() { serializationTest(pvString); delete pvString; - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } -void testScalarEquals() { - cout<<"Testing scalar equals...\n"; +void testScalarEquals(std::ostream& ofile) { + ofile<<"Testing scalar equals...\n"; PVDataCreate* factory = getPVDataCreate(); assert(factory!=NULL); @@ -427,11 +427,11 @@ void testScalarEquals() { delete pvStruct1; // 'structure' and 'fields' are deleted implicitly - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } -void testScalarNonInitialized() { - cout<<"Testing scalar non-initialized...\n"; +void testScalarNonInitialized(std::ostream& ofile) { + ofile<<"Testing scalar non-initialized...\n"; PVDataCreate* factory = getPVDataCreate(); assert(factory!=NULL); @@ -482,11 +482,11 @@ void testScalarNonInitialized() { serializationTest(pvStruct); delete pvStruct; // 'structure' and 'fields' are deleted implicitly - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } -void testArrayNonInitialized() { - cout<<"Testing array non-initialized...\n"; +void testArrayNonInitialized(std::ostream& ofile) { + ofile<<"Testing array non-initialized...\n"; PVDataCreate* factory = getPVDataCreate(); assert(factory!=NULL); @@ -549,18 +549,18 @@ void testArrayNonInitialized() { //'structureArray' also deletes 'structure' //'structure' also deletes 'fields' - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } -void testStructure() { - cout<<"Testing structure...\n"; +void testStructure(std::ostream& ofile) { + ofile<<"Testing structure...\n"; FieldCreate* fieldCreate = getFieldCreate(); PVDataCreate* pvDataCreate = getPVDataCreate(); assert(fieldCreate!=NULL); assert(pvDataCreate!=NULL); - cout<<"\tSimple structure serialization\n"; + ofile<<"\tSimple structure serialization\n"; FieldConstPtrArray fields = new FieldConstPtr[2]; fields[0] = fieldCreate->createScalar("secondsSinceEpoch", epics::pvData::pvLong); @@ -574,7 +574,7 @@ void testStructure() { //serializationTest(pvStructure->getStructure()); delete pvStructure; - cout<<"\tComplex structure serialization\n"; + ofile<<"\tComplex structure serialization\n"; // and more complex :) FieldConstPtrArray fields2 = new FieldConstPtr[4]; fields2[0] = fieldCreate->createScalar("longVal", epics::pvData::pvLong); @@ -603,7 +603,7 @@ void testStructure() { delete pvStructure2; - cout<<"!!! PASSED\n\n"; + ofile<<"!!! PASSED\n\n"; } /* @@ -625,16 +625,27 @@ void testStructure() { */ 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; flusher = new SerializableControlImpl(); control = new DeserializableControlImpl(); buffer = new ByteBuffer(1<<16); - testScalarEquals(); - testScalar(); - testArray(); - testScalarNonInitialized(); - testArrayNonInitialized(); - testStructure(); + testScalarEquals(*out); + testScalar(*out); + testArray(*out); + testScalarNonInitialized(*out); + testArrayNonInitialized(*out); + testStructure(*out); //testIntrospectionSerialization(); delete buffer; @@ -642,9 +653,8 @@ int main(int argc, char *argv[]) { delete flusher; epicsExitCallAtExits(); - CDRMonitor::get().show(stdout); - cout<<"\nDone!\n"; + (*out)<<"Done.\n"<