public void GivenA0DegreeHeading_WhenMoveAction_ThenMoveRightBySpeed()
        {
            var bot    = FakeGameObjectProvider.GetBotAt(new Position(0, 0));
            var action = FakeGameObjectProvider.GetForwardPlayerActionInHeading(bot.Id, 0);

            var finalPosition = vectorCalculatorService.GetPointFrom(new Position(0, 0), 10, action.Heading);

            Assert.True(finalPosition.X == 10);
            Assert.True(finalPosition.Y == 0);
        }
        public void GivenBot_WhenActionIsProcessed_ThenVectorIsStepwiseCalculated()
        {
            SetupFakeWorld(true, false);
            var bot = FakeGameObjectProvider.GetBotWithActions();

            bot.IsMoving = true;
            vectorCalculatorServiceMock.Setup(x => x.GetPointFrom(It.IsAny <Position>(), It.IsAny <int>(), It.IsAny <int>()))
            .Returns(VectorCalculatorService.GetPointFrom(bot.Position, 1, bot.CurrentHeading));
            vectorCalculatorServiceMock.Setup(x => x.IsInWorldBounds(It.IsAny <Position>(), It.IsAny <int>())).Returns(true);
            vectorCalculatorServiceMock
            .Setup(vcs => vcs.CollectCollisionDetectionPointsAlongPath(It.IsAny <Position>(), It.IsAny <Position>(), It.IsAny <int>()))
            .Returns(
                new List <Position> {
                new Position(0, 0),
                new Position(1, 1),
                new Position(2, 2)
            });
            Assert.DoesNotThrow(() => tickProcessingService.SimulateTick());
        }