private void Packet_ThrowsException_IfPacketIsntRegistered(ISerializer serializer)
        {
            var packet = new UnregisteredPacket {
            };

            try {
                SerializedPacket.Create(packet, serializer);
                Assert.Fail("Exception should have been thrown");
            } catch (UnregisteredPacketException) {
            }

            Packet.RegisterPacketType <UnregisteredPacket>();

            var serialized = SerializedPacket.Create(packet, serializer);

            Packet.UnregisterPacketType <UnregisteredPacket>();

            try {
                var ser = SerializedPacket.Read(serialized);
                ser.DeserializePacket(serializer);
                Assert.Fail("Exception should have been thrown");
            } catch (UnregisteredPacketException) {
                Assert.Pass();
            }
        }
        private void Serialization(ISerializer serializer)
        {
            var message = new Message("userb", "hi");

            var serialized = SerializedPacket.Create(message, serializer);

            var read = SerializedPacket.Read(serialized);

            var deserialized = read.DeserializePacket(serializer);

            Assert.IsInstanceOf <Message>(deserialized);
        }
        private void Serialization(ISerializer serializer)
        {
            const string test     = "test";
            var          original = new RequestPacket(test)
            {
                Origin      = new User("1", "name"),
                Destination = "destination",
                Sent        = DateTimeOffset.Now
            };

            var bytes = SerializedPacket.Create(original, serializer);

            var sp = SerializedPacket.Read(bytes);

            var unserialized = sp.DeserializePacket(serializer);

            Assert.AreEqual(original.Sent, unserialized.Sent);
            Assert.AreEqual(original.PacketType, unserialized.PacketType);
            Assert.AreEqual(original.Origin, unserialized.Origin);
            Assert.AreEqual(original.Destination, unserialized.Destination);
            Assert.AreEqual(original.Flags, unserialized.Flags);
        }