Exemple #1
0
        public void UserInfoAnswerTest()
        {
            var packet = new UserInfoAnswerPacket()
            {
                Permissions = Utilities.Rand.Next(),
                Characters  = new []
                {
                    new Character()
                    {
                        Name            = "TestChar",
                        Id              = Utilities.Rand.NextUInt32(),
                        Avatar          = 2,
                        Level           = 10,
                        ActiveVehicleId = Utilities.Rand.NextUInt32(),
                        CreationDate    = Utilities.Rand.Next(),
                        CrewId          = Utilities.Rand.NextUInt32(),
                        ActiveCar       = new Vehicle() // Normally this points to an object in GarageVehicles.
                        {
                            CarType   = Utilities.Rand.NextUInt32(),
                            BaseColor = Utilities.Rand.NextUInt32()
                        },
                        Crew = new Crew
                        {
                            Name   = "TestTeam",
                            MarkId = Utilities.Rand.NextInt64()
                        }
                    }
                },
                Username = "******"
            };
            var bytes = packet.GetBytes();

            // +2 here since packet id is 2 bytes aka short.
            Assert.IsTrue(bytes.Length + 2 == packet.ExpectedSize(), $"Packet Size mismatch {bytes.Length+2} vs expected {packet.ExpectedSize()}");

            using (var ms = new MemoryStream(bytes))
            {
                using (var bs = new BinaryReaderExt(ms))
                {
                    var permissions = bs.ReadInt32();
                    Assert.AreEqual(packet.Permissions, permissions);

                    var characterCount = bs.ReadInt32();
                    Assert.AreEqual(packet.Characters.Length, characterCount);

                    var username = bs.ReadUnicodeStatic(18);
                    Assert.AreEqual(packet.Username, username);

                    var long1 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long1);

                    var long2 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long2);

                    var long3 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long3);

                    var int1 = bs.ReadInt32(); // Always 0
                    Assert.AreEqual(0, int1);

                    for (int i = 0; i < characterCount; i++)
                    {
                        var characterName = bs.ReadUnicodeStatic(21);
                        StringAssert.AreEqualIgnoringCase(packet.Characters[i].Name, characterName);

                        var charId = bs.ReadUInt64();
                        Assert.AreEqual(packet.Characters[i].Id, charId);

                        var avatar = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].Avatar, avatar);

                        var level = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].Level, level);

                        var currentCarId = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveVehicleId, currentCarId);

                        var carType = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveCar.CarType, carType);

                        var baseColor = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveCar.BaseColor, baseColor);

                        var creationDate = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].CreationDate, creationDate);

                        var tid = bs.ReadInt64(); // TeamId!!!
                        Assert.AreEqual(packet.Characters[i].CrewId, tid);

                        var teamMarkId = bs.ReadInt64();
                        Assert.AreEqual(packet.Characters[i].Crew.MarkId, teamMarkId);

                        var teamName     = bs.ReadUnicodeStatic(13);
                        var expectedName = packet.Characters[i].Crew.Name;
                        if (expectedName.Length > 13)
                        {
                            expectedName = expectedName.Substring(0, 13);
                        }
                        StringAssert.AreEqualIgnoringCase(expectedName, teamName);
                    }
                }
            }
        }