public void Composes_arguments_into_expected_report_format(int coordinateX, int coordinateY, CardinalDirection cardinalDirection, string expectedReport)
            {
                var point = new Point(coordinateX, coordinateY);

                var reportComposer = new ConsoleReportComposer();
                var report = reportComposer.Compose(point, cardinalDirection);
                Assert.AreEqual(expectedReport, report);
            }
            public void When_any_Rover_not_deployed_throws_ReportException()
            {
                var mockRover = new Mock<IRover>();
                mockRover.Setup(x => x.IsDeployed()).Returns(false);
                var rovers = new List<IRover> {mockRover.Object};

                var reportComposer = new ConsoleReportComposer();

                Assert.Throws<ReportException>(() => reportComposer.CompileReports(rovers));
            }
            public void When_all_Rovers_deployed_requests_Rover_Positions_and_CardinalDirections()
            {
                var mockRover = new Mock<IRover>();
                mockRover.Setup(x => x.IsDeployed()).Returns(true);
                var rovers = new List<IRover> {mockRover.Object, mockRover.Object, mockRover.Object};

                var reportComposer = new ConsoleReportComposer();
                reportComposer.CompileReports(rovers);

                mockRover.VerifyGet(x => x.Position, Times.Exactly(3));
                mockRover.VerifyGet(x => x.CardinalDirection, Times.Exactly(3));
            }