package no.hal.scxml.generator;
import org.eclipse.emf.ecore.EObject;
public class GameTest extends ScxmlTestCase {
@Override
protected void setUp() throws Exception {
setUp("Game1.xmi");
}
public void testGame1() {
startScxml();
EObject game = getEObject(getState("QuestionGame.active"));
EObject level1 = getEObject(getState("QuestionGame.level1"));
EObject level2 = getEObject(getState("QuestionGame.level2"));
assertNotNull(game);
assertNotNull(level1);
assertNotNull(level2);
EObject gui = (EObject)eGet(game, "gui");
assertNotNull(gui);
// check SCXML state
assertInState("QuestionGame.active QuestionGame.level1.ask QuestionGame.level2.idle");
// check GUI state
assertEquals(eGet(gui, "question"), eGet(level1, "question"));
String feedback = (String)eGet(gui, "feedback");
assertTrue(feedback == null || "".equals(feedback));
// provide a wrong answer
eSet(gui, "answer", "Kluff!");
resumeScxml();
// check SCXML state (same states)
assertInState("QuestionGame.active QuestionGame.level1.ask QuestionGame.level2.idle");
// check GUI state
assertEquals(eGet(gui, "question"), eGet(level1, "question"));
feedback = (String)eGet(gui, "feedback");
assertTrue(feedback != null && feedback.contains("rong"));
// provide a correct answer for level1
eSet(gui, "answer", eGet(level1, "answer"));
resumeScxml();
// check SCXML state (same states)
assertInState("QuestionGame.active QuestionGame.level1.correct QuestionGame.level2.ask");
// check GUI state
assertEquals(eGet(gui, "question"), eGet(level2, "question"));
feedback = (String)eGet(gui, "feedback");
assertTrue(feedback == null || "".equals(feedback));
// provide a correct answer for level2
eSet(gui, "answer", eGet(level2, "answer"));
resumeScxml();
// check SCXML state (same states)
assertInState("QuestionGame.finished QuestionGame.level1.correct QuestionGame.level2.correct");
// check GUI state
assertEquals(eGet(gui, "question"), null);
feedback = (String)eGet(gui, "feedback");
assertTrue(feedback != null && feedback.contains("inished"));
}
}