358 lines
13 KiB
C++
358 lines
13 KiB
C++
/* testPVscalar.cpp */
|
|
/* Author: Marty Kraimer Date: 2010.09 */
|
|
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
#include "requester.h"
|
|
#include "pvIntrospect.h"
|
|
#include "pvData.h"
|
|
#include "standardField.h"
|
|
|
|
using namespace epics::pvData;
|
|
|
|
static FieldCreate * pfieldCreate = 0;
|
|
static PVDataCreate *pvDataCreate = 0;
|
|
static String buffer("");
|
|
|
|
void testBoolean() {
|
|
printf("\ntestBoolean\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvBoolean);
|
|
PVBoolean *pvValue = (PVBoolean *)pvScalar;
|
|
bool value = epicsTrue;
|
|
pvValue->put(value);
|
|
bool getValue = pvValue->get();
|
|
printf("put %s get %s\n",
|
|
((value==epicsFalse) ? "false" : "true"),
|
|
((getValue==epicsFalse) ? "false" : "true"));
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %s get %s\n",
|
|
((value==epicsFalse) ? "false" : "true"),
|
|
((getValue==epicsFalse) ? "false" : "true"));
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
PVScalar *other = getStandardField()->scalarValue(pvDouble);
|
|
bool isEqual = pvScalar==other;
|
|
printf("expect false isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testByte() {
|
|
printf("\ntestByte\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvByte);
|
|
PVByte *pvValue = (PVByte *)pvScalar;
|
|
epicsInt8 value = 2;
|
|
pvValue->put(value);
|
|
int getValue = pvValue->get();
|
|
printf("put %d get %d\n",value,getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %d get %d\n",value,getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
PVScalar *other = getStandardField()->scalarValue(pvDouble);
|
|
bool isEqual = pvScalar==other;
|
|
printf("expect false isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testShort() {
|
|
printf("\ntestShort\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvShort);
|
|
PVShort *pvValue = (PVShort *)pvScalar;
|
|
epicsInt16 value = 2;
|
|
pvValue->put(value);
|
|
int getValue = pvValue->get();
|
|
printf("put %d get %d\n",value,getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %d get %d\n",value,getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
PVScalar *other = getStandardField()->scalarValue(pvDouble);
|
|
bool isEqual = pvScalar==other;
|
|
printf("expect false isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testInt() {
|
|
printf("\ntestInt\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvInt);
|
|
PVInt *pvValue = (PVInt *)pvScalar;
|
|
epicsInt32 value = 2;
|
|
pvValue->put(value);
|
|
int getValue = pvValue->get();
|
|
printf("put %d get %d\n",value,getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %d get %d\n",value,getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
PVScalar *other = getStandardField()->scalarValue(pvDouble);
|
|
bool isEqual = pvScalar==other;
|
|
printf("expect false isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testLong() {
|
|
printf("\ntestLong\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvLong);
|
|
PVLong *pvValue = (PVLong *)pvScalar;
|
|
epicsInt64 value = 2;
|
|
pvValue->put(value);
|
|
epicsInt64 getValue = pvValue->get();
|
|
printf("put %ld get %ld\n",(long int)value,(long int)getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %ld get %ld\n",(long int)value,(long int)getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
PVScalar *other = getStandardField()->scalarValue(pvDouble);
|
|
bool isEqual = pvScalar==other;
|
|
printf("expect false isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testFloat() {
|
|
printf("\ntestFloat\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvFloat);
|
|
PVFloat *pvValue = (PVFloat *)pvScalar;
|
|
float value = 2;
|
|
pvValue->put(value);
|
|
float getValue = pvValue->get();
|
|
printf("put %f get %f\n",value,getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %f get %f\n",value,getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
bool isEqual = pvScalar==pvScalar;
|
|
printf("expect true isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testDouble() {
|
|
printf("\ntestDouble\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvDouble);
|
|
PVDouble *pvValue = (PVDouble *)pvScalar;
|
|
double value = 2;
|
|
pvValue->put(value);
|
|
double getValue = pvValue->get();
|
|
printf("put %lf get %lf\n",value,getValue);
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %lf get %lf\n",value,getValue);
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
bool isEqual = pvScalar==pvScalar;
|
|
printf("expect true isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
void testString() {
|
|
printf("\ntestString\n");
|
|
PVScalar *pvScalar = getStandardField()->scalarValue(pvString);
|
|
PVString *pvValue = (PVString *)pvScalar;
|
|
String value = "testString";
|
|
pvValue->put(value);
|
|
String getValue = pvValue->get();
|
|
printf("put %s get %s\n",value.c_str(),getValue.c_str());
|
|
if(value!=getValue) {
|
|
fprintf(stderr,"ERROR getValue put %s get %s\n",
|
|
value.c_str(),getValue.c_str());
|
|
}
|
|
FieldConstPtr field = pvValue->getField();
|
|
buffer.clear();
|
|
field->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
bool isImmutable = pvValue->isImmutable();
|
|
PVStructure *pvParent = pvValue->getParent();
|
|
printf("immutable %s parent %p\n",
|
|
((isImmutable==epicsFalse) ? "false" : "true"),
|
|
pvParent);
|
|
int offset = pvValue->getFieldOffset();
|
|
int nextOffset = pvValue->getNextFieldOffset();
|
|
int numberFields = pvValue->getNumberFields();
|
|
printf("offset %d nextOffset %d numberFields %d\n",
|
|
offset,nextOffset,numberFields);
|
|
ScalarConstPtr scalar = dynamic_cast<ScalarConstPtr>(field);
|
|
if(scalar!=field) {
|
|
fprintf(stderr,"ERROR field!=scalar field %p scalar %p\n",field,scalar);
|
|
}
|
|
buffer.clear();
|
|
buffer += "value ";
|
|
pvValue->toString(&buffer);
|
|
printf("%s\n",buffer.c_str());
|
|
pvScalar->message(String("this is a test message"),infoMessage);
|
|
bool isEqual = pvScalar==pvScalar;
|
|
printf("expect true isEqual %s\n",(isEqual ? "true" : "false"));
|
|
delete pvValue;
|
|
}
|
|
|
|
int main(int argc,char *argv[])
|
|
{
|
|
pfieldCreate = getFieldCreate();
|
|
pvDataCreate = getPVDataCreate();
|
|
testBoolean();
|
|
testByte();
|
|
testShort();
|
|
testInt();
|
|
testLong();
|
|
testFloat();
|
|
testDouble();
|
|
testString();
|
|
return(0);
|
|
}
|
|
|