package de.tu_dresden.inf.ggp06_2.games;
import org.junit.Before;
import org.junit.BeforeClass;
import static org.junit.Assert.assertTrue;
import org.apache.log4j.Logger;
import org.junit.Test;
import de.tu_dresden.inf.ggp06_2.gamedb.logic.GameManager;
import de.tu_dresden.inf.ggp06_2.parser.Parser;
import de.tu_dresden.inf.ggp06_2.resolver.ExpressionList;
import de.tu_dresden.inf.ggp06_2.resolver.Atom;
/*
* So far, this file only tests handling of synchronous and
* singlePlayer descriptors of a game
* TODO: test other features of the Game class
* */
import de.tu_dresden.inf.ggp06_2.simulator.Game;
import de.tu_dresden.inf.ggp06_2.simulator.flags.TimerFlag;
import java.util.ArrayList;
import java.util.List;
public class GameTest {
private static final Logger logger = Logger.getLogger( GameTest.class );
private ExpressionList expressionList1;
private ExpressionList expressionList2;
private ExpressionList expressionList3;
private Game game;
private TimerFlag timerFlag;
private static GameManager manager;
private List<ExpressionList> expListList;
private List<ExpressionList> expListList2 = new ArrayList<ExpressionList>();
@BeforeClass
public static void putTitle(){
logger.info( "\n=== GameTest ===" );
manager = new GameManager();
}
@Before
public void setUp() {
expressionList1 = Parser.parseFile( "testdata/games/Othello.kif" );
game = manager.getGameByGDL( expressionList1.toString() );
timerFlag = new TimerFlag();
/*
* For the game of Othello WHITE player has 4 legal moves,
* while BLACK has only NOOP, combined there should be 4 possibilities
*/
try {
expressionList2 = game.getLegalMoves( new Atom("WHITE"),
game.getInitialNode().getState(), timerFlag );
expressionList3 = game.getLegalMoves( new Atom("BLACK"),
game.getInitialNode().getState(), timerFlag );
expListList = game.
getCombinedLegalMoves( game.getInitialNode().getState(), timerFlag );
}
catch ( InterruptedException e1 ) {
logger.error( "error during initialization!" );
e1.printStackTrace();
}
//Computing the combined legal moves 'by hand'
for (int i = 0; i < expressionList2.size(); i++){
for (int j = 0; j < expressionList3.size(); j++){
ExpressionList e = new ExpressionList(expressionList2.get( i ));
e.add( expressionList3.get( j ) );
expListList2.add( e );
}
}
}
// Test if getCombinedLegalMoves() returns the same combined moves for
// Othello as computed 'by hand' above
@Test
public void combinedMovesTest(){
logger.info( ""+expListList );
assertTrue(expListList.equals( expListList2));
}
}