mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Fix wrong cast in sf::Packet
Add unit tests
This commit is contained in:
parent
6cf124db66
commit
11020363b1
@ -178,7 +178,7 @@ Packet& Packet::operator >>(Int32& data)
|
|||||||
if (checkSize(sizeof(data)))
|
if (checkSize(sizeof(data)))
|
||||||
{
|
{
|
||||||
std::memcpy(&data, &m_data[m_readPos], sizeof(data));
|
std::memcpy(&data, &m_data[m_readPos], sizeof(data));
|
||||||
data = static_cast<Int16>(ntohl(static_cast<uint32_t>(data)));
|
data = static_cast<Int32>(ntohl(static_cast<uint32_t>(data)));
|
||||||
m_readPos += sizeof(data);
|
m_readPos += sizeof(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,7 +430,7 @@ Packet& Packet::operator <<(Uint16 data)
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Packet& Packet::operator <<(Int32 data)
|
Packet& Packet::operator <<(Int32 data)
|
||||||
{
|
{
|
||||||
Int32 toWrite = static_cast<Int16>(htonl(static_cast<uint32_t>(data)));
|
Int32 toWrite = static_cast<Int32>(htonl(static_cast<uint32_t>(data)));
|
||||||
append(&toWrite, sizeof(toWrite));
|
append(&toWrite, sizeof(toWrite));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -33,9 +33,17 @@ if(SFML_BUILD_GRAPHICS)
|
|||||||
sfml_add_test(test-sfml-graphics "${GRAPHICS_SRC}" sfml-graphics)
|
sfml_add_test(test-sfml-graphics "${GRAPHICS_SRC}" sfml-graphics)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(SFML_BUILD_NETWORK)
|
||||||
|
SET(NETWORK_SRC
|
||||||
|
"${SRCROOT}/CatchMain.cpp"
|
||||||
|
"${SRCROOT}/Network/Packet.cpp"
|
||||||
|
)
|
||||||
|
sfml_add_test(test-sfml-network "${NETWORK_SRC}" sfml-network)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Automatically run the tests at the end of the build
|
# Automatically run the tests at the end of the build
|
||||||
add_custom_target(runtests ALL
|
add_custom_target(runtests ALL
|
||||||
DEPENDS test-sfml-system test-sfml-window test-sfml-graphics
|
DEPENDS test-sfml-system test-sfml-window test-sfml-graphics test-sfml-network
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_command(TARGET runtests
|
add_custom_command(TARGET runtests
|
||||||
|
52
test/src/Network/Packet.cpp
Normal file
52
test/src/Network/Packet.cpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#include <SFML/Network.hpp>
|
||||||
|
|
||||||
|
#include <catch.hpp>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
template <typename IntegerType>
|
||||||
|
static void testPacketStreamOperators(IntegerType expected)
|
||||||
|
{
|
||||||
|
sf::Packet packet;
|
||||||
|
packet << expected;
|
||||||
|
IntegerType received;
|
||||||
|
packet >> received;
|
||||||
|
CHECK(expected == received);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("sf::Packet class", "[network]")
|
||||||
|
{
|
||||||
|
SECTION("Stream operators")
|
||||||
|
{
|
||||||
|
SECTION("Int8")
|
||||||
|
{
|
||||||
|
testPacketStreamOperators(sf::Int8(0));
|
||||||
|
testPacketStreamOperators(sf::Int8(1));
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int8>::min());
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int8>::max());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("Int16")
|
||||||
|
{
|
||||||
|
testPacketStreamOperators(sf::Int16(0));
|
||||||
|
testPacketStreamOperators(sf::Int16(1));
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int16>::min());
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int16>::max());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("Int32")
|
||||||
|
{
|
||||||
|
testPacketStreamOperators(sf::Int32(0));
|
||||||
|
testPacketStreamOperators(sf::Int32(1));
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int32>::min());
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int32>::max());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("Int64")
|
||||||
|
{
|
||||||
|
testPacketStreamOperators(sf::Int64(0));
|
||||||
|
testPacketStreamOperators(sf::Int64(1));
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int64>::min());
|
||||||
|
testPacketStreamOperators(std::numeric_limits<sf::Int64>::max());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user