diff options
author | Karsten Heimrich <karsten.heimrich@qt.io> | 2021-01-27 16:06:52 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@qt.io> | 2021-02-01 14:03:09 +0100 |
commit | 3f33ab751950ecdd07df4d88274a4d7c759df98f (patch) | |
tree | fa83e4403f1a504acad596ae9f368e7bd85e70d8 /tests | |
parent | 10a76dfebfac652e926b88db3c4b8fcec896e015 (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.cpp | 146 |
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" |