1#include <base/mem.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 Flag.m_X = 4;
16 Flag.m_Y = 0;
17 Flag.m_Team = 0;
18 ASSERT_TRUE(Builder.NewItem(NETOBJTYPE_FLAG, 0, &Flag, sizeof(Flag)));
19
20 CSnapshotBuffer Buffer;
21 Builder.Finish(pBuffer: &Buffer);
22 ASSERT_EQ(Buffer.AsSnapshot()->Crc(), 4);
23}
24
25TEST(Snapshot, CrcTwoInts)
26{
27 CSnapshotBuilder Builder;
28 Builder.Init();
29
30 CNetObj_Flag Flag;
31 Flag.m_X = 1;
32 Flag.m_Y = 1;
33 Flag.m_Team = 0;
34 ASSERT_TRUE(Builder.NewItem(NETOBJTYPE_FLAG, 0, &Flag, sizeof(Flag)));
35
36 CSnapshotBuffer Buffer;
37 Builder.Finish(pBuffer: &Buffer);
38 ASSERT_EQ(Buffer.AsSnapshot()->Crc(), 2);
39}
40
41TEST(Snapshot, CrcBiggerInts)
42{
43 CSnapshotBuilder Builder;
44 Builder.Init();
45
46 CNetObj_Flag Flag;
47 Flag.m_X = 99999999;
48 Flag.m_Y = 1;
49 Flag.m_Team = 1;
50 ASSERT_TRUE(Builder.NewItem(NETOBJTYPE_FLAG, 0, &Flag, sizeof(Flag)));
51
52 CSnapshotBuffer Buffer;
53 Builder.Finish(pBuffer: &Buffer);
54 ASSERT_EQ(Buffer.AsSnapshot()->Crc(), 100000001);
55}
56
57TEST(Snapshot, CrcOverflow)
58{
59 CSnapshotBuilder Builder;
60 Builder.Init();
61
62 CNetObj_Flag Flag;
63 Flag.m_X = 0xFFFFFFFF;
64 Flag.m_Y = 1;
65 Flag.m_Team = 1;
66 ASSERT_TRUE(Builder.NewItem(NETOBJTYPE_FLAG, 0, &Flag, sizeof(Flag)));
67
68 CSnapshotBuffer Buffer;
69 Builder.Finish(pBuffer: &Buffer);
70 ASSERT_EQ(Buffer.AsSnapshot()->Crc(), 1);
71}
72