1#include "test.h"
2
3#include <engine/shared/network.h>
4
5#include <gtest/gtest.h>
6
7template<size_t PackedSize>
8static void AssertHeader(const CNetChunkHeader &Header, unsigned char aPacked[PackedSize])
9{
10 unsigned char aData[8];
11 unsigned char *pData = &aData[0];
12 const int BytesWritten = Header.Pack(pData) - pData;
13 EXPECT_EQ(BytesWritten, PackedSize);
14 EXPECT_EQ(pData[0], aPacked[0]);
15 EXPECT_EQ(pData[1], aPacked[1]);
16 if(PackedSize > 2)
17 {
18 EXPECT_EQ(pData[2], aPacked[2]);
19 }
20}
21
22TEST(ChunkHeader, Seq255)
23{
24 CNetChunkHeader Header;
25 Header.m_Flags = NET_CHUNKFLAG_VITAL;
26 Header.m_Size = 0;
27 Header.m_Sequence = 255;
28
29 unsigned char aExpected[3] = {
30 0x40,
31 0x30, // this is weird
32 0xff};
33 AssertHeader<3>(Header, aPacked: aExpected);
34}
35
36TEST(ChunkHeader, Seq126)
37{
38 CNetChunkHeader Header;
39 Header.m_Flags = NET_CHUNKFLAG_VITAL;
40 Header.m_Size = 0;
41 Header.m_Sequence = 126;
42
43 unsigned char aExpected[3] = {0x40, 0x10, 0x7e};
44 AssertHeader<3>(Header, aPacked: aExpected);
45}
46
47TEST(ChunkHeader, Seq63)
48{
49 CNetChunkHeader Header;
50 Header.m_Flags = NET_CHUNKFLAG_VITAL;
51 Header.m_Size = 0;
52 Header.m_Sequence = 63;
53
54 unsigned char aExpected[3] = {0x40, 0x00, 0x3f};
55 AssertHeader<3>(Header, aPacked: aExpected);
56}
57
58TEST(ChunkHeader, Seq64)
59{
60 CNetChunkHeader Header;
61 Header.m_Flags = NET_CHUNKFLAG_VITAL;
62 Header.m_Size = 0;
63 Header.m_Sequence = 64;
64
65 unsigned char aExpected[3] = {0x40, 0x10, 0x40};
66 AssertHeader<3>(Header, aPacked: aExpected);
67}
68
69TEST(ChunkHeader, Seq5)
70{
71 CNetChunkHeader Header;
72 Header.m_Flags = NET_CHUNKFLAG_VITAL;
73 Header.m_Size = 0;
74 Header.m_Sequence = 5;
75
76 unsigned char aExpected[3] = {0x40, 0x00, 0x05};
77 AssertHeader<3>(Header, aPacked: aExpected);
78}
79