public void ReturnsBadRequestWhenModelStateIsInvalid() { // Arrange var battleshipOptions = new BattleshipOptions { Alignment = BattleShip.Horizontal, Column = 1, Row = 0, ShipSize = 4, OpponentId = 2 }; _mockBattleshipUtility.Setup(m => m.AddBattleship(It.IsAny <Cell[][]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())).Returns((BattleshipUtilityResult)null); Cell[][] playerBoard = null; var memoryCache = MockMemoryCacheService.GetMockedMemoryCache(); memoryCache.Set(0, playerBoard); var battleshipController = new BattleshipController(memoryCache, _mockBattleshipUtility.Object); // Act battleshipController.ModelState.AddModelError("Bad", "Request"); var subject = battleshipController.Add(battleshipOptions); // Assert var badRequestObjectResult = subject.Result as Microsoft.AspNetCore.Mvc.BadRequestObjectResult; Assert.IsNull(subject.Value); Assert.AreEqual(badRequestObjectResult.StatusCode.Value, StatusCodes.Status400BadRequest); }
public void Attack_Fails_BattleshipGameException() { var user = MockClaimsPrincipal(); var mockService = new Mock <IBattleshipGameService>(); // var playerList = new List<string> { "alice" }; mockService.Setup(x => x.Attack(It.IsAny <string>(), It.IsAny <Coordinates>())) .Throws(new BattleshipGameException()); var controller = new BattleshipController(_config, mockService.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = user } } }; var result = controller.Attack(new AttackModel()); var apiResponse = (ApiResponse <string>)result; //Assert Assert.Equal(HttpStatusCode.BadRequest, apiResponse.StatusCode); }
public void AddBattleShip_Returns_Success() { var user = MockClaimsPrincipal(); var mockService = new Mock <IBattleshipGameService>(); mockService.Setup(x => x.AddBattleship(It.IsAny <string>(), It.IsAny <Ship>(), It.IsAny <Coordinates>(), It.IsAny <ShipPlacement>())) .Returns(true); var controller = new BattleshipController(_config, mockService.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = user } } }; var result = controller.AddBattleShip(new BattleshipModel()); var apiResponse = (ApiResponse <string>)result; //Assert Assert.Equal(HttpStatusCode.OK, apiResponse.StatusCode); }
public void CreateBoard_Fails_On_ReCreate() { var user = MockClaimsPrincipal(); var mockService = new Mock <IBattleshipGameService>(); // var playerList = new List<string> { "alice" }; mockService.Setup(x => x.CreateBoard(It.IsAny <string>(), It.IsAny <int>())) .Throws(new BattleshipGameException("Board is already created")); var controller = new BattleshipController(_config, mockService.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = user } } }; var result = controller.CreateBoard(); var apiResponse = (ApiResponse <string>)result; //Assert Assert.Equal(HttpStatusCode.BadRequest, apiResponse.StatusCode); }
public void CreateBoard_Returns_Success() { var user = MockClaimsPrincipal(); var mockService = new Mock <IBattleshipGameService>(); // var playerList = new List<string> { "alice" }; mockService.Setup(x => x.CreateBoard(It.IsAny <string>(), It.IsAny <int>())) .Returns(() => true); var controller = new BattleshipController(_config, mockService.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = user } } }; var result = controller.CreateBoard(); var apiResponse = (ApiResponse <string>)result; //Assert Assert.Equal(HttpStatusCode.Created, apiResponse.StatusCode); }
public void Should_ExecuteCommand_ReturnsHitOrMiss_DependsOnGivenCoordinates(string command, ExecutionResultType expected) { // Arrange var sut = new BattleshipController(_fixture.BattleshipPlan()); // Act var result = sut.ExecuteCommand(command); // Assert result.ResultType.Should().Be(expected); }
public void Should_ExecuteCommand_ReturnsGameOver_WhenAllTheShipsAreDestroyed() { // Arrange var sut = new BattleshipController(_fixture.BattleshipPlan()); // Act var result = sut.ExecuteCommand("A1"); result = sut.ExecuteCommand("A2"); result = sut.ExecuteCommand("A3"); result = sut.ExecuteCommand("A4"); // Assert result.ResultType.Should().Be(ExecutionResultType.Hit); result.GameOver.Should().BeTrue(); }
public void ReturnsValidPlayerBoard() { // Arrange var playerId = 1; var defaultBoard = BattleshipUtilityTestHelpers.CreateDefaultBoard(); _mockBattleshipUtility.Setup(m => m.CreateDefaultBoard()).Returns(defaultBoard); var memoryCache = new MemoryCache(new MemoryCacheOptions()); var battleshipController = new BattleshipController(memoryCache, _mockBattleshipUtility.Object); // Act var subject = battleshipController.Get(); // Assert Assert.AreEqual(subject.PlayerId, playerId); Assert.IsNotNull(subject.PlayerBoard); }
static void Main(string[] args) { var plan = new BattleshipPlanBuilder(new RandomPlacementStrategy()) .SetDimension(10, 10) .AddShip(ShipType.Battleship) .AddShip(ShipType.Destroyer) .AddShip(ShipType.Destroyer) .Build(); var controller = new BattleshipController(plan); while (true) { Console.Write("Enter your command: "); var command = Console.ReadLine(); if (string.IsNullOrWhiteSpace(command)) { continue; } if (command.Equals("quit", StringComparison.CurrentCultureIgnoreCase)) { Environment.Exit(0); } var result = controller.ExecuteCommand(command); if (result.ResultType != ExecutionResultType.NoExecution) { Console.WriteLine(result.Description); } if (!result.GameOver) { continue; } Console.WriteLine("Game over ..."); Environment.Exit(0); } }
public void ReturnsValidBattleship() { // Arrange var battleshipOptions = new BattleshipOptions { Alignment = BattleShip.Horizontal, Column = 1, PlayerId = 1, Row = 1, ShipSize = 4, OpponentId = 2 }; _mockBattleshipUtility.Setup( m => m.AddBattleship( It.IsAny <Cell[][]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())) .Returns(new BattleshipUtilityResult("Battleship added", BattleshipResultType.Added)); var memoryCache = MockMemoryCacheService.GetMemoryCache(BattleshipUtilityTestHelpers.CreateDefaultBoard()); var battleshipController = new BattleshipController(memoryCache, _mockBattleshipUtility.Object); // Act var subject = battleshipController.Add(battleshipOptions); // Assert Assert.IsNotNull(subject); Assert.AreEqual(subject.Value.ResultType, BattleshipResultType.Added); }
public void ReturnsNotFoundWhenPlayerboardIsNull() { // Arrange var battleshipOptions = new BattleshipOptions { Alignment = BattleShip.Horizontal, Column = 1, PlayerId = 1, Row = 1, ShipSize = 4, OpponentId = 2 }; _mockBattleshipUtility.Setup(m => m.AddBattleship(It.IsAny <Cell[][]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())).Returns((BattleshipUtilityResult)null); Cell[][] playerBoard = null; var memoryCache = MockMemoryCacheService.GetMockedMemoryCache(); memoryCache.Set(0, playerBoard); var battleshipController = new BattleshipController(memoryCache, _mockBattleshipUtility.Object); // Act var subject = battleshipController.Add(battleshipOptions); // Assert var notFoundObjectResult = subject.Result as Microsoft.AspNetCore.Mvc.NotFoundObjectResult; Assert.IsNull(subject.Value); Assert.AreEqual(notFoundObjectResult.StatusCode.Value, StatusCodes.Status404NotFound); }