a complete set of tests for PVData now exists

This commit is contained in:
Marty Kraimer
2010-11-04 09:38:53 -04:00
parent 7f03a52200
commit 4f871aae05
55 changed files with 8326 additions and 1127 deletions

View File

@@ -126,7 +126,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
bool value =
((from.compare("true")==0) ? true : false);
pv->put(value);
break;
return;
}
case pvByte : {
PVByte *pv = (PVByte*)pvScalar;
@@ -134,7 +134,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
sscanf(from.c_str(),"%d",&ival);
int8 value = ival;
pv->put(value);
break;
return;
}
case pvShort : {
PVShort *pv = (PVShort*)pvScalar;
@@ -142,7 +142,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
sscanf(from.c_str(),"%d",&ival);
int16 value = ival;
pv->put(value);
break;
return;
}
case pvInt : {
PVInt *pv = (PVInt*)pvScalar;
@@ -150,7 +150,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
sscanf(from.c_str(),"%d",&ival);
int32 value = ival;
pv->put(value);
break;
return;
}
case pvLong : {
PVLong *pv = (PVLong*)pvScalar;
@@ -158,26 +158,26 @@ void Convert::fromString(PVScalar *pvScalar, String from)
sscanf(from.c_str(),"%lld",&ival);
int64 value = ival;
pv->put(value);
break;
return;
}
case pvFloat : {
PVFloat *pv = (PVFloat*)pvScalar;
float value;
sscanf(from.c_str(),"%f",&value);
pv->put(value);
break;
return;
}
case pvDouble : {
PVDouble*pv = (PVDouble*)pvScalar;
double value;
sscanf(from.c_str(),"%lf",&value);
pv->put(value);
break;
return;
}
case pvString: {
PVString *value = (PVString*)pvScalar;
value->put(from);
break;
return;
}
}
String message("Convert::fromString unknown scalarType ");
@@ -3056,7 +3056,13 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
return convertStructureArray(buffer,(PVStructureArray*)pv,indentLevel);
}
PVScalar *pvScalar = (PVScalar*)pv;
switch(pvScalar->getScalar()->getScalarType()) {
ScalarConstPtr pscalar = pvScalar->getScalar();
ScalarType scalarType = pscalar->getScalarType();
ScalarTypeFunc::toString(buffer,scalarType);
*buffer += " ";
*buffer += pscalar->getFieldName();
*buffer += " ";
switch(scalarType) {
case pvBoolean: {
PVBoolean *data = (PVBoolean*)pv;
bool value = data->get();
@@ -3121,30 +3127,28 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
void convertStructure(StringBuilder buffer,PVStructure *data,int indentLevel)
{
convert->newLine(buffer, indentLevel);
*buffer += "structure {";
*buffer += "structure ";
*buffer += data->getField()->getFieldName();
convert->newLine(buffer, indentLevel+1);
PVFieldPtrArray fieldsData = data->getPVFields();
if (fieldsData != 0) {
int length = data->getStructure()->getNumberFields();
for(int i=0; i<length; i++) {
PVField *fieldField = fieldsData[i];
FieldConstPtr fieldnow = fieldField->getField();
convert->newLine(buffer, indentLevel + 1);
int size = fieldnow->getFieldName().length();
char buff[size+2];
sprintf(buff,"%s = ",fieldnow->getFieldName().c_str());
*buffer += buff;
convert->getString(buffer,fieldField,indentLevel + 1);
fieldField->toString(buffer,indentLevel + 1);
if(i<length-1) convert->newLine(buffer, indentLevel+1);
}
}
convert->newLine(buffer, indentLevel);
*buffer += "}";
}
void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
{
ScalarArrayConstPtr array = pv->getScalarArray();
ScalarType type = array->getElementType();
ScalarTypeFunc::toString(buffer,type);
*buffer += "Array ";
*buffer += array->getFieldName();
*buffer += " ";
switch(type) {
case pvBoolean: {
PVBooleanArray *pvdata = (PVBooleanArray*)pv;
@@ -3313,9 +3317,17 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
void convertStructureArray(StringBuilder buffer,
PVStructureArray * pvdata,int indentLevel)
{
*buffer += "structureArray ";
*buffer += pvdata->getField()->getFieldName();
*buffer += " ";
StructureArrayData data = StructureArrayData();
int length = pvdata->getLength();
pvdata->get(0, length, &data);
if(length<=0) {
*buffer += " []";
return;
}
convert->newLine(buffer, indentLevel);
*buffer += "[";
for (int i = 0; i < length; i++) {
if (i != 0) {