Cours:ClasseTestTcpServer : Différence entre versions
| Ligne 1 : | Ligne 1 : | ||
{|style="vertical-align:middle; width:100%; text-align:left; " | {|style="vertical-align:middle; width:100%; text-align:left; " | ||
|- | |- | ||
| − | | {{boîte déroulante/début|titre=[[Media: | + | | {{boîte déroulante/début|titre=[[Media:testtcpserver.h|testtcpserver.h]]}} |
<source lang=cpp> | <source lang=cpp> | ||
#ifndef TESTTCPSERVER_H | #ifndef TESTTCPSERVER_H | ||
| Ligne 32 : | Ligne 32 : | ||
</source> | </source> | ||
{{boîte déroulante/fin}} | {{boîte déroulante/fin}} | ||
| − | ||{{boîte déroulante/début|titre=[[Media: | + | ||{{boîte déroulante/début|titre=[[Media:testtcpserver.cpp|testtcpserver.cpp]]}} |
<source lang=cpp> | <source lang=cpp> | ||
#include "testtcpserver.h" | #include "testtcpserver.h" | ||
Version actuelle datée du 20 octobre 2025 à 16:19
#ifndef TESTTCPSERVER_H
#define TESTTCPSERVER_H
#include <QtTest/QTest>
#include <QObject>
#include <QDataStream>
class TestTcpServer : public QObject
{
Q_OBJECT
public:
explicit TestTcpServer(QObject *parent = nullptr);
private:
QString data;
QDataStream dataIn;
public slots:
void getData(QString _data);
void readyRead();
private slots:
void sendData_data();
void sendData();
signals:
};
#endif // TESTTCPSERVER_H
|
#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;
}
|
//main.cpp
#include "testtcpserver.h"
QTEST_MAIN(TestTcpServer);