aboutsummaryrefslogtreecommitdiff
path: root/src/unittest/test_connection.cpp
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-02-10 19:50:36 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-02-10 19:50:36 +0100
commit1fbbb768252f872dfa961d3a73460d996164d527 (patch)
treee9faf93dbd894b253ac3d1f0895b7468e8fee50d /src/unittest/test_connection.cpp
parent74f5f033e04c0d8694815fedb795838d4926cbc9 (diff)
parent9736b9cea5f841bb0e9bb2c9c05c3b2560327064 (diff)
downloaddragonfireclient-1fbbb768252f872dfa961d3a73460d996164d527.tar.xz
Merge branch 'master' of https://github.com/minetest/minetest
Diffstat (limited to 'src/unittest/test_connection.cpp')
-rw-r--r--src/unittest/test_connection.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/unittest/test_connection.cpp b/src/unittest/test_connection.cpp
index c5e4085e1..c3aacc536 100644
--- a/src/unittest/test_connection.cpp
+++ b/src/unittest/test_connection.cpp
@@ -39,6 +39,7 @@ public:
void runTests(IGameDef *gamedef);
+ void testNetworkPacketSerialize();
void testHelpers();
void testConnectSendReceive();
};
@@ -47,6 +48,7 @@ static TestConnection g_test_instance;
void TestConnection::runTests(IGameDef *gamedef)
{
+ TEST(testNetworkPacketSerialize);
TEST(testHelpers);
TEST(testConnectSendReceive);
}
@@ -78,6 +80,39 @@ struct Handler : public con::PeerHandler
const char *name;
};
+void TestConnection::testNetworkPacketSerialize()
+{
+ const static u8 expected[] = {
+ 0x00, 0x7b,
+ 0x00, 0x02, 0xd8, 0x42, 0xdf, 0x9a
+ };
+
+ if (sizeof(wchar_t) == 2)
+ warningstream << __func__ << " may fail on this platform." << std::endl;
+
+ {
+ NetworkPacket pkt(123, 0);
+
+ // serializing wide strings should do surrogate encoding, we test that here
+ pkt << std::wstring(L"\U00020b9a");
+
+ SharedBuffer<u8> buf = pkt.oldForgePacket();
+ UASSERTEQ(int, buf.getSize(), sizeof(expected));
+ UASSERT(!memcmp(expected, &buf[0], buf.getSize()));
+ }
+
+ {
+ NetworkPacket pkt;
+ pkt.putRawPacket(expected, sizeof(expected), 0);
+
+ // same for decoding
+ std::wstring pkt_s;
+ pkt >> pkt_s;
+
+ UASSERT(pkt_s == L"\U00020b9a");
+ }
+}
+
void TestConnection::testHelpers()
{
// Some constants for testing