diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2018-02-05 21:10:49 +0100 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2018-02-19 07:35:15 +0000 |
commit | 77b48d3d956b6de9dab7cb89bc3285eead63f734 (patch) | |
tree | faa54ab3ac4d56f0090c8403c9e94038137e1726 /tests | |
parent | 1399a77954ec4b40fa14b75218e046e76d1324bc (diff) |
QCanBusDevice: Add readAllFrames() and clear() functions
[ChangeLog][QCanBusDevice] Added functions to read all frames
from the receive buffer and to clear the receive or transmit
buffer.
Task-number: QTBUG-66143
Change-Id: I0b2f9bd0044c688f6a3261ccce8c22b9e58dfea8
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.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp b/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp index cf18c4a..f6f3d50 100644 --- a/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp +++ b/tests/auto/qcanbusdevice/tst_qcanbusdevice.cpp @@ -143,6 +143,9 @@ private slots: void conf(); void write(); void read(); + void readAll(); + void clearInputBuffer(); + void clearOutputBuffer(); void error(); void cleanupTestCase(); void tst_filtering(); @@ -271,6 +274,61 @@ void tst_QCanBusDevice::read() QVERIFY(frame2.isValid()); } +void tst_QCanBusDevice::readAll() +{ + enum { FrameNumber = 10 }; + device->disconnectDevice(); + QVERIFY(device->connectDevice()); + QTRY_VERIFY_WITH_TIMEOUT(device->state() == QCanBusDevice::ConnectedState, 5000); + + for (int i = 0; i < FrameNumber; ++i) + device->triggerNewFrame(); + + const QVector<QCanBusFrame> frames = device->readAllFrames(); + QCOMPARE(FrameNumber, frames.size()); + QVERIFY(!device->framesAvailable()); +} + +void tst_QCanBusDevice::clearInputBuffer() +{ + device->disconnectDevice(); + QVERIFY(!device->clear(QCanBusDevice::Input)); + + QVERIFY(device->connectDevice()); + QTRY_VERIFY_WITH_TIMEOUT(device->state() == QCanBusDevice::ConnectedState, 5000); + + for (int i = 0; i < 10; ++i) + device->triggerNewFrame(); + + QVERIFY(device->clear(QCanBusDevice::Input)); + + QVERIFY(!device->framesAvailable()); +} + +void tst_QCanBusDevice::clearOutputBuffer() +{ + // this test requires buffered writing + device->setWriteBuffered(true); + device->disconnectDevice(); + QVERIFY(!device->clear(QCanBusDevice::Output)); + + QVERIFY(device->connectDevice()); + + // first test buffered writing, frames will be written after some delay + QSignalSpy spy(device.data(), &QCanBusDevice::framesWritten); + for (int i = 0; i < 10; ++i) + device->writeFrame(QCanBusFrame(0x123, "output")); + QTRY_VERIFY_WITH_TIMEOUT(spy.count() == 10, 5000); + + // now test clearing the buffer before the frames are actually written + spy.clear(); + for (int i = 0; i < 10; ++i) + device->writeFrame(QCanBusFrame(0x123, "output")); + + device->clear(QCanBusDevice::Output); + QTRY_VERIFY_WITH_TIMEOUT(spy.count() == 0, 5000); +} + void tst_QCanBusDevice::error() { QSignalSpy spy(device.data(), &QCanBusDevice::errorOccurred); |