Files
pvData/testApp/pv/testStandardField.cpp
2014-06-19 14:27:48 +02:00

77 lines
2.4 KiB
C++

/* testStandardField.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: 2012.08 */
#include <cstddef>
#include <cstdlib>
#include <cstddef>
#include <string>
#include <cstdio>
#include <sstream>
#include <epicsUnitTest.h>
#include <testMain.h>
#include <pv/requester.h>
#include <pv/pvIntrospect.h>
#include <pv/pvData.h>
#include <pv/convert.h>
#include <pv/standardField.h>
using namespace epics::pvData;
using std::tr1::static_pointer_cast;
using std::string;
static bool debug = false;
static FieldCreatePtr fieldCreate = getFieldCreate();
static StandardFieldPtr standardField = getStandardField();
static void print(const string& name, FieldConstPtr const & f)
{
if(debug) {
std::cout << std::endl << name << std::endl << *f << std::endl;
}
}
MAIN(testStandardField)
{
testPlan(1);
StructureConstPtr doubleValue = standardField->scalar(pvDouble,
"alarm,timeStamp,display,control,valueAlarm");
print("doubleValue", doubleValue);
StructureConstPtr stringArrayValue = standardField->scalarArray(pvString,
"alarm,timeStamp");
print("stringArrayValue", stringArrayValue);
StructureConstPtr enumeratedValue = standardField->enumerated(
"alarm,timeStamp,valueAlarm");
print("enumeratedValue", enumeratedValue);
FieldConstPtrArray fields;
fields.reserve(2);
fields.push_back(fieldCreate->createScalar(pvDouble));
fields.push_back(fieldCreate->createScalarArray(pvDouble));
StringArray fieldNames;
fieldNames.reserve(2);
fieldNames.push_back("scalarValue");
fieldNames.push_back("arrayValue");
StructureConstPtr structure = fieldCreate->createStructure(fieldNames, fields);
StructureConstPtr structureArrayValue = standardField->structureArray(structure, "alarm,timeStamp");
print("structureArrayValue", structureArrayValue);
StructureConstPtr punion = standardField->regUnion(
fieldCreate->createFieldBuilder()->
add("doubleValue", pvDouble)->
add("intValue", pvInt)->
add("timeStamp",standardField->timeStamp())->
createUnion(),
"alarm,timeStamp");
print("unionValue", punion);
testPass("testStandardField");
return testDone();
}