[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/criptych/SFML/master/test/Network/Packet.test.cpp [Back]  [Original]

#include 

// Other 1st party headers
#include 

#include 

#include 
#include 
#include 
#include 

#include 
#include 

#define CHECK_PACKET_STREAM_OPERATORS(expected)              \
    do                                                       \
    {                                                        \
        sf::Packet packet;                                   \
        packet > received;                                  \
        CHECK(packet.getReadPosition() == sizeof(expected)); \
        CHECK(packet.getData() != nullptr);                  \
        CHECK(packet.getDataSize() == sizeof(expected));     \
        CHECK(packet.endOfPacket());                         \
        CHECK(bool{packet});                                 \
        CHECK((expected) == received);                       \
    } while (false)

#define CHECK_PACKET_STRING_STREAM_OPERATORS(expected, size) \
    do                                                       \
    {                                                        \
        sf::Packet packet;                                   \
        packet > received;                                  \
        CHECK(packet.getReadPosition() == (size));           \
        CHECK(packet.getData() != nullptr);                  \
        CHECK(packet.getDataSize() == (size));               \
        CHECK(packet.endOfPacket());                         \
        CHECK(bool{packet});                                 \
        CHECK(sf::String(expected) == sf::String(received)); \
    } while (false)

struct Packet : sf::Packet
{
    using sf::Packet::onReceive;
    using sf::Packet::onSend;
};

TEST_CASE("[Network] sf::Packet")
{
    SECTION("Type traits")
    {
        STATIC_CHECK(std::is_copy_constructible_v);
        STATIC_CHECK(std::is_copy_assignable_v);
        STATIC_CHECK(std::is_nothrow_move_constructible_v);
        STATIC_CHECK(std::is_nothrow_move_assignable_v);
    }

    SECTION("Default constructor")
    {
        const sf::Packet packet;
        CHECK(packet.getReadPosition() == 0);
        CHECK(packet.getData() == nullptr);
        CHECK(packet.getDataSize() == 0);
        CHECK(packet.endOfPacket());
        CHECK(bool{packet});
    }

    static constexpr std::array data = {1, 2, 3, 4, 5, 6};

    SECTION("Append and clear")
    {
        sf::Packet packet;
        packet.append(data.data(), data.size());
        CHECK(packet.getReadPosition() == 0);
        CHECK(packet.getData() != nullptr);
        CHECK(packet.getDataSize() == data.size());
        CHECK(!packet.endOfPacket());
        CHECK(bool{packet});

        packet.clear();
        CHECK(packet.getReadPosition() == 0);
        CHECK(packet.getData() == nullptr);
        CHECK(packet.getDataSize() == 0);
        CHECK(packet.endOfPacket());
        CHECK(bool{packet});
    }

    SECTION("Network ordering")
    {
        sf::Packet packet;

        SECTION("16 bit int")
        {
            packet 

Web Proxy Viewer  |  New URL  |  Original Page