Revision control

Copy as Markdown

// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
#include <QtSerialBus/qmodbusdevice.h>
class DummyDevice : public QModbusDevice
{
Q_OBJECT
friend class tst_QModbusDevice;
public:
DummyDevice()
{
qRegisterMetaType<QModbusDevice::State>("QModbusDevice::State");
}
protected:
bool open() override { return openState; }
void close() override {}
bool openState = false;
};
class tst_QModbusDevice : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void cleanupTestCase();
void connectDevice();
void disconnectDevice();
void state();
void error();
private:
DummyDevice *device;
};
void tst_QModbusDevice::initTestCase()
{
device = new DummyDevice();
}
void tst_QModbusDevice::cleanupTestCase()
{
delete device;
}
void tst_QModbusDevice::connectDevice()
{
device->openState = false;
QVERIFY(!device->connectDevice());
QCOMPARE(device->state(), QModbusDevice::UnconnectedState);
device->openState = true;
QVERIFY(device->connectDevice());
QCOMPARE(device->state(), QModbusDevice::ConnectingState);
device->disconnectDevice();
QCOMPARE(device->state(), QModbusDevice::ClosingState);
device->setState(QModbusDevice::ClosingState);
QVERIFY(!device->connectDevice());
}
void tst_QModbusDevice::disconnectDevice()
{
//see QTBUG-66648
DummyDevice dev;
QCOMPARE(dev.state(), QModbusDevice::UnconnectedState);
dev.disconnectDevice();
QCOMPARE(dev.state(), QModbusDevice::UnconnectedState);
}
void tst_QModbusDevice::state()
{
device->setState(QModbusDevice::ConnectedState);
QCOMPARE(device->state(), QModbusDevice::ConnectedState);
QSignalSpy spy(device, &DummyDevice::stateChanged);
device->setState(QModbusDevice::UnconnectedState);
QCOMPARE(device->state(), QModbusDevice::UnconnectedState);
device->setState(QModbusDevice::UnconnectedState);
QCOMPARE(device->state(), QModbusDevice::UnconnectedState);
QCOMPARE(spy.size(), 1);
}
void tst_QModbusDevice::error()
{
QCOMPARE(device->error(), QModbusDevice::NoError);
QVERIFY(device->errorString().isEmpty());
QString errorString("error string");
device->setError(errorString, QModbusDevice::ConnectionError);
QCOMPARE(device->error(), QModbusDevice::ConnectionError);
QCOMPARE(device->errorString(), errorString);
}
QTEST_MAIN(tst_QModbusDevice)
#include "tst_qmodbusdevice.moc"