public void Dispose_aborts_pending_receive()
        {
            var client   = new FakeUdpClient();
            var readTask = client.ReceiveAsync(new byte[1], 0, FakeEndPoints.CreateLocal());

            client.Dispose();
            readTask.Awaiting(t => t).Should().Throw <Exception>();
        }
        public async Task Staging_packet_makes_it_available_in_receive()
        {
            using (var client = new FakeUdpClient())
            {
                var remote = FakeEndPoints.CreateRemote();
                client.StageReceivedPacket(remote, 1, 2, 3);
                var buffer = new byte[10];
                var result = await client.ReceiveAsync(buffer, 0, remote).ConfigureAwait(true);

                result.ReceivedBytes.Should().Be(3);
                result.RemoteEndPoint.Should().Be(remote);
                buffer.Take(3).Should().Equal(1, 2, 3);
            }
        }