public GamestatePacket GetRandomPacket()
    {
        Random.state = currentState;

        GamestatePacket packet = GamestatePacketManager.GetPacket();

        packet.packetType = (GamestatePacket.PacketType)Random.Range(0, 4);
        packet.table      = (GamestateTracker.Table)Random.Range(0, 3);

        packet.revisionNumber = (uint)Random.Range(int.MinValue, int.MaxValue);
        packet.revisionActor  = (byte)Random.Range(byte.MinValue, byte.MaxValue + 1);

        packet.id = (short)Random.Range(short.MinValue, short.MaxValue + 1);

        packet.hasName = Random.Range(0, 2) == 1;
        packet.name    = GetRandomUTF8String();

        for (int i = 0; i < GamestatePacket.maxShorts; i++)
        {
            packet.hasShortValues[i] = Random.Range(0, 2) == 1;
            if (packet.hasShortValues[i])
            {
                packet.shortValues.Add((short)Random.Range(short.MinValue, short.MaxValue + 1));
            }
        }

        for (int i = 0; i < GamestatePacket.maxBools; i++)
        {
            packet.boolValues[i] = Random.Range(0, 2) == 1;
        }

        currentState = Random.state;

        return(packet);
    }
示例#2
0
    public void GamestateApplyTeamPacketErrorCallbackTest()
    {
        short actorNumber = 1;
        GamestateCommitTestHelper <TeamEntry> testHelper = new GamestateCommitTestHelper <TeamEntry>(actorNumber);
        GamestateTable <TeamEntry>            teams      = testHelper.TestTable(GamestateTracker.Table.Teams);
        GamestateRandomTestingUnit            generator  = new GamestateRandomTestingUnit(777);

        for (short i = 0; i < 100; i++)
        {
            TeamEntry teamEntry = teams.Create(i);
            generator.RandomiseTeamEntry(teamEntry);

            GamestatePacket packet = GamestatePacketManager.GetPacket();

            bool errorCallbackCalled = false;

            teamEntry.Commit((TeamEntry entry, bool succeeded) => {
                Assert.That(succeeded, Is.EqualTo(true));
                GamestateAssertionUnit.AssertPacketApplied(entry, packet);
                entry.Release();
                errorCallbackCalled = true;
            });

            packet = testHelper.commitedPackets[0];
            testHelper.Apply(packet);

            Assert.That(errorCallbackCalled, Is.EqualTo(true));

            testHelper.commitedPackets.Clear();
        }
    }
示例#3
0
    public void GamestateApplyPlayerPacketListenerDeletionTest()
    {
        short actorNumber = 1;
        GamestateCommitTestHelper <PlayerEntry> testHelper = new GamestateCommitTestHelper <PlayerEntry>(actorNumber);
        GamestateTable <PlayerEntry>            players    = testHelper.TestTable(GamestateTracker.Table.Players);
        GamestateRandomTestingUnit generator = new GamestateRandomTestingUnit(12);

        for (short i = 0; i < 100; i++)
        {
            PlayerEntry playerEntry = players.Create(i);
            generator.RandomisePlayerEntry(playerEntry);

            GamestatePacket packet = GamestatePacketManager.GetPacket();

            bool listenerACalled = false;
            bool listenerBCalled = false;
            bool listenerCCalled = false;
            bool listenerDCalled = false;

            int a = playerEntry.AddListener((PlayerEntry entry) => {
                entry.Release();
                listenerACalled = true;
            });

            int b = playerEntry.AddListener((PlayerEntry entry) => {
                entry.Release();
                listenerBCalled = true;
            });

            int c = playerEntry.AddListener((PlayerEntry entry) => {
                entry.Release();
                listenerCCalled = true;
            });

            playerEntry.RemoveListener(b);

            int d = playerEntry.AddListener((PlayerEntry entry) => {
                entry.Release();
                listenerDCalled = true;
            });

            playerEntry.RemoveListener(c);


            playerEntry.Commit();

            packet = testHelper.commitedPackets[0];
            testHelper.Apply(packet);

            Assert.That(listenerACalled, Is.EqualTo(true));
            Assert.That(listenerBCalled, Is.EqualTo(false));
            Assert.That(listenerCCalled, Is.EqualTo(false));
            Assert.That(listenerDCalled, Is.EqualTo(true));

            testHelper.commitedPackets.Clear();
        }
    }
示例#4
0
    public void GamestateApplyPlayerPacketMultipleErrorCallbacksTest()
    {
        short actorNumber = 1;
        GamestateCommitTestHelper <PlayerEntry> testHelper = new GamestateCommitTestHelper <PlayerEntry>(actorNumber);
        GamestateTable <PlayerEntry>            players    = testHelper.TestTable(GamestateTracker.Table.Players);
        GamestateRandomTestingUnit generator = new GamestateRandomTestingUnit(23);

        for (short i = 0; i < 100; i++)
        {
            PlayerEntry playerEntry = players.Create(i);
            generator.RandomisePlayerEntry(playerEntry);

            GamestatePacket packet = GamestatePacketManager.GetPacket();

            bool errorCallbackACalled = false;
            bool errorCallbackBCalled = false;

            playerEntry.Commit((PlayerEntry entry, bool succeeded) => {
                Assert.That(succeeded, Is.EqualTo(true));
                GamestateAssertionUnit.AssertPacketApplied(entry, packet);
                entry.Release();
                errorCallbackACalled = true;
            });

            playerEntry = players.Get(i);

            playerEntry.Commit((PlayerEntry entry, bool succeeded) => {
                Assert.That(succeeded, Is.EqualTo(false));
                GamestateAssertionUnit.AssertPacketApplied(entry, packet);
                entry.Release();
                errorCallbackBCalled = true;
            });

            packet = testHelper.commitedPackets[0];
            testHelper.Apply(packet);

            Assert.That(errorCallbackACalled, Is.EqualTo(true));
            Assert.That(errorCallbackBCalled, Is.EqualTo(true));

            testHelper.commitedPackets.Clear();
        }
    }