public void testEngineAgainstAlphaBeta(MockScorer scorer, int level, MockBoard b) {

    ABWithHashMoveEngine engine =
        new ABWithHashMoveEngine(scorer, MoveContainerFactory.buildMoveContainers(level + 1));

    AlphaBetaEngine alphaBetaEngine =
        new AlphaBetaEngine(scorer, MoveContainerFactory.buildMoveContainers(level + 1));

    Board b1 = b.copy();
    Board b2 = b.copy();

    LOGGER.info("Alpha Beta level={}", level);
    MovePath abMovePath = alphaBetaEngine.search(b1, level);
    List<Move> alphaBetaMoveList = abMovePath.asList();
    LOGGER.info(
        "AlphaBetaEngine score: {} Move Path: {}",
        abMovePath.getScore(),
        MockBoard.movesToString(alphaBetaMoveList));

    LOGGER.info("Alpha Beta With hash level={}", level);
    MovePath mp = engine.iterativeSearch(b2, level);
    List<Move> engineMoveList = mp.asList();
    LOGGER.info(
        "Alpha Beta with Hash Move score: {} Path: {}",
        mp.getScore(),
        MockBoard.movesToString(engineMoveList));

    assertThat(alphaBetaMoveList, is(equalTo(engineMoveList)));
  }