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