Protogame.Tests.MxTests.TestAcknowledgeEventData C# (CSharp) Méthode

TestAcknowledgeEventData() public méthode

Test that a small piece of data can be sent over the unreliable protocol.
public TestAcknowledgeEventData ( ) : void
Résultat void
        public void TestAcknowledgeEventData()
        {
            const string Text = @"hello";

            var udpClient1 = new UdpClient(0);
            var udpClient2 = new UdpClient(0);

            var dispatcher1 = new MxDispatcher(udpClient1);
            var dispatcher2 = new MxDispatcher(udpClient2);

            var port1 = ((IPEndPoint)udpClient1.Client.LocalEndPoint).Port;
            var port2 = ((IPEndPoint)udpClient2.Client.LocalEndPoint).Port;

            try
            {
                string receivedText = null;
                bool acknowledged = false;

                dispatcher1.MessageReceived +=
                    (sender, args) =>
                    {
                        receivedText = Encoding.ASCII.GetString(args.Payload);
                    };

                dispatcher2.MessageAcknowledged += (sender, args) =>
                {
                    acknowledged = true; 
                };

                var client = dispatcher2.Connect(new IPEndPoint(IPAddress.Loopback, port1));
                var clientGroup = dispatcher2.PlaceInGroup(client, "Group2");

                this.SimulateNetworkCycles(4, dispatcher1, dispatcher2);

                dispatcher2.Send(clientGroup, Encoding.ASCII.GetBytes(Text));

                _assert.Null(receivedText);

                this.SimulateNetworkCycles(8, dispatcher1, dispatcher2);

                _assert.Equal(Text, receivedText);
                _assert.True(acknowledged);
            }
            finally
            {
                dispatcher1.Close();
                dispatcher2.Close();
            }
        }