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