From 46177e8b904b72d63002da43241fe7ddcd4310d5 Mon Sep 17 00:00:00 2001 From: Martin Killenberg <martin.killenberg@desy.de> Date: Fri, 13 Oct 2017 10:15:01 +0200 Subject: [PATCH] changed to test also check auto-creation of arrays. Currently failing because spectra are auto-created --- tests/src/testDoocsPVFactory.cpp | 43 +++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/tests/src/testDoocsPVFactory.cpp b/tests/src/testDoocsPVFactory.cpp index 4310d8e..2b72f0a 100644 --- a/tests/src/testDoocsPVFactory.cpp +++ b/tests/src/testDoocsPVFactory.cpp @@ -159,8 +159,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE( testCreateSpectrum, T, simple_test_types ){ } template<class DOOCS_T> -void testArrayIsCorrectType(DoocsPVFactory &factory, ArrayDescription::DataType dataType){ - auto description = std::make_shared<ArrayDescription>("A/fromDeviceArray1","A","fromDeviceArray1", dataType); +void testArrayIsCorrectType(DoocsPVFactory &factory, ArrayDescription::DataType dataType, std::string name = "fromDeviceArray1"){ + auto description = std::make_shared<ArrayDescription>("A/"+name,"A",name, dataType); boost::shared_ptr<D_fct> doocsVariableAsDFct = factory.create(description); // get the raw pointer and dynamic cast it to the expected type @@ -179,7 +179,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE( testCreateArray, T, simple_test_types ){ shared_ptr<DevicePVManager> devManager = pvManagers.second; static const size_t arraySize = 10; - devManager->createProcessArray<T>(controlSystemToDevice,"A/fromDeviceArray1",arraySize); + devManager->createProcessArray<T>(deviceToControlSystem,"A/fromDeviceArray1",arraySize); // we need this later anyway, do we make a temporary variable auto pvNames = ChimeraTK::getAllVariableNames( csManager ); @@ -196,6 +196,43 @@ BOOST_AUTO_TEST_CASE_TEMPLATE( testCreateArray, T, simple_test_types ){ testArrayIsCorrectType<D_doublearray>(factory, ArrayDescription::DataType::Double); } +BOOST_AUTO_TEST_CASE( testAutoCreateArray ){ + std::pair< shared_ptr<ControlSystemPVManager>, + shared_ptr<DevicePVManager> > pvManagers = createPVManager(); + shared_ptr<ControlSystemPVManager> csManager = pvManagers.first; + shared_ptr<DevicePVManager> devManager = pvManagers.second; + + static const size_t arraySize = 10; + devManager->createProcessArray<int8_t>(controlSystemToDevice,"A/toDeviceCharArray",arraySize); + devManager->createProcessArray<uint8_t>(controlSystemToDevice,"A/toDeviceUCharArray",arraySize); + devManager->createProcessArray<int16_t>(controlSystemToDevice,"A/toDeviceShortArray",arraySize); + devManager->createProcessArray<uint16_t>(controlSystemToDevice,"A/toDeviceUShortArray",arraySize); + devManager->createProcessArray<int32_t>(controlSystemToDevice,"A/toDeviceIntArray",arraySize); + devManager->createProcessArray<uint32_t>(controlSystemToDevice,"A/toDeviceUIntArray",arraySize); + devManager->createProcessArray<int64_t>(controlSystemToDevice,"A/toDeviceLongArray",arraySize); + devManager->createProcessArray<uint64_t>(controlSystemToDevice,"A/toDeviceULongArray",arraySize); + devManager->createProcessArray<float>(controlSystemToDevice,"A/toDeviceFloatArray",arraySize); + devManager->createProcessArray<double>(controlSystemToDevice,"A/toDeviceDoubleArray",arraySize); + + // we need this later anyway, do we make a temporary variable + auto pvNames = ChimeraTK::getAllVariableNames( csManager ); + + DoocsUpdater updater; + + DoocsPVFactory factory(&myEqFct, updater, csManager); + + testArrayIsCorrectType<D_bytearray>(factory, ArrayDescription::DataType::Auto, "toDeviceCharArray"); + testArrayIsCorrectType<D_bytearray>(factory, ArrayDescription::DataType::Auto, "toDeviceUCharArray"); + testArrayIsCorrectType<D_shortarray>(factory, ArrayDescription::DataType::Auto, "toDeviceShortArray"); + testArrayIsCorrectType<D_shortarray>(factory, ArrayDescription::DataType::Auto, "toDeviceUShortArray"); + testArrayIsCorrectType<D_intarray>(factory, ArrayDescription::DataType::Auto, "toDeviceIntArray"); + testArrayIsCorrectType<D_intarray>(factory, ArrayDescription::DataType::Auto, "toDeviceUIntArray"); + testArrayIsCorrectType<D_longarray>(factory, ArrayDescription::DataType::Auto, "toDeviceLongArray"); + testArrayIsCorrectType<D_longarray>(factory, ArrayDescription::DataType::Auto, "toDeviceULongArray"); + testArrayIsCorrectType<D_floatarray>(factory, ArrayDescription::DataType::Auto, "toDeviceFloatArray"); + testArrayIsCorrectType<D_doublearray>(factory, ArrayDescription::DataType::Auto, "toDeviceDoubleArray"); +} + BOOST_AUTO_TEST_CASE( testErrorHandling ){ std::pair< shared_ptr<ControlSystemPVManager>, shared_ptr<DevicePVManager> > pvManagers = createPVManager(); -- GitLab