public void TestNetworkedUserInput()
        {
            var scl = new ServerPlayerListener(new NetworkConnectorServer(15005, 15006), npf);

            var client = new NetworkConnectorClient();

            client.Connect("127.0.0.1", 15005);

            var proxy = new ProxyPlayerInputHandler(client.UserInputHandlerTransporter);

            // Done setup

            scl.UpdateConnectedPlayers();
            proxy.OnSave();
            Thread.Sleep(100);
            scl.Players.First().NetworkPlayerInputForwarder.ForwardReceivedInputs();

            inputHandler.Received().OnSave();
        }
        private static void testInputHandler(IClientPacketTransporter <UserInputHandlerPacket> proxyTrans, IClientPacketTransporter <UserInputHandlerPacket> realTrans)
        {
            var world         = TestWorldBuilder.createTestWorld(20, 10);
            var proxyHandler  = new ProxyPlayerInputHandler(proxyTrans);
            var realHandler   = Substitute.For <IPlayerInputHandler>();
            var inputReceiver = new NetworkPlayerInputForwarder(realTrans, realHandler, world);

            proxyHandler.OnSave();
            Thread.Sleep(100);
            inputReceiver.ForwardReceivedInputs();
            realHandler.Received().OnSave();

            proxyHandler.OnNextTool();
            Thread.Sleep(100);
            inputReceiver.ForwardReceivedInputs();
            realHandler.Received().OnNextTool();

            proxyHandler.OnPreviousTool();
            Thread.Sleep(100);
            inputReceiver.ForwardReceivedInputs();
            realHandler.Received().OnPreviousTool();

            var pos1 = new Point2(3, 4);

            proxyHandler.OnLeftClick(world.GetVoxel(pos1));
            Thread.Sleep(100);
            inputReceiver.ForwardReceivedInputs();
            realHandler.Received().OnLeftClick(world.GetVoxel(pos1));


            var pos2 = new Point2(3, 4);

            proxyHandler.OnRightClick(world.GetVoxel(pos2));
            Thread.Sleep(100);
            inputReceiver.ForwardReceivedInputs();
            realHandler.Received().OnRightClick(world.GetVoxel(pos2));
        }