/**
* Copyright (C) 2002-2012 The FreeCol Team
*
* This file is part of FreeCol.
*
* FreeCol is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* FreeCol is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with FreeCol. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.freecol.server;
import java.io.File;
import net.sf.freecol.common.FreeColException;
import net.sf.freecol.common.io.FreeColSavegameFile;
import net.sf.freecol.common.option.FileOption;
import net.sf.freecol.common.option.MapGeneratorOptions;
import net.sf.freecol.server.control.Controller;
import net.sf.freecol.server.control.PreGameController;
import net.sf.freecol.server.generator.MapGenerator;
import net.sf.freecol.util.test.FreeColTestCase;
public class SaveLoadTest extends FreeColTestCase {
private FreeColServer server = null;
@Override
public void tearDown() throws Exception {
if (server != null) { // Make sure that the server is stopped.
ServerTestHelper.stopServer(server);
server = null;
}
super.tearDown();
}
public void testDelayedLoading() {
File file = ServerTestHelper.createRandomSaveGame();
ServerTestHelper.stopServer(server);
server = ServerTestHelper.startServer(false, true);
try {
server.loadGame(new FreeColSavegameFile(file));
} catch (Exception e) {
e.printStackTrace();
fail();
}
assertNotNull(server.getGame());
assertNotNull(server.getGame().getMap());
file.delete();
assertFalse(file.exists());
}
public void testImmediateLoading() {
File file = ServerTestHelper.createRandomSaveGame();
ServerTestHelper.stopServer(server);
server = ServerTestHelper.startServer(file, false, true);
assertNotNull(server.getGame());
assertNotNull(server.getGame().getMap());
file.delete();
assertFalse(file.exists());
}
public void testImport() {
File file = ServerTestHelper.createRandomSaveGame();
ServerTestHelper.stopServer(server);
server = ServerTestHelper.startServer(false, true);
MapGenerator mapGenerator = server.getMapGenerator();
((FileOption) mapGenerator.getMapGeneratorOptions()
.getOption(MapGeneratorOptions.IMPORT_FILE)).setValue(file);
Controller c = server.getController();
assertNotNull(c);
assertTrue(c instanceof PreGameController);
PreGameController pgc = (PreGameController)c;
try {
pgc.startGame();
} catch (FreeColException e) {
fail(e.getMessage());
}
((FileOption) mapGenerator.getMapGeneratorOptions()
.getOption(MapGeneratorOptions.IMPORT_FILE)).setValue(null);
assertEquals(FreeColServer.GameState.IN_GAME, server.getGameState());
assertNotNull(server.getGame());
assertNotNull(server.getGame().getMap());
file.delete();
assertFalse(file.exists());
}
}