diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qserialport/tst_qserialport.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/qserialport/tst_qserialport.cpp b/tests/auto/qserialport/tst_qserialport.cpp index 2b8de92..0fdde48 100644 --- a/tests/auto/qserialport/tst_qserialport.cpp +++ b/tests/auto/qserialport/tst_qserialport.cpp @@ -115,6 +115,10 @@ private slots: void asynchronousWriteByTimer_data(); void asynchronousWriteByTimer(); +#ifdef Q_OS_WIN + void readBufferOverflow(); +#endif + protected slots: void handleBytesWrittenAndExitLoopSlot(qint64 bytesWritten); void handleBytesWrittenAndExitLoopSlot2(qint64 bytesWritten); @@ -667,5 +671,36 @@ void tst_QSerialPort::asynchronousWriteByTimer() QCOMPARE(receiverPort.readAll(), alphabetArray); } +#ifdef Q_OS_WIN +void tst_QSerialPort::readBufferOverflow() +{ + 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)); + + QCOMPARE(senderPort.write(alphabetArray), qint64(alphabetArray.size())); + QVERIFY2(senderPort.waitForBytesWritten(100), "Waiting for bytes written failed"); + + QByteArray readData; + while (receiverPort.waitForReadyRead(100)) { + QVERIFY(receiverPort.bytesAvailable() > 0); + readData += receiverPort.readAll(); + } + + QCOMPARE(readData, alphabetArray); + + // No more bytes available + QVERIFY(receiverPort.bytesAvailable() == 0); +} +#endif + QTEST_MAIN(tst_QSerialPort) #include "tst_qserialport.moc" |