/**
* (c) Urs Zeidler
*/
package de.urszeidler.eclipse.shr5.gameplay.tests;
import junit.framework.TestCase;
import junit.textui.TestRunner;
import org.eclipse.emf.ecore.EStructuralFeature;
import de.urszeidler.eclipse.shr5.AbstraktPersona;
import de.urszeidler.eclipse.shr5.AttributModifikatorWert;
import de.urszeidler.eclipse.shr5.KoerperPersona;
import de.urszeidler.eclipse.shr5.PersonaEigenschaft;
import de.urszeidler.eclipse.shr5.Shr5Factory;
import de.urszeidler.eclipse.shr5.Shr5Package;
import de.urszeidler.eclipse.shr5.gameplay.CombatTurn;
import de.urszeidler.eclipse.shr5.gameplay.Command;
import de.urszeidler.eclipse.shr5.gameplay.GameplayFactory;
import de.urszeidler.eclipse.shr5.gameplay.InitativePass;
import de.urszeidler.eclipse.shr5.gameplay.InterruptAction;
import de.urszeidler.eclipse.shr5.gameplay.util.CommandCallback;
import de.urszeidler.eclipse.shr5.gameplay.util.GameplayTools;
import de.urszeidler.eclipse.shr5.runtime.RuntimeCharacter;
/**
* <!-- begin-user-doc -->
* A test case for the model object '<em><b>Combat Turn</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are tested:
* <ul>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.Command#getCmdCallback() <em>Cmd Callback</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.Command#isCanExecute() <em>Can Execute</em>}</li>
* </ul>
* </p>
* <p>
* The following operations are tested:
* <ul>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn() <em>Do Turn</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.Command#redo() <em>Redo</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.Command#undo() <em>Undo</em>}</li>
* </ul>
* </p>
* @generated
*/
public class CombatTurnTest extends TestCase {
public final class CommandCallbackImplementation implements CommandCallback {
@Override
public boolean prepareCommand(Command cmd, EStructuralFeature... eStructuralFeatures) {
return true;
}
@Override
public void afterCommand(Command cmd, EStructuralFeature... eStructuralFeatures) {
}
@Override
public void beforeExecute(Command cmd, EStructuralFeature... eStructuralFeatures) {
}
@Override
public void beforeSubcommands(Command cmd, EStructuralFeature... eStructuralFeatures) {
}
}
/**
* The fixture for this Combat Turn test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected CombatTurn fixture = null;
private RuntimeCharacter character1;
private RuntimeCharacter character2;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public static void main(String[] args) {
TestRunner.run(CombatTurnTest.class);
}
/**
* Constructs a new Combat Turn test case with the given name.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public CombatTurnTest(String name) {
super(name);
}
/**
* Sets the fixture for this Combat Turn test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void setFixture(CombatTurn fixture) {
this.fixture = fixture;
}
/**
* Returns the fixture for this Combat Turn test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected CombatTurn getFixture() {
return fixture;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see junit.framework.TestCase#setUp()
* @generated not
*/
@Override
protected void setUp() throws Exception {
setFixture(GameplayFactory.eINSTANCE.createCombatTurn());
character1 = GameplayTools.createRuntimeCharacter();
character2 = GameplayTools.createRuntimeCharacter();
// getFixture().setCmdCallback(new CommandCallback() {
//
// @Override
// public void prepareCommand(Command cmd, EStructuralFeature... eStructuralFeatures) {
//
//
// }
// });
getFixture().getCombatants().add(character1);
getFixture().getCombatants().add(character2);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see junit.framework.TestCase#tearDown()
* @generated
*/
@Override
protected void tearDown() throws Exception {
setFixture(null);
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#getCmdCallback() <em>Cmd Callback</em>}' feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#getCmdCallback()
* @generated not
*/
public void testGetCmdCallback() {
assertNull(getFixture().getCmdCallback());
getFixture().setCmdCallback(new CommandCallbackImplementation());
assertNotNull(getFixture().getCmdCallback());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#setCmdCallback(de.urszeidler.eclipse.shr5.gameplay.util.CommandCallback)
* <em>Cmd Callback</em>}' feature setter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#setCmdCallback(de.urszeidler.eclipse.shr5.gameplay.util.CommandCallback)
* @generated not
*/
public void testSetCmdCallback() {
assertNull(getFixture().getCmdCallback());
getFixture().setCmdCallback(new CommandCallbackImplementation());
assertNotNull(getFixture().getCmdCallback());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#unsetCmdCallback() <em>unsetCmdCallback()</em>}' method.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#unsetCmdCallback()
* @generated not
*/
public void testUnsetCmdCallback() {
assertNull(getFixture().getCmdCallback());
getFixture().setCmdCallback(new CommandCallbackImplementation());
assertNotNull(getFixture().getCmdCallback());
getFixture().setCmdCallback(null);
assertNull(getFixture().getCmdCallback());
getFixture().unsetCmdCallback();
assertFalse(getFixture().isSetCmdCallback());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#isSetCmdCallback() <em>isSetCmdCallback()</em>}' method.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#isSetCmdCallback()
* @generated not
*/
public void testIsSetCmdCallback() {
assertNull(getFixture().getCmdCallback());
assertFalse(getFixture().isSetCmdCallback());
getFixture().setCmdCallback(new CommandCallbackImplementation());
assertNotNull(getFixture().getCmdCallback());
assertTrue(getFixture().isSetCmdCallback());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#isCanExecute() <em>Can Execute</em>}' feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#isCanExecute()
* @generated not
*/
public void testIsCanExecute() {
assertTrue(getFixture().isCanExecute());
getFixture().getCombatants().clear();
assertFalse(getFixture().isCanExecute());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn() <em>Do Turn</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn()
* @generated not
*/
public void testDoTurn() {
// assertNull(getFixture().getCurrentTurn());
// assertEquals(0, getFixture().getSubCommands().size());
// assertEquals(0,getFixture().getActionPhases().size());
//
// getFixture().redo();
//
// assertEquals(2, getFixture().getSubCommands().size());
testRedo();
assertEquals(2, getFixture().getActionPhases().size());
assertNotNull(getFixture().getCurrentTurn());
InitativePass turn1 = getFixture().getCurrentTurn();
getFixture().doTurn();
assertNotNull(getFixture().getCurrentTurn());
assertNotSame(turn1, getFixture().getCurrentTurn());
getFixture().doTurn();
assertNull(getFixture().getCurrentTurn());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn() <em>Do Turn</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn()
* @generated not
*/
public void testDoTurn_Ini1() {
AbstraktPersona persona = character1.getCharacter().getPersona();
adjustPersona(persona);
AbstraktPersona persona1 = character2.getCharacter().getPersona();
adjustPersona(persona1);
assertNull(getFixture().getCurrentTurn());
assertEquals(0, getFixture().getSubCommands().size());
assertEquals(0, getFixture().getActionPhases().size());
getFixture().redo();
assertEquals(4, getFixture().getActionPhases().size());
assertEquals(2, getFixture().getSubCommands().size());
//
assertNotNull(getFixture().getCurrentTurn());
InitativePass turn1 = getFixture().getCurrentTurn();
assertEquals(11, turn1.getPhase());
getFixture().doTurn();
assertNotNull(getFixture().getCurrentTurn());
assertNotSame(turn1, getFixture().getCurrentTurn());
InitativePass turn2 = getFixture().getCurrentTurn();
assertEquals(11, turn2.getPhase());
getFixture().doTurn();
InitativePass turn11 = getFixture().getCurrentTurn();
assertEquals(1, turn11.getPhase());
getFixture().doTurn();
assertNotNull(getFixture().getCurrentTurn());
assertNotSame(turn11, getFixture().getCurrentTurn());
InitativePass turn12 = getFixture().getCurrentTurn();
assertEquals(1, turn12.getPhase());
getFixture().doTurn();
assertNull(getFixture().getCurrentTurn());
}
protected void adjustPersona(AbstraktPersona persona) {
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
PersonaEigenschaft personaEigenschaft = Shr5Factory.eINSTANCE.createPersonaEigenschaft();
AttributModifikatorWert modifikatorWert = Shr5Factory.eINSTANCE.createAttributModifikatorWert();
modifikatorWert.setAttribut(Shr5Package.Literals.SPEZIELLE_ATTRIBUTE__INITATIV_WUERFEL);
modifikatorWert.setWert(-1);
personaEigenschaft.getMods().add(modifikatorWert);
kp.getEigenschaften().add(personaEigenschaft);
}
persona.setReaktionBasis(5);
persona.setIntuitionBasis(6);
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#redo() <em>Redo</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#redo()
* @generated not
*/
public void testRedo() {
assertNull(getFixture().getCurrentTurn());
assertEquals(0, getFixture().getSubCommands().size());
assertEquals(0, getFixture().getActionPhases().size());
getFixture().redo();
assertEquals(2, getFixture().getSubCommands().size());
assertEquals(2, getFixture().getActionPhases().size());
assertNotNull(getFixture().getCurrentTurn());
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.Command#undo() <em>Undo</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.Command#undo()
* @generated not
*/
public void testUndo() {
}
/**
* Tests the '{@link de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn() <em>Do Turn</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see de.urszeidler.eclipse.shr5.gameplay.CombatTurn#doTurn()
* @generated not
*/
public void testDoTurn_InterruptAction() {
AbstraktPersona persona = character1.getCharacter().getPersona();
adjustPersona(persona);
persona.setIntuitionBasis(7);
AbstraktPersona persona1 = character2.getCharacter().getPersona();
adjustPersona(persona1);
assertNull(getFixture().getCurrentTurn());
assertEquals(0, getFixture().getSubCommands().size());
assertEquals(0, getFixture().getActionPhases().size());
getFixture().redo();
assertEquals(4, getFixture().getActionPhases().size());
assertEquals(2, getFixture().getSubCommands().size());
//
assertNotNull(getFixture().getCurrentTurn());
InitativePass turn1 = getFixture().getActionPhases().get(1);
InterruptAction ia = GameplayFactory.eINSTANCE.createInterruptAction();
ia.setIniCost(-5);
turn1.setInterruptAction(ia);
ia.redo();
assertEquals(6, turn1.getPhase());
assertEquals(3, getFixture().getActionPhases().size());
getFixture().doTurn();
assertNotNull(getFixture().getCurrentTurn());
assertSame(turn1, getFixture().getCurrentTurn());
InitativePass turn2 = getFixture().getCurrentTurn();
assertEquals(6, turn2.getPhase());
getFixture().doTurn();
InitativePass turn11 = getFixture().getCurrentTurn();
assertEquals(2, turn11.getPhase());
getFixture().doTurn();
assertNull(getFixture().getCurrentTurn());
}
} // CombatTurnTest