Пример #1
0
        public void FiveStepsAwayFromMaxWinning_IterativeSearch_ReuseCache_MaxWin(int degreeOfParallelism, ParallelismMode parallelismMode)
        {
            var startState = Connect4TestUtils.GetMaxFiveMovesAwayFromWinningState();
            var engine     = Connect4TestUtils.GetSearchEngine(degreeOfParallelism, parallelismMode, 1, CacheMode.ReuseCache);

            var evaluation = new IterativeSearchWrapper(engine).IterativeSearch(startState, 1, 8, CancellationToken.None);

            Assert.AreEqual(BoardEvaluator.MaxEvaluation, evaluation.Evaluation);
        }
Пример #2
0
        public void FiveStepsAwayFromMaxWinning_MaxTurn_MaxWin(int degreeOfParallelism, ParallelismMode parallelismMode, CacheMode cacheMode)
        {
            var startState = Connect4TestUtils.GetMaxFiveMovesAwayFromWinningState();

            var engine     = Connect4TestUtils.GetSearchEngine(degreeOfParallelism, parallelismMode, 1, CacheMode.ReuseCache);
            var evaluation = engine.Search(startState, 5);

            Assert.AreEqual(BoardEvaluator.MaxEvaluation, evaluation.Evaluation);
            Assert.IsTrue(BoardEvaluator.IsWin(((Connect4State)evaluation.StateSequence.Last()).Board, Player.Max), "Should have found a wining state");
            Assert.IsTrue(evaluation.AllChildrenAreDeadEnds, "All children should be dead ends");
        }
Пример #3
0
        public void FiveStepsAwayFromMaxWinning_ReuseCache_DontDieEarly_MaxWin(int degreeOfParallelism, ParallelismMode parallelismMode)
        {
            var startState = Connect4TestUtils.GetMaxFiveMovesAwayFromWinningState();

            var engine = Connect4TestUtils.GetSearchEngine(degreeOfParallelism, parallelismMode, 1, CacheMode.ReuseCache);

            engine.DieEarly = false;
            engine.Search(startState, 5);
            Assert.IsTrue(((StateCacheManager)engine.CacheManager).Count > 0, "The cache doesn't contain any states");

            var evaluation = engine.Search(startState, 5);

            Assert.AreEqual(BoardEvaluator.MaxEvaluation, evaluation.Evaluation);
        }
Пример #4
0
        public void FiveStepsAwayFromMaxWinning_FillCache_MaxWin(int degreeOfParallelism, ParallelismMode parallelismMode)
        {
            var startState = Connect4TestUtils.GetMaxFiveMovesAwayFromWinningState();

            var engine = Connect4TestUtils.GetSearchEngine(degreeOfParallelism, parallelismMode, 1, CacheMode.ReuseCache);

            engine.DieEarly = true;
            engine.FillCache(startState, CancellationToken.None);
            Assert.IsTrue(((StateCacheManager)engine.CacheManager).Count > 0, "The cache doesn't contain any states");
            Assert.IsNotNull(engine.CacheManager.GetStateEvaluation(startState, 0, null), "The cache doesn't contain the start state");

            var evaluation = engine.Search(startState, 5);

            Assert.AreEqual(BoardEvaluator.MaxEvaluation, evaluation.Evaluation);
        }