#include "testtcpserver.h"
#include "tcpserver.h"
#include <QTcpSocket>
TestTcpServer::TestTcpServer(QObject *parent)
: QObject{parent}
{}
void TestTcpServer::sendData_data()
{
QTest::addColumn<QString>("message");
QTest::newRow("") << "hello";
QTest::newRow("") << "coucou";
QTest::newRow("") << "100";
QTest::newRow("") << "10.4";
QTest::newRow("") << "0.5;-0.3";
}
void TestTcpServer::sendData()
{
QFETCH(QString, message);
int port=rand()%1000+9000;
TcpServer monServer(port);
QTcpSocket monClient;
monClient.connectToHost("127.0.0.1",port);
QTest::qWait(100);
QVERIFY(monClient.state()==QAbstractSocket::ConnectedState);
// vérif client vers server
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out << message;
connect(&monServer,&TcpServer::newDatas,
this,&TestTcpServer::getData);
monClient.write(block);
QTest::qWait(100);
QCOMPARE(data,message);
disconnect(&monServer,&TcpServer::newDatas,
this,&TestTcpServer::getData);
// vérif server vers client
dataIn.setDevice(&monClient);
connect(&monClient,&QTcpSocket::readyRead,
this,&TestTcpServer::readyRead);
monServer.sendData(message);
QTest::qWait(100);
QCOMPARE(data,message);
disconnect(&monClient,&QTcpSocket::readyRead,
this,&TestTcpServer::readyRead);
monClient.disconnect();
dataIn.setDevice(nullptr);
QTest::qWait(100);
}
void TestTcpServer::getData(QString _data)
{
data=_data;
}
void TestTcpServer::readyRead()
{
dataIn.startTransaction();
if (!dataIn.commitTransaction()) return;
dataIn >> data;
}