public void TestSimulateWithNoErrors(string input, Point[] expectedCoordinates, char[] expectedDirections, bool hasError) { SetUpLogging(); var parser = new Parser(Log.Logger); var plateau = new Plateau(parser); var factory = new MovableFactory(plateau, parser, Log.Logger); var mars = new MarsSimulator(plateau, parser, factory, Log.Logger).Init(input); mars.Simulate(); for (var i = 0; i < expectedCoordinates.Length; i++) { var movable = mars.Movables.FirstOrDefault(p => p.Id == i + 1); Assert.IsFalse(mars.AreaToExplore.IsPositionOpen(expectedCoordinates[i]), "Rover " + (i + 1) + " in wrong position"); Assert.AreEqual(expectedDirections[i], movable.Direction, "Rover " + (i + 1) + " facing wrong direction"); } }
public void TestSimulateContingencyDeploymentSuccessOnRover2(string input) { var loggerMock = new Mock <ILogger>(); loggerMock.Setup(p => p.Warning(It.IsAny <string>())); var parser = new Parser(loggerMock.Object); var plateau = new Plateau(parser); var factory = new MovableFactory(plateau, parser, loggerMock.Object); var mars = new MarsSimulator(plateau, parser, factory, loggerMock.Object).Init(input); mars.Simulate(); Assert.AreEqual(2, plateau.Grid[4][0].Id); loggerMock.Verify(p => p.Warning <Point>(It.IsAny <string>(), It.IsAny <Point>())); //bad deploy, aborted movement cmd }
public void TestSimulateContingencyDeploymentErrorOnRover2(string input) { var loggerMock = new Mock <ILogger>(); loggerMock.Setup(p => p.Error(It.IsAny <string>())); var parser = new Parser(loggerMock.Object); var plateau = new Plateau(parser); var factory = new MovableFactory(plateau, parser, loggerMock.Object); var mars = new MarsSimulator(plateau, parser, factory, loggerMock.Object).Init(input); mars.Simulate(); Assert.AreEqual(1, plateau.Grid[4][0].Id); Assert.AreNotEqual(2, plateau.Grid[4][0].Id); Assert.AreEqual(3, plateau.Grid[4][1].Id); loggerMock.Verify(p => p.Error(It.IsAny <string>()), Times.Exactly(2)); //bad deploy, aborted movement cmd }
public void TestSimulateInvalidMovementCommandErrorHandled(string input) { var loggerMock = new Mock <ILogger>(); loggerMock.Setup(p => p.Error(It.IsAny <string>())); var parser = new Parser(loggerMock.Object); var plateau = new Plateau(parser); var factory = new MovableFactory(plateau, parser, loggerMock.Object); var mars = new MarsSimulator(plateau, parser, factory, loggerMock.Object).Init(input); mars.Simulate(); var movable = mars.AreaToExplore.Grid[4][0]; Assert.IsNotNull(movable); Assert.AreEqual('E', movable.Direction); loggerMock.Verify(p => p.Error(It.IsAny <string>()), Times.Exactly(1)); }