10 #ifndef RAWDAQDATACONSTRUCTOR_H 11 #define RAWDAQDATACONSTRUCTOR_H 12 #include "DAQDataFormats/RawDAQData.h" 16 #include <boost/lexical_cast.hpp> 18 #define CHECK_FIELD(FIELD_NAME) \ 19 bool checkField_##FIELD_NAME(daqdataformats::CURRENT_CLASS* dataformat) const { \ 20 if(!setFieldToTestValue_##FIELD_NAME(dataformat)) { \ 21 LOG_ERROR("UNITTEST") << std::endl<< __PRETTY_FUNCTION__ \ 22 <<"\nsetFieldToTestValue_"<<#FIELD_NAME<<" failed.\n" \ 23 <<"Test value = "<<TEST_VALUE_##FIELD_NAME<<"\n"; \ 24 if(getVersion(dataformat) > rawdaqdataformat::DAQDATAFORMAT_UNKNOWN_VERSION)\ 25 LOG_ERROR("UNITTEST")<<"version = "<<getVersion(dataformat)<<"\n"; \ 28 if(getFieldValue_##FIELD_NAME(dataformat) != TEST_VALUE_##FIELD_NAME){ \ 29 LOG_ERROR("UNITTEST") << std::endl<< __PRETTY_FUNCTION__ \ 30 <<"\ngetFieldToTestValue_"<<#FIELD_NAME<<" failed.\n" \ 31 <<"Test value = "<<TEST_VALUE_##FIELD_NAME \ 33 << getFieldValue_##FIELD_NAME(dataformat)<<"\n"; \ 34 if(getVersion(dataformat) > rawdaqdataformat::DAQDATAFORMAT_UNKNOWN_VERSION)\ 35 LOG_ERROR("UNITTEST")<<"version = "<<getVersion(dataformat)<<"\n"; \ 39 std::string suceed_string = "Checking BitField in "; \ 40 suceed_string.append(__PRETTY_FUNCTION__); \ 41 suceed_string.append(" field "); \ 42 suceed_string.append(#FIELD_NAME); \ 43 suceed_string.append(" suceeded for version = "); \ 44 suceed_string.append(boost::lexical_cast<std::string>(getVersion(dataformat))); \ 45 suceed_string.append(" (set to "); \ 46 suceed_string.append(boost::lexical_cast<std::string>(TEST_VALUE_##FIELD_NAME)); \ 47 suceed_string.append(" received "); \ 48 suceed_string.append(boost::lexical_cast<std::string>(getFieldValue_##FIELD_NAME(dataformat))); \ 49 suceed_string.append(")."); \ 51 if(!setFieldToZeroValue_##FIELD_NAME(dataformat)){ \ 52 LOG_ERROR("UNITTEST")<<"\nsetFieldToZeroValue_"<<#FIELD_NAME<<" failed.\n" \ 53 <<"version = "<<getVersion(dataformat)<<"\n"; \ 56 if(getFieldValue_##FIELD_NAME(dataformat) != 0) { \ 57 LOG_ERROR("UNITTEST")<<"\ngetFieldValue_"<<#FIELD_NAME<<" failed.\n" \ 59 <<" but get is "<<getFieldValue_##FIELD_NAME(dataformat)<<"\n" \ 60 <<"version = "<<getVersion(dataformat)<<"\n"; \ 63 LOG_DEBUG("UNITTEST")<< suceed_string; \ 67 #define DEFINE_TESTVALUE_CUSTOM(FIELD_NAME, TYPE) \ 68 bool setFieldToTestValue_##FIELD_NAME(daqdataformats::CURRENT_CLASS* dataformat) const {return dataformat->set##FIELD_NAME(boost::lexical_cast< TYPE >(TEST_VALUE_##FIELD_NAME));} \ 69 bool setFieldToZeroValue_##FIELD_NAME(daqdataformats::CURRENT_CLASS* dataformat) const {return dataformat->set##FIELD_NAME(boost::lexical_cast< TYPE >(0));} \ 70 uint64_t getFieldValue_##FIELD_NAME(const daqdataformats::CURRENT_CLASS* dataformat) const {return boost::lexical_cast<uint64_t> (dataformat->get##FIELD_NAME());} \ 71 CHECK_FIELD(FIELD_NAME) 73 #define DEFINE_TESTVALUE(FIELD_NAME) DEFINE_TESTVALUE_CUSTOM(FIELD_NAME, uint32_t) 74 #define DEFINE_TESTVALUE_BOOL(FIELD_NAME) DEFINE_TESTVALUE_CUSTOM(FIELD_NAME, bool) 75 #define DEFINE_TESTVALUE_64(FIELD_NAME) DEFINE_TESTVALUE_CUSTOM(FIELD_NAME, uint64_t) 77 #define DEFINE_TESTVALUE_IS(FIELD_NAME) \ 78 bool setFieldToTestValue_##FIELD_NAME(daqdataformats::CURRENT_CLASS* dataformat) const {return dataformat->set##FIELD_NAME(boost::lexical_cast<bool>(TEST_VALUE_##FIELD_NAME));} \ 79 bool setFieldToZeroValue_##FIELD_NAME(daqdataformats::CURRENT_CLASS* dataformat) const {return dataformat->set##FIELD_NAME(boost::lexical_cast<bool>(0));} \ 80 uint64_t getFieldValue_##FIELD_NAME(const daqdataformats::CURRENT_CLASS* dataformat) const {return boost::lexical_cast<uint64_t> (dataformat->is##FIELD_NAME());} \ 81 CHECK_FIELD(FIELD_NAME) 85 #define ASSERT_CHECK_FIELD(FIELD_NAME) CPPUNIT_ASSERT(_mainDFConstructor->checkField_##FIELD_NAME(df)); 87 #define ASSERT_PRINT_IS_NOT_UNKNOWN CPPUNIT_ASSERT(!isPrintDataFormatUnknownVersion(df)); 90 #define ASSERT_GET_IS_NOT_ALLOWED(FIELD_NAME) \ 92 bool succeed = true; \ 94 _mainDFConstructor->getFieldValue_##FIELD_NAME(df); \ 96 catch(daqdataformats::DataFormatException& e){ \ 100 LOG_ERROR("UNITTEST")<<"Getting " \ 103 <<"Should have failed\n"; \ 105 CPPUNIT_ASSERT(!succeed); \ 109 #define ASSERT_SET_IS_NOT_ALLOWED(FIELD_NAME) \ 111 bool succeed = true; \ 113 _mainDFConstructor->setFieldToTestValue_##FIELD_NAME(df); \ 115 catch(daqdataformats::DataFormatException& e){ \ 119 LOG_ERROR("UNITTEST")<<"Setting " \ 122 <<"Should have failed\n"; \ 124 CPPUNIT_ASSERT(!succeed); \ 128 #define ASSERT_GETANDSET_IS_NOT_ALLOWED(FIELD_NAME) ASSERT_GET_IS_NOT_ALLOWED(FIELD_NAME) \ 129 ASSERT_SET_IS_NOT_ALLOWED(FIELD_NAME) 156 uint32_t
boolToUint32_t (
const bool number )
const {
return ((number) ? 1 : 0); }
157 bool uint32_tToBool (
const uint32_t number )
const {
return ((number) ?
true :
false); }