コード例 #1
0
            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);
            }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
            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);
            }
コード例 #9
0
        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);
            }
        }
コード例 #10
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);
            }
コード例 #11
0
            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);
            }