2022-09-03 17:47:37 -06:00
|
|
|
#include <SFML/Network/Packet.hpp>
|
2021-12-05 23:27:48 +01:00
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
#include <catch2/catch_test_macros.hpp>
|
2022-07-04 11:20:58 -05:00
|
|
|
|
2022-09-03 18:26:23 -06:00
|
|
|
#include <array>
|
2021-12-05 23:27:48 +01:00
|
|
|
#include <limits>
|
2022-07-25 00:36:05 -06:00
|
|
|
#include <type_traits>
|
|
|
|
|
2022-09-03 18:26:23 -06:00
|
|
|
#define CHECK_PACKET_STREAM_OPERATORS(expected) \
|
|
|
|
do \
|
|
|
|
{ \
|
|
|
|
sf::Packet packet; \
|
2023-02-02 23:31:48 -07:00
|
|
|
packet << (expected); \
|
2022-09-03 18:26:23 -06:00
|
|
|
CHECK(packet.getReadPosition() == 0); \
|
|
|
|
CHECK(packet.getData() != nullptr); \
|
|
|
|
CHECK(packet.getDataSize() == sizeof(expected)); \
|
|
|
|
CHECK(!packet.endOfPacket()); \
|
|
|
|
CHECK(static_cast<bool>(packet)); \
|
|
|
|
\
|
|
|
|
decltype(expected) received; \
|
|
|
|
packet >> received; \
|
|
|
|
CHECK(packet.getReadPosition() == sizeof(expected)); \
|
|
|
|
CHECK(packet.getData() != nullptr); \
|
|
|
|
CHECK(packet.getDataSize() == sizeof(expected)); \
|
|
|
|
CHECK(packet.endOfPacket()); \
|
|
|
|
CHECK(static_cast<bool>(packet)); \
|
2023-02-02 23:31:48 -07:00
|
|
|
CHECK((expected) == received); \
|
2022-09-03 17:47:52 -06:00
|
|
|
} while (false)
|
2021-12-05 23:27:48 +01:00
|
|
|
|
2022-07-04 23:51:18 -06:00
|
|
|
TEST_CASE("[Network] sf::Packet")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("Type traits")
|
|
|
|
{
|
|
|
|
STATIC_CHECK(std::is_copy_constructible_v<sf::Packet>);
|
|
|
|
STATIC_CHECK(std::is_copy_assignable_v<sf::Packet>);
|
|
|
|
STATIC_CHECK(std::is_nothrow_move_constructible_v<sf::Packet>);
|
|
|
|
STATIC_CHECK(std::is_nothrow_move_assignable_v<sf::Packet>);
|
|
|
|
}
|
|
|
|
|
|
|
|
SECTION("Default constructor")
|
2022-09-03 18:26:23 -06:00
|
|
|
{
|
|
|
|
const sf::Packet packet;
|
|
|
|
CHECK(packet.getReadPosition() == 0);
|
|
|
|
CHECK(packet.getData() == nullptr);
|
|
|
|
CHECK(packet.getDataSize() == 0);
|
|
|
|
CHECK(packet.endOfPacket());
|
|
|
|
CHECK(static_cast<bool>(packet));
|
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("Append and clear")
|
2022-09-03 18:26:23 -06:00
|
|
|
{
|
|
|
|
constexpr std::array data = {1, 2, 3, 4, 5, 6};
|
|
|
|
|
|
|
|
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(static_cast<bool>(packet));
|
|
|
|
|
|
|
|
packet.clear();
|
|
|
|
CHECK(packet.getReadPosition() == 0);
|
|
|
|
CHECK(packet.getData() == nullptr);
|
|
|
|
CHECK(packet.getDataSize() == 0);
|
|
|
|
CHECK(packet.endOfPacket());
|
|
|
|
CHECK(static_cast<bool>(packet));
|
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("Stream operators")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("std::int8_t")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2022-09-03 17:47:52 -06:00
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int8_t(0));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int8_t(1));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int8_t>::min());
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int8_t>::max());
|
2021-12-05 23:27:48 +01:00
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("std::int16_t")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2022-09-03 17:47:52 -06:00
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int16_t(0));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int16_t(1));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int16_t>::min());
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int16_t>::max());
|
2021-12-05 23:27:48 +01:00
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("std::int32_t")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2022-09-03 17:47:52 -06:00
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int32_t(0));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int32_t(1));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int32_t>::min());
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int32_t>::max());
|
2021-12-05 23:27:48 +01:00
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("std::int64_t")
|
2021-12-05 23:27:48 +01:00
|
|
|
{
|
2022-09-03 17:47:52 -06:00
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int64_t(0));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::int64_t(1));
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int64_t>::min());
|
|
|
|
CHECK_PACKET_STREAM_OPERATORS(std::numeric_limits<std::int64_t>::max());
|
2021-12-05 23:27:48 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|