summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@qt.io>2021-01-27 16:06:52 +0100
committerKarsten Heimrich <karsten.heimrich@qt.io>2021-02-01 14:03:09 +0100
commit3f33ab751950ecdd07df4d88274a4d7c759df98f (patch)
treefa83e4403f1a504acad596ae9f368e7bd85e70d8 /tests
parent10a76dfebfac652e926b88db3c4b8fcec896e015 (diff)
Qt6: Migrate useful properties to new property system
Task-number: QTBUG-89885 Change-Id: I883c139e7be4ff44823170959b7daf2aa6740675 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qserialport/tst_qserialport.cpp146
1 files changed, 146 insertions, 0 deletions
diff --git a/tests/auto/qserialport/tst_qserialport.cpp b/tests/auto/qserialport/tst_qserialport.cpp
index f55dac76..84bb7a56 100644
--- a/tests/auto/qserialport/tst_qserialport.cpp
+++ b/tests/auto/qserialport/tst_qserialport.cpp
@@ -132,6 +132,8 @@ private slots:
void readWriteWithDifferentBaudRate_data();
void readWriteWithDifferentBaudRate();
+ void bindingsAndProperties();
+
protected slots:
void handleBytesWrittenAndExitLoopSlot(qint64 bytesWritten);
void handleBytesWrittenAndExitLoopSlot2(qint64 bytesWritten);
@@ -1284,5 +1286,149 @@ void tst_QSerialPort::readWriteWithDifferentBaudRate()
}
}
+void tst_QSerialPort::bindingsAndProperties()
+{
+ QSerialPort sp;
+
+ // -- data bits
+
+ QProperty<QSerialPort::DataBits> dbProp(QSerialPort::DataBits::Data6);
+ QCOMPARE(dbProp.value(), QSerialPort::DataBits::Data6);
+
+ sp.bindableDataBits().setBinding(Qt::makePropertyBinding(dbProp));
+ QCOMPARE(sp.dataBits(), QSerialPort::DataBits::Data6);
+
+ const QSignalSpy dataBitsChangedSpy(&sp, &QSerialPort::dataBitsChanged);
+
+ dbProp = QSerialPort::DataBits::Data5;
+ QCOMPARE(sp.dataBits(), QSerialPort::DataBits::Data5);
+ QCOMPARE(dataBitsChangedSpy.count(), 1);
+ QCOMPARE(dataBitsChangedSpy.at(0).value(0).toInt(), QSerialPort::DataBits::Data5);
+
+ dbProp.setBinding(sp.bindableDataBits().makeBinding());
+ sp.setDataBits(QSerialPort::DataBits::Data8);
+ QCOMPARE(dbProp.value(), QSerialPort::DataBits::Data8);
+
+ dbProp.setBinding([&] { return sp.dataBits(); });
+ sp.setDataBits(QSerialPort::DataBits::Data7);
+ QCOMPARE(dbProp.value(), QSerialPort::DataBits::Data7);
+
+ // -- parity
+
+ QProperty<QSerialPort::Parity> parityProp(QSerialPort::Parity::SpaceParity);
+ QCOMPARE(parityProp.value(), QSerialPort::Parity::SpaceParity);
+
+ sp.bindableParity().setBinding(Qt::makePropertyBinding(parityProp));
+ QCOMPARE(sp.parity(), QSerialPort::Parity::SpaceParity);
+
+ const QSignalSpy parityChangedSpy(&sp, &QSerialPort::parityChanged);
+
+ parityProp = QSerialPort::Parity::EvenParity;
+ QCOMPARE(sp.parity(), QSerialPort::Parity::EvenParity);
+ QCOMPARE(parityChangedSpy.count(), 1);
+ QCOMPARE(parityChangedSpy.at(0).value(0).toInt(), QSerialPort::Parity::EvenParity);
+
+ parityProp.setBinding(sp.bindableParity().makeBinding());
+ sp.setParity(QSerialPort::Parity::NoParity);
+ QCOMPARE(parityProp.value(), QSerialPort::Parity::NoParity);
+
+ parityProp.setBinding([&] { return sp.parity(); });
+ sp.setParity(QSerialPort::Parity::OddParity);
+ QCOMPARE(parityProp.value(), QSerialPort::Parity::OddParity);
+
+ // -- stop bits
+
+ QProperty<QSerialPort::StopBits> sbProp(QSerialPort::StopBits::OneAndHalfStop);
+ QCOMPARE(sbProp.value(), QSerialPort::StopBits::OneAndHalfStop);
+
+ sp.bindableStopBits().setBinding(Qt::makePropertyBinding(sbProp));
+ QCOMPARE(sp.stopBits(), QSerialPort::StopBits::OneAndHalfStop);
+
+ const QSignalSpy stopBitsChangedSpy(&sp, &QSerialPort::stopBitsChanged);
+
+ sbProp = QSerialPort::StopBits::OneStop;
+ QCOMPARE(sp.stopBits(), QSerialPort::StopBits::OneStop);
+ QCOMPARE(stopBitsChangedSpy.count(), 1);
+ QCOMPARE(stopBitsChangedSpy.at(0).value(0).toInt(), QSerialPort::StopBits::OneStop);
+
+ sbProp.setBinding(sp.bindableStopBits().makeBinding());
+ sp.setStopBits(QSerialPort::StopBits::TwoStop);
+ QCOMPARE(sbProp.value(), QSerialPort::StopBits::TwoStop);
+
+ sbProp.setBinding([&] { return sp.stopBits(); });
+ sp.setStopBits(QSerialPort::StopBits::OneAndHalfStop);
+ QCOMPARE(sbProp.value(), QSerialPort::StopBits::OneAndHalfStop);
+
+ // -- flow control
+
+ QProperty<QSerialPort::FlowControl> fcProp(QSerialPort::FlowControl::HardwareControl);
+ QCOMPARE(fcProp.value(), QSerialPort::FlowControl::HardwareControl);
+
+ sp.bindableFlowControl().setBinding(Qt::makePropertyBinding(fcProp));
+ QCOMPARE(sp.flowControl(), QSerialPort::FlowControl::HardwareControl);
+
+ const QSignalSpy flowControlChangedSpy(&sp, &QSerialPort::flowControlChanged);
+
+ fcProp = QSerialPort::FlowControl::NoFlowControl;
+ QCOMPARE(sp.flowControl(), QSerialPort::FlowControl::NoFlowControl);
+ QCOMPARE(flowControlChangedSpy.count(), 1);
+ QCOMPARE(flowControlChangedSpy.at(0).value(0).toInt(), QSerialPort::FlowControl::NoFlowControl);
+
+ fcProp.setBinding(sp.bindableFlowControl().makeBinding());
+ sp.setFlowControl(QSerialPort::FlowControl::SoftwareControl);
+ QCOMPARE(fcProp.value(), QSerialPort::FlowControl::SoftwareControl);
+
+ fcProp.setBinding([&] { return sp.flowControl(); });
+ sp.setFlowControl(QSerialPort::FlowControl::NoFlowControl);
+ QCOMPARE(fcProp.value(), QSerialPort::FlowControl::NoFlowControl);
+
+ // -- error
+
+ QProperty<QSerialPort::SerialPortError> errorProp(QSerialPort::SerialPortError::PermissionError);
+ QCOMPARE(errorProp.value(), QSerialPort::SerialPortError::PermissionError);
+
+ sp.bindableError().setBinding(Qt::makePropertyBinding(errorProp));
+ QCOMPARE(sp.error(), QSerialPort::SerialPortError::NoError);
+
+ const QSignalSpy errorChangedSpy(&sp, &QSerialPort::errorOccurred);
+
+ // this shall not change the error, we do not have a public setter
+ errorProp = QSerialPort::SerialPortError::DeviceNotFoundError;
+ QCOMPARE(sp.error(), QSerialPort::SerialPortError::NoError);
+ QCOMPARE(errorChangedSpy.count(), 0);
+
+ errorProp.setBinding(sp.bindableError().makeBinding());
+ sp.clearError();
+ QCOMPARE(errorProp.value(), QSerialPort::SerialPortError::NoError);
+ QCOMPARE(errorChangedSpy.count(), 1);
+ QCOMPARE(errorChangedSpy.at(0).value(0).toInt(), QSerialPort::SerialPortError::NoError);
+
+ sp.setPortName(m_receiverPortName);
+ sp.open(QIODevice::ReadOnly);
+
+ // -- break enabled
+
+ QProperty<bool> beProp(false);
+ QCOMPARE(beProp.value(), false);
+
+ sp.bindableIsBreakEnabled().setBinding(Qt::makePropertyBinding(beProp));
+ QCOMPARE(sp.isBreakEnabled(), false);
+
+ const QSignalSpy breakEnabledChangedSpy(&sp, &QSerialPort::breakEnabledChanged);
+
+ beProp = true;
+ QCOMPARE(sp.isBreakEnabled(), true);
+ QCOMPARE(breakEnabledChangedSpy.count(), 1);
+ QCOMPARE(breakEnabledChangedSpy.at(0).value(0).toBool(), true);
+
+ beProp.setBinding(sp.bindableIsBreakEnabled().makeBinding());
+ sp.setBreakEnabled(false);
+ QCOMPARE(beProp.value(), false);
+
+ beProp.setBinding([&] { return sp.isBreakEnabled(); });
+ sp.setBreakEnabled(true);
+ QCOMPARE(beProp.value(), true);
+}
+
QTEST_MAIN(tst_QSerialPort)
#include "tst_qserialport.moc"