Index: sources/utility/format.cpp =================================================================== diff -u -rae97f70129df818530bcb70c934c42fa28eb6034 -rfd9d9c1f190781f5ff1bc23a732f9424f9434002 --- sources/utility/format.cpp (.../format.cpp) (revision ae97f70129df818530bcb70c934c42fa28eb6034) +++ sources/utility/format.cpp (.../format.cpp) (revision fd9d9c1f190781f5ff1bc23a732f9424f9434002) @@ -39,6 +39,12 @@ return string; } +/*! + * \brief Format::fromVariant + * \details This static method converts the defined types into QByteArray + * \param vData - The value + * \return The QByteAttay of the value vData if can't be converted 0xFF will be returned + */ QByteArray Format::fromVariant(const QVariant &vData) { QByteArray mData; @@ -55,24 +61,21 @@ if ( vData.type() == static_cast(QMetaType::Float) || vData.type() == QVariant::Double ) { Types::F32 f32; - bool ok = false; - f32.value = vData.toFloat(&ok); + f32.value = vData.toFloat(); Types::setValue(f32, mData); return mData; } if ( vData.type() == QVariant::UInt ) { Types::U32 u32; - bool ok = false; - u32.value = vData.toUInt(&ok); + u32.value = vData.toUInt(); Types::setValue(u32, mData); return mData; } if ( vData.type() == QVariant::Int ) { Types::S32 s32; - bool ok = false; - s32.value = vData.toInt(&ok); + s32.value = vData.toInt(); Types::setValue(s32, mData); return mData; } @@ -85,7 +88,12 @@ return mData; } - mData += vData.toUInt(); + if ( vData.type() == QVariant::Bool ) { + mData += vData.toUInt(); + return mData; + } + + mData += 0xFF; return mData; } Index: unittests/tst_utilities.cpp =================================================================== diff -u -rae97f70129df818530bcb70c934c42fa28eb6034 -rfd9d9c1f190781f5ff1bc23a732f9424f9434002 --- unittests/tst_utilities.cpp (.../tst_utilities.cpp) (revision ae97f70129df818530bcb70c934c42fa28eb6034) +++ unittests/tst_utilities.cpp (.../tst_utilities.cpp) (revision fd9d9c1f190781f5ff1bc23a732f9424f9434002) @@ -160,14 +160,30 @@ QCOMPARE(Format::fromVariant(vl).toHex(), ba.toHex()); } -void tst_utilities::tst_fromvariant_Else() +void tst_utilities::tst_fromvariant_Bool_True() { bool b = true; QByteArray ba; ba += 0x01; QCOMPARE(Format::fromVariant(b).toHex(), ba.toHex()); } +void tst_utilities::tst_fromvariant_Bool_False() +{ + bool b = false; + QByteArray ba; + ba += '\0'; + QCOMPARE(Format::fromVariant(b).toHex(), ba.toHex()); +} + +void tst_utilities::tst_fromvariant_Undefined() +{ + QTime t; // Any undefied type which is not defined in the Format::fromVariant + QByteArray ba; + ba += 0xFF; + QCOMPARE(Format::fromVariant(t.currentTime()).toHex(), ba.toHex()); +} + void tst_utilities::tst_getValue_len() { Types::S32 vFlowSetPoint; Index: unittests/tst_utilities.h =================================================================== diff -u -rd3f916066c2d10c10fffa91fd8a7e5ac6dd86c7d -rfd9d9c1f190781f5ff1bc23a732f9424f9434002 --- unittests/tst_utilities.h (.../tst_utilities.h) (revision d3f916066c2d10c10fffa91fd8a7e5ac6dd86c7d) +++ unittests/tst_utilities.h (.../tst_utilities.h) (revision fd9d9c1f190781f5ff1bc23a732f9424f9434002) @@ -38,7 +38,9 @@ void tst_fromvariant_Int_Pos(); void tst_fromvariant_Int_Neg(); void tst_fromvariant_List(); - void tst_fromvariant_Else(); + void tst_fromvariant_Bool_True(); + void tst_fromvariant_Bool_False(); + void tst_fromvariant_Undefined(); void tst_safeIncrement_StepZero(); void tst_safeIncrement_GtMaxValue_Step1 ();