private void assertRankedPathEquals(final RankedPath expected, final RankedPath actual) { Assert.assertNotNull("Actual path is null.", actual); final StringBuilder failure = new StringBuilder(); if (!expected.getReason().equals(actual.getReason())) { failure.append("\nExpected :").append(expected.getReason()); failure.append("\nActual :").append(actual.getReason()); } if (!expected.getPath().equals(actual.getPath())) { failure.append("\nExpected :").append(expected.toString()); failure.append("\nActual :").append(actual.toString()); } final int expectedRank = (int) (expected.getRank() * (1 / TOLERANCE)); final int actualRank = (int) (actual.getRank() * (1 / TOLERANCE)); if (expectedRank != actualRank) { failure.append("\nExpected :").append(expected.getRank()); failure.append("\nActual :").append(actual.getRank()); } if (!StringUtil.isNullOrEmpty(failure.toString())) { Assert.fail(failure.toString()); } }
/** * Helper function to perform some modifications to a given path. * Intended to happen after we pick the best path. * @param path The ranked path to process * @return Altered move path */ private MovePath performPathPostProcessing(final RankedPath path) { return performPathPostProcessing(path.getPath(), path.getExpectedDamage()); }
formula); RankedPath rankedPath = new RankedPath(utility, pathCopy, formula.toString()); rankedPath.setExpectedDamage(maximumDamageDone); return rankedPath; } finally {
.when(testRanker) .getMovePathSuccessProbability(Mockito.any(MovePath.class), Mockito.any(StringBuilder.class)); expected = new RankedPath(-98.125, mockPath, "Calculation: {" + "fall mod [" + LOG_DECIMAL.format(50) + " = " + LOG_DECIMAL .format(0.5) + " * " + LOG_DECIMAL.format actual = testRanker.rankPath(mockPath, mockGame, 18, 0.5, 20, testEnemies, friendsCoords); assertRankedPathEquals(expected, actual); if (baseRank < actual.getRank()) { Assert.fail("Higher chance to fall should mean lower rank."); actual = testRanker.rankPath(mockPath, mockGame, 18, 0.5, 20, testEnemies, friendsCoords); assertRankedPathEquals(expected, actual); if (baseRank < actual.getRank()) { Assert.fail("Higher chance to fall should mean lower rank."); actual = testRanker.rankPath(mockPath, mockGame, 18, 0.5, 20, testEnemies, friendsCoords); assertRankedPathEquals(expected, actual); if (baseRank > actual.getRank()) { Assert.fail("The more damage I do, the higher the path rank should be."); actual = testRanker.rankPath(mockPath, mockGame, 18, 0.5, 20, testEnemies, friendsCoords); assertRankedPathEquals(expected, actual); if (baseRank < actual.getRank()) { Assert.fail("The less damage I do, the lower the path rank should be."); LOG_INT.format(1) + "})]"); actual = testRanker.rankPath(mockPath, mockGame, 18, 0.5, 20, testEnemies, friendsCoords); if (baseRank < actual.getRank()) {
ArrayList<WeightedPath> getAllWeightedPaths(Entity entity, IGame game) { final String METHOD_NAME = "getAllWeightedPaths(Entity, IGame)"; owner.methodBegin(getClass(), METHOD_NAME); try { ranker.initUnitTurn(entity, game); TreeMap<PathState, WeightedPath> pathmap = new TreeMap<PathState, WeightedPath>(); ArrayList<WeightedPath> start_path = new ArrayList<WeightedPath>(); MovePath empty_path = new MovePath(game, entity); double empty_rank = ranker.rankPath(empty_path, game).getRank(); WeightedPath start = new WeightedPath(empty_path, empty_rank); pathmap.put(new PathState(start.path), start); start_path.add(start); if (entity.getJumpMP() > 0) { //allow jumping MovePath jump_path = new MovePath(game, entity); jump_path.addStep(MoveStepType.START_JUMP); WeightedPath startjump = new WeightedPath(jump_path, empty_rank - 0.1); pathmap.put(new PathState(startjump.path), startjump); start_path.add(startjump); } return seeAllPaths(start_path, true, true, game, pathmap); } finally { owner.methodEnd(getClass(), METHOD_NAME); } }
formula); if (facingMod == -10000) { return new RankedPath(facingMod, pathCopy, formula.toString()); RankedPath rankedPath = new RankedPath(utility, pathCopy, formula.toString()); rankedPath.setExpectedDamage(maximumDamageDone); return rankedPath; } finally {
new PathSearcher.WeightedPath(p, ranker.rankPath(p, game).getRank()); pathmap.put(mystate, nextpath); next_steps.add(nextpath);