Cours:ClasseTestTcpServer : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « {|style="vertical-align:middle; width:100%; text-align:left; " |- | {{boîte déroulante/début|titre=tcpserver.h}} <source lang=cpp> #ifndef TESTTCP... »)
 
 
(Une révision intermédiaire par le même utilisateur non affichée)
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:tcpserver.h|tcpserver.h]]}}
+
| {{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 8 : Ligne 8 :
 
#include <QtTest/QTest>
 
#include <QtTest/QTest>
 
#include <QObject>
 
#include <QObject>
 +
#include <QDataStream>
  
 
class TestTcpServer : public QObject
 
class TestTcpServer : public QObject
Ligne 31 : Ligne 32 :
 
</source>
 
</source>
 
{{boîte déroulante/fin}}
 
{{boîte déroulante/fin}}
||{{boîte déroulante/début|titre=[[Media:tcpserver.cpp|tcpserver.cpp]]}}
+
||{{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

testtcpserver.h

#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

testtcpserver.cpp

#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);