summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorkuzulis <scapig2@yandex.ru>2011-10-24 23:18:04 +0400
committerkuzulis <kuzulis@kuzulis.localdomain>2011-10-24 23:18:04 +0400
commit0471aad00163b08cdc1c555c784c81206b167af1 (patch)
tree3fb6db0a7f6d032fccd3f78d13b23a9feb960dc4 /tests
parented81823c19c61055ad0538ff2621e712c72dc9ca (diff)
downloadqtserialport-0471aad00163b08cdc1c555c784c81206b167af1.tar.gz
/tests/guidevtest: Complete realization of unit "Signals Test".
Diffstat (limited to 'tests')
-rw-r--r--tests/guidevtest/unittests.h22
-rw-r--r--tests/guidevtest/unittestsignals.cpp97
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)
}
}
+