summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/auto/qserialport/tst_qserialport.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/auto/qserialport/tst_qserialport.cpp b/tests/auto/qserialport/tst_qserialport.cpp
index 24c0134..33a48fe 100644
--- a/tests/auto/qserialport/tst_qserialport.cpp
+++ b/tests/auto/qserialport/tst_qserialport.cpp
@@ -96,6 +96,9 @@ private slots:
void flowControl_data();
void flowControl();
+ void rts();
+ void dtr();
+
void flush();
void doubleFlush();
@@ -149,6 +152,7 @@ const QByteArray tst_QSerialPort::newlineArray("\n\r");
tst_QSerialPort::tst_QSerialPort()
{
+ qRegisterMetaType<QSerialPort::SerialPortError>("QSerialPort::SerialPortError");
}
void tst_QSerialPort::initTestCase()
@@ -468,6 +472,83 @@ void tst_QSerialPort::flowControl()
}
}
+void tst_QSerialPort::rts()
+{
+ QSerialPort serialPort(m_senderPortName);
+
+ QSignalSpy errorSpy(&serialPort, static_cast<void (QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error));
+ QVERIFY(errorSpy.isValid());
+ QSignalSpy rtsSpy(&serialPort, &QSerialPort::requestToSendChanged);
+ QVERIFY(rtsSpy.isValid());
+
+ QVERIFY(serialPort.open(QIODevice::ReadWrite));
+
+ // no flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::NoFlowControl));
+ const bool toggle1 = !serialPort.isRequestToSend();
+ QVERIFY(serialPort.setRequestToSend(toggle1));
+ QCOMPARE(serialPort.isRequestToSend(), toggle1);
+
+ // software flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::SoftwareControl));
+ const bool toggle2 = !serialPort.isRequestToSend();
+ QVERIFY(serialPort.setRequestToSend(toggle2));
+ QCOMPARE(serialPort.isRequestToSend(), toggle2);
+
+ // hardware flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::HardwareControl));
+ const bool toggle3 = !serialPort.isRequestToSend();
+ QVERIFY(!serialPort.setRequestToSend(toggle3)); // not allowed
+ QCOMPARE(serialPort.isRequestToSend(), !toggle3); // same as before
+ QCOMPARE(serialPort.error(), QSerialPort::UnsupportedOperationError);
+
+ QCOMPARE(errorSpy.count(), 2);
+ QCOMPARE(qvariant_cast<QSerialPort::SerialPortError>(errorSpy.at(0).at(0)), QSerialPort::NoError);
+ QCOMPARE(qvariant_cast<QSerialPort::SerialPortError>(errorSpy.at(1).at(0)), QSerialPort::UnsupportedOperationError);
+
+ QCOMPARE(rtsSpy.count(), 2);
+ QCOMPARE(qvariant_cast<bool>(rtsSpy.at(0).at(0)), toggle1);
+ QCOMPARE(qvariant_cast<bool>(rtsSpy.at(1).at(0)), toggle2);
+}
+
+void tst_QSerialPort::dtr()
+{
+ QSerialPort serialPort(m_senderPortName);
+
+ QSignalSpy errorSpy(&serialPort, static_cast<void (QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error));
+ QVERIFY(errorSpy.isValid());
+ QSignalSpy dtrSpy(&serialPort, &QSerialPort::dataTerminalReadyChanged);
+ QVERIFY(dtrSpy.isValid());
+
+ QVERIFY(serialPort.open(QIODevice::ReadWrite));
+
+ // no flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::NoFlowControl));
+ const bool toggle1 = !serialPort.isDataTerminalReady();
+ QVERIFY(serialPort.setDataTerminalReady(toggle1));
+ QCOMPARE(serialPort.isDataTerminalReady(), toggle1);
+
+ // software flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::SoftwareControl));
+ const bool toggle2 = !serialPort.isDataTerminalReady();
+ QVERIFY(serialPort.setDataTerminalReady(toggle2));
+ QCOMPARE(serialPort.isDataTerminalReady(), toggle2);
+
+ // hardware flow control
+ QVERIFY(serialPort.setFlowControl(QSerialPort::HardwareControl));
+ const bool toggle3 = !serialPort.isDataTerminalReady();
+ QVERIFY(serialPort.setDataTerminalReady(toggle3));
+ QCOMPARE(serialPort.isDataTerminalReady(), toggle3);
+
+ QCOMPARE(errorSpy.count(), 1);
+ QCOMPARE(qvariant_cast<QSerialPort::SerialPortError>(errorSpy.at(0).at(0)), QSerialPort::NoError);
+
+ QCOMPARE(dtrSpy.count(), 3);
+ QCOMPARE(qvariant_cast<bool>(dtrSpy.at(0).at(0)), toggle1);
+ QCOMPARE(qvariant_cast<bool>(dtrSpy.at(1).at(0)), toggle2);
+ QCOMPARE(qvariant_cast<bool>(dtrSpy.at(2).at(0)), toggle3);
+}
+
void tst_QSerialPort::handleBytesWrittenAndExitLoopSlot(qint64 bytesWritten)
{
QCOMPARE(bytesWritten, qint64(alphabetArray.size() + newlineArray.size()));