diff options
author | kuzulis <scapig2@yandex.ru> | 2011-10-24 23:18:04 +0400 |
---|---|---|
committer | kuzulis <kuzulis@kuzulis.localdomain> | 2011-10-24 23:18:04 +0400 |
commit | 0471aad00163b08cdc1c555c784c81206b167af1 (patch) | |
tree | 3fb6db0a7f6d032fccd3f78d13b23a9feb960dc4 /tests | |
parent | ed81823c19c61055ad0538ff2621e712c72dc9ca (diff) | |
download | qtserialport-0471aad00163b08cdc1c555c784c81206b167af1.tar.gz |
/tests/guidevtest: Complete realization of unit "Signals Test".
Diffstat (limited to 'tests')
-rw-r--r-- | tests/guidevtest/unittests.h | 22 | ||||
-rw-r--r-- | tests/guidevtest/unittestsignals.cpp | 97 |
2 files changed, 115 insertions, 4 deletions
diff --git a/tests/guidevtest/unittests.h b/tests/guidevtest/unittests.h index 286d818..678a83a 100644 --- a/tests/guidevtest/unittests.h +++ b/tests/guidevtest/unittests.h @@ -81,7 +81,29 @@ public: public slots: virtual void start(); +private slots: + void procSignalBytesWritten(qint64 bw); + void procSignalReadyRead(); + void procSingleShot(); + void transaction(); + private: + enum { + TransactionLimit = 5, + TransactionMsecDelay = 1000, + MinBytesToWrite = 1, + StepBytesToWrite = 100 + + }; + + bool m_started; + int m_transactionNum; + qint64 m_bytesToWrite; + qint64 m_bytesReallyWrited; + int m_countSignalsBytesWritten; + int m_countSignalsReadyRead; + + bool open(DirPorts dir); bool configure(DirPorts dir); void close(DirPorts dir); diff --git a/tests/guidevtest/unittestsignals.cpp b/tests/guidevtest/unittestsignals.cpp index 89d2f63..0643579 100644 --- a/tests/guidevtest/unittestsignals.cpp +++ b/tests/guidevtest/unittestsignals.cpp @@ -1,18 +1,28 @@ #include "unittests.h" #include "serialport.h" +#include <QtCore/QTimer> +//#include <QtCore/QByteArray> /* Public methods */ UnitTestSignals::UnitTestSignals(Logger *logger, QObject *parent) : UnitTestBase(UnitTestBase::SignalsUnitId, logger, parent) + , m_started(false), m_transactionNum(0), m_bytesToWrite(0) + , m_bytesReallyWrited(0), m_countSignalsBytesWritten(0) + , m_countSignalsReadyRead(0) { m_name = QString(tr("Signals Test")); m_description = QString(tr("Signals Test Description")); m_srcPort = new SerialPort(this); m_dstPort = new SerialPort(this); + + connect(m_srcPort, SIGNAL(bytesWritten(qint64)), + this, SLOT(procSignalBytesWritten(qint64))); + connect(m_dstPort, SIGNAL(readyRead()), + this, SLOT(procSignalReadyRead())); } /* Public slots */ @@ -37,11 +47,89 @@ void UnitTestSignals::start() close(UnitTestBase::DstPort); emit error(); return; + } else { + QString content(tr("\nSource and destination ports\n" + "opened as 9600 8 N 1 by default.\n")); + m_logger->addContent(content); } - ////// !!! Implement me + // Prepare transaction begin. + m_transactionNum = 0; + m_bytesToWrite = MinBytesToWrite; + m_bytesReallyWrited = 0; + m_countSignalsBytesWritten = 0; + m_countSignalsReadyRead = 0; + + transaction(); +} + +/* Private slots */ + +void UnitTestSignals::procSignalBytesWritten(qint64 bw) +{ + QString content(">signal bytesWritten(%1)\n"); + content = content.arg(bw); + m_logger->addContent(content); + ++m_countSignalsBytesWritten; + m_bytesReallyWrited += bw; +} - emit finished(); +void UnitTestSignals::procSignalReadyRead() +{ + ++m_countSignalsReadyRead; +} + +void UnitTestSignals::procSingleShot() +{ + QByteArray data = m_dstPort->readAll(); + qint64 reallyRead = data.count(); + + QString content(tr("- count signals bytesWritten : %1\n" + "- count signals readyRead : %2\n" + "- bytes really write : %3\n" + "- bytes really read : %4\n")); + content = content + .arg(m_countSignalsBytesWritten) + .arg(m_countSignalsReadyRead) + .arg(m_bytesReallyWrited) + .arg(reallyRead); + + m_logger->addContent(content); + + m_countSignalsBytesWritten = 0; + m_countSignalsReadyRead = 0; + + if ((m_bytesReallyWrited != m_bytesToWrite) + || (m_bytesToWrite != reallyRead)) { + + content = QString(tr("\nError: Mismatch of sent and received bytes.\n")); + m_logger->addContent(content); + close(UnitTestBase::SrcPort); + close(UnitTestBase::DstPort); + emit error(); + } + + m_bytesReallyWrited = 0; + m_bytesToWrite += StepBytesToWrite; + + transaction(); +} + +void UnitTestSignals::transaction() +{ + if (m_transactionNum++ != TransactionLimit) { + QString content(tr("\nTransaction #%1, bytes to write: %2\n")); + content = content.arg(m_transactionNum).arg(m_bytesToWrite); + m_logger->addContent(content); + + QByteArray data(m_bytesToWrite, qrand()); + QTimer::singleShot(TransactionMsecDelay, this, SLOT(procSingleShot())); + m_srcPort->write(data); + } else { + close(UnitTestBase::SrcPort); + close(UnitTestBase::DstPort); + emit finished(); + } } /* Private */ @@ -69,9 +157,9 @@ bool UnitTestSignals::configure(DirPorts dir) if (!(port->setRate(9600) && port->setDataBits(SerialPort::Data8) && port->setParity(SerialPort::NoParity) && port->setStopBits(SerialPort::OneStop) - && port->setFlowControl(SerialPort::NoFlowControl) && port->setDataErrorPolicy())) { + && port->setFlowControl(SerialPort::NoFlowControl))) { - QString error("\nERROR: Can\'t configure port %1\n"); + QString error("\nError: Can\'t configure port %1\n"); error = error.arg(port->portName()); m_logger->addContent(error); return false; @@ -90,3 +178,4 @@ void UnitTestSignals::close(DirPorts dir) } } + |