summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2019-01-22 07:05:29 +0100
committerAndré Hartmann <aha_1980@gmx.de>2019-02-11 08:38:27 +0000
commiteca5edf45a8043b87852698a00dd05acf897ba2c (patch)
treeb5d35629a712b9ca9cd88ea7c1a6712defc460fd /tests
parent89df618efb7a5572fad04810b3f1ea8327c03b07 (diff)
QCanBusDevice::Filter: Add operators == and !=
[ChangeLog][QCanBusDevice] Added operators to compare QCanBusDevice::Filter for equality or inequality. Fixes: QTBUG-72979 Change-Id: I4cfedca5fcd0b4b8e300ad984b5c3065ca5b8a4f Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp b/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp
index 85d445f..24127d9 100644
--- a/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp
+++ b/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp
@@ -149,6 +149,8 @@ private slots:
void error();
void cleanupTestCase();
void tst_filtering();
+ void filterEqual_data();
+ void filterEqual();
void tst_bufferingAttribute();
void tst_waitForFramesReceived();
@@ -161,6 +163,7 @@ tst_QCanBusDevice::tst_QCanBusDevice()
{
qRegisterMetaType<QCanBusDevice::CanBusDeviceState>();
qRegisterMetaType<QCanBusDevice::CanBusError>();
+ qRegisterMetaType<QCanBusDevice::Filter>();
}
void tst_QCanBusDevice::initTestCase()
@@ -421,6 +424,89 @@ void tst_QCanBusDevice::tst_filtering()
QVERIFY(!(newFilter.at(1).format & QCanBusDevice::Filter::MatchExtendedFormat));
}
+void tst_QCanBusDevice::filterEqual_data()
+{
+ using Filter = QCanBusDevice::Filter;
+ using Frame = QCanBusFrame;
+
+ QTest::addColumn<QCanBusDevice::Filter>("first");
+ QTest::addColumn<QCanBusDevice::Filter>("second");
+ QTest::addColumn<bool>("isEqual");
+
+ auto filter = [](quint32 frameId, quint32 frameIdMask,
+ Frame::FrameType type,
+ Filter::FormatFilter format) {
+ Filter result;
+ result.frameId = frameId;
+ result.frameIdMask = frameIdMask;
+ result.type = type;
+ result.format = format;
+ return result;
+ };
+
+ QTest::newRow("empty-equal")
+ << Filter()
+ << Filter()
+ << true;
+ QTest::newRow("empty-default-equal")
+ << Filter()
+ << filter(0, 0, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << true;
+ QTest::newRow("empty-non-default-different")
+ << Filter()
+ << filter(1, 2, Frame::ErrorFrame, Filter::MatchBaseFormat)
+ << false;
+
+ QTest::newRow("frame-id-equal")
+ << filter(0x345, 0x800, Frame::RemoteRequestFrame, Filter::MatchBaseFormat)
+ << filter(0x345, 0x800, Frame::RemoteRequestFrame, Filter::MatchBaseFormat)
+ << true;
+ QTest::newRow("frame-id-different")
+ << filter(0x345, 0x000, Frame::RemoteRequestFrame, Filter::MatchBaseFormat)
+ << filter(0x346, 0x000, Frame::RemoteRequestFrame, Filter::MatchBaseFormat)
+ << false;
+
+ QTest::newRow("frame-mask-equal")
+ << filter(0x123, 0x7FF, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << filter(0x123, 0x7FF, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << true;
+ QTest::newRow("frame-mask-different")
+ << filter(0x123, 0x7FF, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << filter(0x123, 0x7FE, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << false;
+
+ QTest::newRow("frame-type-equal")
+ << filter(0xFFF, 0xBFF, Frame::DataFrame, Filter::MatchBaseAndExtendedFormat)
+ << filter(0xFFF, 0xBFF, Frame::DataFrame, Filter::MatchBaseAndExtendedFormat)
+ << true;
+ QTest::newRow("frame-type-different")
+ << filter(0xFFF, 0xBFF, Frame::DataFrame, Filter::MatchBaseAndExtendedFormat)
+ << filter(0xFFF, 0xBFF, Frame::InvalidFrame, Filter::MatchBaseAndExtendedFormat)
+ << false;
+
+ QTest::newRow("filter-equal")
+ << filter(0xFFF, 0xBFF, Frame::ErrorFrame, Filter::MatchExtendedFormat)
+ << filter(0xFFF, 0xBFF, Frame::ErrorFrame, Filter::MatchExtendedFormat)
+ << true;
+ QTest::newRow("filter-different")
+ << filter(0xFFF, 0xBFF, Frame::ErrorFrame, Filter::MatchExtendedFormat)
+ << filter(0xFFF, 0xBFF, Frame::ErrorFrame, Filter::MatchBaseAndExtendedFormat)
+ << false;
+}
+
+void tst_QCanBusDevice::filterEqual()
+{
+ QFETCH(QCanBusDevice::Filter, first);
+ QFETCH(QCanBusDevice::Filter, second);
+ QFETCH(bool, isEqual);
+
+ if (isEqual) {
+ QCOMPARE(first, second);
+ } else {
+ QVERIFY(first != second);
+ }
+}
+
void tst_QCanBusDevice::tst_bufferingAttribute()
{
std::unique_ptr<tst_Backend> canDevice(new tst_Backend);