public static File createRandomSaveGame() {
    // start a server
    FreeColServer serv = startServer(false, true);

    // generate a random map
    Controller c = serv.getController();
    assertNotNull(c);
    assertTrue(c instanceof PreGameController);
    PreGameController pgc = (PreGameController) c;
    try {
      pgc.startGame();
    } catch (FreeColException e) {
      fail(e.getMessage());
    }
    assertEquals(FreeColServer.GameState.IN_GAME, serv.getGameState());
    assertNotNull(serv.getGame());
    assertNotNull(serv.getGame().getMap());

    // save the game as a file
    File file = new File(TEST_FILE);
    try {
      serv.saveGame(file, null);
    } catch (IOException e) {
      e.printStackTrace();
      fail(e.toString());
    }
    assertTrue(file.exists());
    stopServer();

    return file;
  }
 public static void stopServer() {
   if (server != null) {
     Controller c = server.getController();
     assertNotNull(c);
     c.shutdown();
     server = null;
   }
 }
  /**
   * Start a new server game, using a *copy* of a supplied map.
   *
   * @param map The <code>Map</code> to copy.
   * @param spec The <code>Specification</code> to use.
   * @return The new running server game.
   */
  public static Game startServerGame(Map map, Specification spec) {
    stopServerGame();
    FreeColServer serv = startServer(false, true, spec);
    serv.setMapGenerator(new MockMapGenerator(serv.getGame(), map));
    PreGameController pgc = (PreGameController) serv.getController();
    try {
      pgc.startGame();
    } catch (FreeColException e) {
      fail("Failed to start game: " + e.getMessage());
    }

    Game game = serv.getGame();
    FreeColTestCase.setGame(game);
    if (game.getCurrentPlayer() == null) {
      game.setCurrentPlayer(game.getFirstPlayer());
    }
    random = new Random();
    return game;
  }
 public static FreeColServer startServer(
     File file, boolean publicServer, boolean singlePlayer, int port, String name) {
   stopServer();
   try {
     server = new FreeColServer(new FreeColSavegameFile(file), null, port, name);
   } catch (Exception e) {
     fail(e.getMessage());
   }
   assertNotNull(server);
   assertEquals(FreeColServer.GameState.IN_GAME, server.getGameState());
   return server;
 }
 public static FreeColServer startServer(
     boolean publicServer, boolean singlePlayer, Specification spec, int port, String name) {
   stopServer();
   try {
     // FIXME: Pass tc
     server = new FreeColServer(publicServer, singlePlayer, spec, port, name);
   } catch (IOException ex) {
     fail(ex.getMessage());
   }
   assertNotNull(server);
   assertEquals(FreeColServer.GameState.STARTING_GAME, server.getGameState());
   return server;
 }
 public static InGameController getInGameController() {
   return server.getInGameController();
 }
 public static void newTurn() {
   ServerGame game = (ServerGame) server.getGame();
   game.csNewTurn(random, new LogBuilder(0), new ChangeSet());
 }