/*! * * Copyright (c) 2020-2025 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file tst_utilities.cpp * \author (last) Dara Navaei * \date (last) 05-Feb-2024 * \author (original) Behrouz NematiPour * \date (original) 08-Jan-2020 * */ #include "tst_utilities.h" // Qt // Project #include "types.h" /*! * \brief tst_utilities::tst_utilities * \details Constructor * \param parent - QObject parent owner object. * Qt handles the children destruction by their parent objects life-cycle. */ tst_utilities::tst_utilities(QObject *parent) : QObject(parent) { } void tst_utilities::tst_floatCompare_noMatch() { QVERIFY( ! Types::floatCompare(1.002,1.003)); } void tst_utilities::tst_floatCompare_isMatch() { QVERIFY( Types::floatCompare(1.354,1.354)); } void tst_utilities::tst_getbits_NoError() { QByteArray ba = QByteArray::fromHex("a5"); Types::Flags flg; int i = 0; QVERIFY( Types::getBits(ba,i,flg,8)); } void tst_utilities::tst_getbits_IsError() { QByteArray ba = QByteArray::fromHex("a5"); Types::Flags flg; int i = 0; QVERIFY( ! Types::getBits(ba,i,flg,9)); } void tst_utilities::tst_fromvariant_NoString() { char c = 64; QByteArray ba; ba += '@'; ba += '\0'; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(c), ba); } void tst_utilities::tst_fromvariant_IsString() { QCOMPARE(Format::fromVariant("@"), "@"); } void tst_utilities::tst_fromvariant_ByteArray() { QByteArray ba; ba += '@'; ba += '\0'; ba += '\0'; ba += '\0'; QVariant var(ba); QCOMPARE(Format::fromVariant(var), ba); } void tst_utilities::tst_fromvariant_Float() { float f = 12.5; QByteArray ba; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; QCOMPARE(Format::fromVariant(f).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_UInt() { quint32 ui = 65500; QByteArray ba; ba += 0xDC; ba += 0xFF; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(ui).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Int_Pos() { qint32 pi = 32700; QByteArray ba; ba += 0xBC; ba += 0x7F; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(pi).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Int_Neg() { qint32 ni = -32700; QByteArray ba; ba += 0x44; ba += 0x80; ba += 0xFF; ba += 0xFF; QCOMPARE(Format::fromVariant(ni).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_List() { quint32 ui = 65500 ; float f = 12.5 ; qint32 pi = 32700 ; qint32 ni = -32700 ; QVariantList vl; vl += 12.5; // float with no type is double in QVariant vl += f; vl += ui; vl += pi; vl += ni; QByteArray ba; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; ba += 0xDC; ba += 0xFF; ba += '\0'; ba += '\0'; ba += 0xBC; ba += 0x7F; ba += '\0'; ba += '\0'; ba += 0x44; ba += 0x80; ba += 0xFF; ba += 0xFF; QCOMPARE(Format::fromVariant(vl).toHex(), ba.toHex()); } 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 undefined type which is not defined in the Format::fromVariant QByteArray ba; ba += '\0'; QCOMPARE(Format::fromVariant(t.currentTime()).toHex(), ba.toHex()); } void tst_utilities::tst_toStringList_Default() { const QList data { "A", "B", "C", }; QStringList mActual = Format::toStringList(data); QStringList mExpected = { "A", "B", "C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_toStringList_RemoveDuplicate() { const QList data { "A", "B", "B", "C", }; QStringList mActual = Format::toStringList(data, true); QStringList mExpected = { "A", "B", "C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_toStringList_Prefix() { const QList data { "A", "B", "B", "C", }; QStringList mActual = Format::toStringList(data, true, "*"); QStringList mExpected = { "*A", "*B", "*C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_getValue_len_log() { bool ok = true; int index = 0; Types::S32 vFlowSetPoint; QByteArray data; data += 0xFF; ok = ! GetValue( data, index, vFlowSetPoint ) && ok; QVERIFY( ok ); } void tst_utilities::tst_getValue_len_lt() { bool ok = true; int index = 0; Types::S32 vP1; QByteArray data; data += 0x01; data += 0x02; data += 0x03; data += 0x04; data += 0x05; ok = GetValue( data, index, vP1 ) && ( vP1.value == 67305985 ) && ok; QVERIFY( ok ); } void tst_utilities::tst_getValue_len_eq() { bool ok = true; int index = 0; Types::S32 vP1; Types::U08 vP2; QByteArray data; data += 0x01; data += 0x02; data += 0x03; data += 0x04; data += 0x05; ok = GetValue( data, index, vP1 ) && ( vP1.value == 67305985 ) && ok; ok = GetValue( data, index, vP2 ) && ( vP2.value == 5 ) && ok; QVERIFY( ok ); } void tst_utilities::tst_getValue_len_gt() { bool ok = true; int index = 0; Types::S32 vP1; Types::U16 vP2; QByteArray data; data += 0x01; data += 0x02; data += 0x03; data += 0x04; data += 0x05; ok = GetValue( data, index, vP1 ) && ( vP1.value == 67305985 ) && ok; ok = ! GetValue( data, index, vP2 ) && ( vP2.value == 0 ) && ok; QVERIFY( ok ); } void tst_utilities::tst_safeIncrement_StepZero() { uchar c = 0; Types::safeIncrement(c, 0); QCOMPARE(c, 1); } void tst_utilities::tst_safeIncrement_GtMaxValue_Step10() { uchar c = 250; Types::safeIncrement(c, 10); QCOMPARE(c, 4); } void tst_utilities::tst_safeIncrement_GtMaxValue_Step1() { uchar c = 255; Types::safeIncrement(c); QCOMPARE(c, 0); }