1#include <base/system.h>
2
3#include <engine/shared/snapshot.h>
4
5#include <generated/protocol.h>
6
7#include <gtest/gtest.h>
8
9TEST(Snapshot, CrcOneInt)
10{
11 CSnapshotBuilder Builder;
12 Builder.Init();
13
14 CNetObj_Flag Flag;
15 void *pItem = Builder.NewItem(Type: CNetObj_Flag::ms_MsgId, Id: 0, Size: sizeof(Flag));
16 ASSERT_FALSE(pItem == nullptr);
17 Flag.m_X = 4;
18 Flag.m_Y = 0;
19 Flag.m_Team = 0;
20 mem_copy(dest: pItem, source: &Flag, size: sizeof(Flag));
21
22 char aData[CSnapshot::MAX_SIZE];
23 CSnapshot *pSnapshot = (CSnapshot *)aData;
24 Builder.Finish(pSnapdata: pSnapshot);
25
26 ASSERT_EQ(pSnapshot->Crc(), 4);
27}
28
29TEST(Snapshot, CrcTwoInts)
30{
31 CSnapshotBuilder Builder;
32 Builder.Init();
33
34 CNetObj_Flag Flag;
35 void *pItem = Builder.NewItem(Type: CNetObj_Flag::ms_MsgId, Id: 0, Size: sizeof(Flag));
36 ASSERT_FALSE(pItem == nullptr);
37 Flag.m_X = 1;
38 Flag.m_Y = 1;
39 Flag.m_Team = 0;
40 mem_copy(dest: pItem, source: &Flag, size: sizeof(Flag));
41
42 char aData[CSnapshot::MAX_SIZE];
43 CSnapshot *pSnapshot = (CSnapshot *)aData;
44 Builder.Finish(pSnapdata: pSnapshot);
45
46 ASSERT_EQ(pSnapshot->Crc(), 2);
47}
48
49TEST(Snapshot, CrcBiggerInts)
50{
51 CSnapshotBuilder Builder;
52 Builder.Init();
53
54 CNetObj_Flag Flag;
55 void *pItem = Builder.NewItem(Type: CNetObj_Flag::ms_MsgId, Id: 0, Size: sizeof(Flag));
56 ASSERT_FALSE(pItem == nullptr);
57 Flag.m_X = 99999999;
58 Flag.m_Y = 1;
59 Flag.m_Team = 1;
60 mem_copy(dest: pItem, source: &Flag, size: sizeof(Flag));
61
62 char aData[CSnapshot::MAX_SIZE];
63 CSnapshot *pSnapshot = (CSnapshot *)aData;
64 Builder.Finish(pSnapdata: pSnapshot);
65
66 ASSERT_EQ(pSnapshot->Crc(), 100000001);
67}
68
69TEST(Snapshot, CrcOverflow)
70{
71 CSnapshotBuilder Builder;
72 Builder.Init();
73
74 CNetObj_Flag Flag;
75 void *pItem = Builder.NewItem(Type: CNetObj_Flag::ms_MsgId, Id: 0, Size: sizeof(Flag));
76 ASSERT_FALSE(pItem == nullptr);
77 Flag.m_X = 0xFFFFFFFF;
78 Flag.m_Y = 1;
79 Flag.m_Team = 1;
80 mem_copy(dest: pItem, source: &Flag, size: sizeof(Flag));
81
82 char aData[CSnapshot::MAX_SIZE];
83 CSnapshot *pSnapshot = (CSnapshot *)aData;
84 Builder.Finish(pSnapdata: pSnapshot);
85
86 ASSERT_EQ(pSnapshot->Crc(), 1);
87}
88