@Test
public void testIfSavegameOfSavegameEqualsSavegame() throws IOException, MapLoadException, ClassNotFoundException, InterruptedException {
final byte playerId = 0;
final int targetTimeMinutes = 30;
MapLoader map = MapUtils.getMountainlake();
ReplayUtils.PlayMapResult directSavegameReplay = ReplayUtils.playMapToTargetTimes(map, playerId, targetTimeMinutes);
assertDirectSavegameReplay(1, directSavegameReplay);
MapLoader savegame = directSavegameReplay.getSavegames()[0];
Thread.sleep(2000L);
System.out.println("Loading savegame...");
MatchConstants.init(new NetworkTimer(true), 0L);
MainGridWithUiSettings loadedMap = savegame.loadMainGrid(PlayerSetting.createDefaultSettings(playerId, (byte) savegame.getMaxPlayers()));
MainGrid mainGrid = loadedMap.getMainGrid();
PlayerState playerState = loadedMap.getPlayerState(playerId);
mainGrid.initForPlayer(playerId, playerState.getFogOfWar());
MapLoader savegameOfSavegame;
try {
System.out.println("Creating savegame of savegame...");
savegameOfSavegame = MapUtils.saveMainGrid(mainGrid, playerId, playerState.getUiState());
assertNotNull(savegameOfSavegame);
} finally {
mainGrid.stopThreads();
JSettlersGame.clearState();
}
MapUtils.compareMapFiles(savegame, savegameOfSavegame);
}