public void TestShutdownString()
        {
            Assert.AreEqual(NetPeerStatus.Running, Peer.Status);
            Assert.IsNotNull(Connection);

            TestHelper.WaitForConnection(Connection);
            TestHelper.WaitFor(() => Server.ConnectionsCount != 0);

            Peer.Shutdown("bye");

            TestHelper.WaitFor(() => Server.ConnectionsCount == 0);
            TestHelper.HasMessage(
                PeerMessages,
                NetIncomingMessageType.DebugMessage,
                message =>
                string.Equals(
                    "Shutdown requested (reason)",
                    message.ReadString(),
                    StringComparison.Ordinal
                    )
                );

            var messageShutdownReason = ServerMessages.Last(
                message => NetIncomingMessageType.StatusChanged == message.MessageType
                );

            Assert.IsNotNull(messageShutdownReason);
            var status = (NetConnectionStatus)messageShutdownReason.ReadByte();

            Assert.AreEqual(NetConnectionStatus.Disconnected, status);
            Assert.AreEqual("bye", messageShutdownReason.ReadString());
        }
        public void TestShutdownMessageWithDebugString()
        {
            Assert.AreEqual(NetPeerStatus.Running, Peer.Status);
            Assert.IsNotNull(Connection);

            TestHelper.WaitForConnection(Connection);
            TestHelper.WaitFor(() => Server.ConnectionsCount != 0);

            var testString      = $"{nameof(TestShutdownMessage)}_{new CryptoRandom().NextUInt64()}";
            var outgoingMessage = Peer.CreateMessage();

            outgoingMessage.Write(testString);
            Peer.Shutdown(outgoingMessage, "debugMessage");

            TestHelper.WaitFor(() => Server.ConnectionsCount == 0);
            TestHelper.HasMessage(
                PeerMessages,
                NetIncomingMessageType.DebugMessage,
                message =>
                string.Equals(
                    "Shutdown requested (debugMessage)",
                    message.ReadString(),
                    StringComparison.Ordinal
                    )
                );

            var messageShutdownReason = ServerMessages.Last(
                message => NetIncomingMessageType.StatusChanged == message.MessageType
                );

            Assert.IsNotNull(messageShutdownReason);
            var status = (NetConnectionStatus)messageShutdownReason.ReadByte();

            Assert.AreEqual(NetConnectionStatus.Disconnected, status);
            Assert.AreEqual(testString, messageShutdownReason.ReadString());
        }