public void CreateBuildingsTest(
            ClassicGameCondition sut)
        {
            var buildings = sut.CreateBuildings();

            Assert.Equal(sut.Buildings.Wall, buildings.Wall);
            Assert.Equal(sut.Buildings.Tower, buildings.Tower);
        }
        public void IsWinNoWinTest(Game game,
                                   ClassicGameCondition sut)
        {
            sut.MaxResources = 20;
            sut.MaxTower     = 25;

            var winResult = sut.IsWin(game);

            Assert.Null(winResult);
        }
        public void IsWinWhenBuildTowerTest(Game game,
                                            [Frozen] Mock <IWinResultFactory> winResultFactoryMock,
                                            ClassicGameCondition sut)
        {
            sut.MaxTower = 15;

            var winResult = sut.IsWin(game);

            Assert.NotNull(winResult);
            winResultFactoryMock.Verify(wrf => wrf.CreateBuildTowerWinResult(PlayerMode.FirstPlayer), Times.Once);
        }
        public void IsWinWhenAccumulateResourcesTest(Game game,
                                                     [Frozen] Mock <IWinResultFactory> winResultFactoryMock,
                                                     ClassicGameCondition sut)
        {
            sut.MaxResources = 3;
            sut.MaxTower     = 25;

            var winResult = sut.IsWin(game);

            Assert.NotNull(winResult);
            winResultFactoryMock.Verify(wrf => wrf.CreateAccumulateResourcesWinResult(PlayerMode.FirstPlayer), Times.Once);
        }
        public void CreateResourcesTest(
            ClassicGameCondition sut)
        {
            var resources = sut.CreateResources();

            Assert.Equal(sut.Resources.Quarry, resources.Quarry);
            Assert.Equal(sut.Resources.Bricks, resources.Bricks);
            Assert.Equal(sut.Resources.Magic, resources.Magic);
            Assert.Equal(sut.Resources.Gems, resources.Gems);
            Assert.Equal(sut.Resources.Dungeons, resources.Dungeons);
            Assert.Equal(sut.Resources.Recruits, resources.Recruits);
        }
        public void IsWinWhenDestroyTowerAdversaryTest(Game game,
                                                       [Frozen] Mock <IWinResultFactory> winResultFactoryMock,
                                                       ClassicGameCondition sut)
        {
            sut.MaxResources = 20;
            sut.MaxTower     = 25;
            game.FirstPlayer.Buildings.Tower = 0;

            var winResult = sut.IsWin(game);

            Assert.NotNull(winResult);
            winResultFactoryMock.Verify(wrf => wrf.CreateDestroyTowerWinResult(PlayerMode.SecondPlayer), Times.Once);
        }