public void TestSnapshotMask()
        {
            NetworkSnapshotAckComponent clientAck = new NetworkSnapshotAckComponent();
            NetworkSnapshotAckComponent serverAck = new NetworkSnapshotAckComponent();

            // 1.客户端收到服务端快照 tick = 2
            // 由于第一次收到,mask = mask | 1;
            clientAck.UpdateLocalValues(2U);
            LogClientInfo(clientAck);
            Assert.AreEqual(clientAck.LastReceivedSnapshotByLocal, 2);

            // 2.回给服务端
            serverAck.UpdateReceiveByRemote(clientAck.LastReceivedSnapshotByLocal,
                                            clientAck.ReceivedSnapshotByLocalMask);
            LogServerInfo(serverAck);
            Assert.AreEqual(serverAck.LastReceivedSnapshotByRemote, 2);
            Assert.AreEqual(serverAck.ReceivedSnapshotByRemoteMask0, 1);

            // 3.客户端第二次收到快照 tick = 4
            clientAck.UpdateLocalValues(4U);
            LogClientInfo(clientAck);
            Assert.AreEqual(clientAck.LastReceivedSnapshotByLocal, 4);
        }
        public void TestSnapshotMask1()
        {
            NetworkSnapshotAckComponent clientAck = new NetworkSnapshotAckComponent();
            NetworkSnapshotAckComponent serverAck = new NetworkSnapshotAckComponent();

            for (uint i = 1; i <= 130; i++)
            {
                if (i % 2 == 0)
                {
                    // 1.客户端收到服务端快照 tick = 2
                    // 由于第一次收到,mask = mask | 1;
                    clientAck.UpdateLocalValues(i);

                    // 2.回给服务端
                    serverAck.UpdateReceiveByRemote(clientAck.LastReceivedSnapshotByLocal,
                                                    clientAck.ReceivedSnapshotByLocalMask);
                }
            }

            LogClientInfo(clientAck);
            LogServerInfo(serverAck);
        }