summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qserialport/tst_qserialport.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/auto/qserialport/tst_qserialport.cpp b/tests/auto/qserialport/tst_qserialport.cpp
index 357cef8..24f6224 100644
--- a/tests/auto/qserialport/tst_qserialport.cpp
+++ b/tests/auto/qserialport/tst_qserialport.cpp
@@ -112,6 +112,8 @@ private slots:
void readAfterInputClear();
#endif
+ void controlBreak();
+
protected slots:
void handleBytesWrittenAndExitLoopSlot(qint64 bytesWritten);
void handleBytesWrittenAndExitLoopSlot2(qint64 bytesWritten);
@@ -736,5 +738,62 @@ void tst_QSerialPort::readAfterInputClear()
}
#endif
+class BreakReader : public QObject
+{
+ Q_OBJECT
+public:
+ explicit BreakReader(QSerialPort &port)
+ : serialPort(port)
+ {
+ connect(&serialPort, SIGNAL(readyRead()), this, SLOT(receive()));
+ }
+
+private slots:
+ void receive()
+ {
+ tst_QSerialPort::exitLoop();
+ }
+
+private:
+ QSerialPort &serialPort;
+};
+
+void tst_QSerialPort::controlBreak()
+{
+#ifdef Q_OS_WIN
+ clearReceiver();
+#endif
+
+ QSerialPort senderPort(m_senderPortName);
+ QVERIFY(senderPort.open(QSerialPort::WriteOnly));
+ QCOMPARE(senderPort.isBreakEnabled(), false);
+
+ QSignalSpy breakSpy(&senderPort, SIGNAL(breakEnabledChanged(bool)));
+ QVERIFY(breakSpy.isValid());
+
+ QSerialPort receiverPort(m_receiverPortName);
+ QVERIFY(receiverPort.open(QSerialPort::ReadOnly));
+
+ BreakReader reader(receiverPort);
+
+ QVERIFY(senderPort.setBreakEnabled(true));
+ QCOMPARE(senderPort.isBreakEnabled(), true);
+
+ enterLoop(1);
+ QVERIFY2(!timeout(), "Timed out when waiting for the read of break state.");
+ QVERIFY(receiverPort.bytesAvailable() > 0);
+
+ foreach (const char c, receiverPort.readAll()) {
+ QCOMPARE(c, char(0));
+ }
+
+ QVERIFY(senderPort.setBreakEnabled(false));
+ QCOMPARE(senderPort.isBreakEnabled(), false);
+
+ QCOMPARE(breakSpy.count(), 2);
+ QCOMPARE(qvariant_cast<bool>(breakSpy.at(0).at(0)), true);
+ QCOMPARE(qvariant_cast<bool>(breakSpy.at(1).at(0)), false);
+}
+
QTEST_MAIN(tst_QSerialPort)
#include "tst_qserialport.moc"