예제 #1
0
        public void PingPackageDeserializationTest()
        {
            PingPackage expected = new PingPackage
            {
                Value = 10
            };

            var buffer = expected.ToByteArray();

            PingPackage       actual      = new PingPackage();
            int               len         = 0;
            ClientPackageType packageType = ClientPackageType.None;

            using (var stream = new MemoryStream(buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    len         = reader.ReadInt32();
                    packageType = (ClientPackageType)reader.ReadByte();
                    actual.FromByteArray(reader.ReadBytes(len - 1));
                }
            }

            Assert.AreEqual(5, len);
            Assert.AreEqual(ClientPackageType.Ping, packageType);
            Assert.AreEqual(9, buffer.Length);
            Assert.AreEqual(expected.Value, actual.Value);
        }
예제 #2
0
        public ClientPackage GetNextPackage(Stream stream)
        {
            ClientPackage result = null;

            byte[] data = new byte[4];
            stream.Read(data, 0, 4);
            int len = BitConverter.ToInt32(data, 0);

            if (len <= 0)
            {
                return(null);
            }

            ClientPackageType type = (ClientPackageType)stream.ReadByte();

            data = new byte[len - 1];
            stream.Read(data, 0, len - 1);
            switch (type)
            {
            case ClientPackageType.Ping:
                result = new PingPackage();
                break;

            case ClientPackageType.Login:
                result = new LoginPackage();
                break;

            case ClientPackageType.GetRoom:
                result = new GetRoomPackage();
                break;

            case ClientPackageType.SetTargets:
                result = new SetTargetsPackage();
                break;

            case ClientPackageType.ExitFromRoom:
                result = new ExitFromRoomPackage();
                break;
            }

            result.FromByteArray(data);
            return(result);
        }
예제 #3
0
        public void ExitFromRoomPackageDeserializationTest()
        {
            var buffer = _expected.ToByteArray();

            SetTargetsPackage actual      = new SetTargetsPackage();
            ClientPackageType packageType = ClientPackageType.None;

            using (var stream = new MemoryStream(buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var len = reader.ReadInt32();
                    packageType = (ClientPackageType)reader.ReadByte();
                    actual.FromByteArray(reader.ReadBytes(len - 1));
                }
            }

            Assert.AreEqual(_expected.Type, packageType);
            Assert.AreEqual(_expected.Units.Length, actual.Units.Length);
        }
예제 #4
0
        public void LoginPackageDeserializationTest()
        {
            LoginPackage expected = new LoginPackage();

            var buffer = expected.ToByteArray();

            ClientPackageType packageType = ClientPackageType.None;
            LoginPackage      actual      = new LoginPackage();

            using (var stream = new MemoryStream(buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var len = reader.ReadInt32();
                    packageType = (ClientPackageType)reader.ReadByte();
                    actual.FromByteArray(reader.ReadBytes(len - 1));
                }
            }

            Assert.AreEqual(ClientPackageType.Login, packageType);
        }
예제 #5
0
        public void ExitFromRoomPackageDeserializationTest()
        {
            ExitFromRoomPackage expected = new ExitFromRoomPackage {
                RoomId = 1
            };

            var buffer = expected.ToByteArray();

            ExitFromRoomPackage actual      = new ExitFromRoomPackage();
            ClientPackageType   packageType = ClientPackageType.None;

            using (var stream = new MemoryStream(buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var len = reader.ReadInt32();
                    packageType = (ClientPackageType)reader.ReadByte();
                    actual.FromByteArray(reader.ReadBytes(len - 1));
                }
            }

            Assert.AreEqual(expected.Type, packageType);
            Assert.AreEqual(expected.RoomId, actual.RoomId);
        }