void test_builder() { testDiag("test_builder"); NTEnumBuilderPtr builder = NTEnum::createBuilder(); testOk(builder.get() != 0, "Got builder"); StructureConstPtr structure = builder-> addDescriptor()-> addAlarm()-> addTimeStamp()-> add("valueAlarm",standardField->doubleAlarm()) -> add("extra",fieldCreate->createScalarArray(pvString)) -> createStructure(); testOk1(structure.get() != 0); if (!structure) return; testOk1(NTEnum::is_a(structure)); testOk1(structure->getID() == NTEnum::URI); testOk1(structure->getNumberFields() == 6); testOk1(structure->getField("value").get() != 0); testOk1(structure->getField("descriptor").get() != 0); testOk1(structure->getField("alarm").get() != 0); testOk1(structure->getField("timeStamp").get() != 0); FieldConstPtr valueField = structure->getField("value"); testOk(valueField.get() != 0 && ntField->isEnumerated(valueField), "value is enum"); std::cout << *structure << std::endl; }
void test_builder() { testDiag("test_builder"); NTScalarBuilderPtr builder = NTScalar::createBuilder(); testOk(builder.get() != 0, "Got builder"); StructureConstPtr structure = builder-> value(pvDouble)-> addDescriptor()-> addAlarm()-> addTimeStamp()-> addDisplay()-> addControl()-> add("valueAlarm",standardField->doubleAlarm()) -> add("extra",fieldCreate->createScalarArray(pvString)) -> createStructure(); testOk1(structure.get() != 0); if (!structure) return; testOk1(NTScalar::is_a(structure)); testOk1(structure->getID() == NTScalar::URI); testOk1(structure->getNumberFields() == 8); testOk1(structure->getField("value").get() != 0); testOk1(structure->getField("descriptor").get() != 0); testOk1(structure->getField("alarm").get() != 0); testOk1(structure->getField("timeStamp").get() != 0); testOk1(structure->getField("display").get() != 0); testOk1(structure->getField("control").get() != 0); testOk(dynamic_pointer_cast<const Scalar>(structure->getField("value")).get() != 0 && dynamic_pointer_cast<const Scalar>(structure->getField("value"))->getScalarType() == pvDouble, "value type"); std::cout << *structure << std::endl; // no value set try { structure = builder-> addDescriptor()-> addAlarm()-> addTimeStamp()-> addDisplay()-> addControl()-> createStructure(); testFail("no value type set"); } catch (std::runtime_error &) { testPass("no value type set"); } }
void testPVNTField() { testDiag("testPVNTField"); StringArray choices; choices.resize(3); choices[0] = "one"; choices[1] = "two"; choices[2] = "three"; PVStructurePtr pvStructure = PVStructurePtr( pvntField->createEnumerated(choices)); cout << *pvStructure << endl; testOk1(ntField->isEnumerated(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createTimeStamp()); cout << *pvStructure << endl; testOk1(ntField->isTimeStamp(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createAlarm()); cout << *pvStructure << endl; testOk1(ntField->isAlarm(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createDisplay()); cout << *pvStructure << endl; testOk1(ntField->isDisplay(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvDataCreate->createPVStructure(standardField->doubleAlarm())); cout << *pvStructure << endl; testOk1(ntField->isAlarmLimit(pvStructure->getStructure())); PVStructureArrayPtr pvStructureArray = PVStructureArrayPtr( pvntField->createEnumeratedArray()); cout << *pvStructure << endl; cout << *pvStructureArray->getStructureArray()->getStructure(); pvStructureArray = PVStructureArrayPtr( pvntField->createTimeStampArray()); cout << *pvStructure << endl; cout << *pvStructureArray->getStructureArray()->getStructure(); pvStructureArray = PVStructureArrayPtr( pvntField->createAlarmArray()); cout << *pvStructure << endl; cout << *pvStructureArray->getStructureArray()->getStructure(); }
void testNTField() { testDiag("testNTField"); StructureConstPtr structureConstPtr = ntField->createEnumerated(); cout << *structureConstPtr << endl; testOk1(ntField->isEnumerated(structureConstPtr)); structureConstPtr = ntField->createTimeStamp(); cout << *structureConstPtr << endl; testOk1(ntField->isTimeStamp(structureConstPtr)); structureConstPtr = ntField->createAlarm(); cout << *structureConstPtr << endl; testOk1(ntField->isAlarm(structureConstPtr)); structureConstPtr = ntField->createDisplay(); cout << *structureConstPtr << endl; testOk1(ntField->isDisplay(structureConstPtr)); structureConstPtr = standardField->doubleAlarm(); cout << *structureConstPtr << endl; testOk1(ntField->isAlarmLimit(structureConstPtr)); structureConstPtr = ntField->createControl(); cout << *structureConstPtr << endl; testOk1(ntField->isControl(structureConstPtr)); StructureArrayConstPtr structureArrayConstPtr = ntField->createEnumeratedArray(); cout << *structureConstPtr << endl; structureArrayConstPtr = ntField->createTimeStampArray(); cout << *structureConstPtr << endl; structureArrayConstPtr = ntField->createAlarmArray(); cout << *structureConstPtr << endl; }