summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qserialport/tst_qserialport.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/auto/qserialport/tst_qserialport.cpp b/tests/auto/qserialport/tst_qserialport.cpp
index 0fdde48..a7dc5f3 100644
--- a/tests/auto/qserialport/tst_qserialport.cpp
+++ b/tests/auto/qserialport/tst_qserialport.cpp
@@ -117,6 +117,7 @@ private slots:
#ifdef Q_OS_WIN
void readBufferOverflow();
+ void readAfterInputClear();
#endif
protected slots:
@@ -700,6 +701,47 @@ void tst_QSerialPort::readBufferOverflow()
// No more bytes available
QVERIFY(receiverPort.bytesAvailable() == 0);
}
+
+void tst_QSerialPort::readAfterInputClear()
+{
+ clearReceiver();
+
+ QSerialPort senderPort(m_senderPortName);
+ QVERIFY(senderPort.open(QSerialPort::WriteOnly));
+
+ QSerialPort receiverPort(m_receiverPortName);
+ QVERIFY(receiverPort.open(QSerialPort::ReadOnly));
+
+ const int readBufferSize = alphabetArray.size() / 2;
+ receiverPort.setReadBufferSize(readBufferSize);
+ QCOMPARE(receiverPort.readBufferSize(), qint64(readBufferSize));
+
+ const int waitMsecs = 100;
+
+ // First write more than read buffer size
+ QCOMPARE(senderPort.write(alphabetArray), qint64(alphabetArray.size()));
+ QVERIFY2(senderPort.waitForBytesWritten(waitMsecs), "Waiting for bytes written failed");
+
+ // Wait for first part of data into read buffer
+ while (receiverPort.waitForReadyRead(waitMsecs));
+ QCOMPARE(receiverPort.bytesAvailable(), qint64(readBufferSize));
+ // Wait for second part of data into driver's FIFO
+ QTest::qSleep(waitMsecs);
+
+ QVERIFY(receiverPort.clear(QSerialPort::Input));
+ QCOMPARE(receiverPort.bytesAvailable(), qint64(0));
+
+ // Second write less than read buffer size
+ QCOMPARE(senderPort.write(newlineArray), qint64(newlineArray.size()));
+ QVERIFY2(senderPort.waitForBytesWritten(waitMsecs), "Waiting for bytes written failed");
+
+ while (receiverPort.waitForReadyRead(waitMsecs));
+ QCOMPARE(receiverPort.bytesAvailable(), qint64(newlineArray.size()));
+ QCOMPARE(receiverPort.readAll(), newlineArray);
+
+ // No more bytes available
+ QVERIFY(receiverPort.bytesAvailable() == 0);
+}
#endif
QTEST_MAIN(tst_QSerialPort)