package model;
import java.util.Iterator;
import org.junit.Test;
import org.jmock.Expectations;
import org.jmock.Mockery;
import colloid.RecountApp;
import colloid.model.event.*;
import colloid.model.event.DoesNotExist;
import colloid.model.event.Combat.Event;
import colloid.model.event.RecountLoop.InterruptLoopException;
import static org.junit.Assert.*;
public class ModelEvent {
Mockery context = new Mockery();
private static final String combatStr ="[23:23:12.901] [@Jolo] [@Jano] [Innervate {1104395005591552}] [ApplyEffect {836045448945477}: Heal {836045448945500}] (1714* force)";
@Test
public void createRecountApp() throws InterruptLoopException {
final Combat.Recount recount = context.mock(Combat.Recount.class);
context.checking(new Expectations() {{
oneOf(recount).onUpdate();
oneOf(recount).onStart();
oneOf(recount).onStop();
}});
}
@Test
public void compileCharacter() {
Actor actor = null;
try {
actor = new Actor(combatStr);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Target target = null;
try {
target = new Target(combatStr);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
assertEquals("@Jolo", actor.getName());
assertEquals("@Jano", target.getName());
final String logdata ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
Actor actor1 = null;
try {
actor1 = new Actor(logdata);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
assertEquals("Thul Artillery Droid", actor1.getName());
}
@Test
public void compileCombatHealEvent() {
Actor actor = null;
try {
actor = new Actor(combatStr);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CombatHealEvent healEvent = new CombatHealEvent(actor, combatStr);
assertEquals(1714.0, healEvent.getValue(), 0);
final String logdataForce ="[23:23:12.901] [@Jolo] [@Jano] [Innervate {1104395005591552}] [ApplyEffect {836045448945477}: Heal {836045448945500}] (1714 force)";
CombatHealEvent healEvent1 = new CombatHealEvent(actor, logdataForce);
assertEquals(1714.0, healEvent1.getValue(), 0);
final String logdata ="[23:23:12.901] [@Jolo] [@Jano] [Innervate {1104395005591552}] [ApplyEffect {836045448945477}: Heal {836045448945500}] (1714)";
CombatHealEvent healEvent2 = new CombatHealEvent(actor, logdata);
assertEquals(1714.0, healEvent2.getValue(), 0);
}
@Test
public void compileCombatDamageEvent() {
final String logdata ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
Actor actor = null;
try {
actor = new Actor(logdata);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CombatEvent event = new CombatDamageEvent(actor, logdata);
assertEquals(346.0, event.getValue(), 0);
}
@Test
public void compileThreatDamageEvent() {
final String logdata ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <348>";
Actor actor = null;
try {
actor = new Actor(logdata);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CombatEvent event = new CombatThreatEvent(actor, logdata);
assertEquals(348.0, event.getValue(), 0);
}
@Test
public void addCombatDamageEvent() {
final String logdata ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
Actor actor = null;
try {
actor = new Actor(logdata);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
RecountApp.getInstance();
actor.setOnDamage(new Combat.EventHandler<Combat.Event>() {
@Override
public void handle(Combat.Event event) {
assertEquals(346.0, event.getValue(), 0);
assertTrue("instance of CombatDamageEvent", event instanceof CombatDamageEvent);
}
});
actor.handleEvent(logdata);
}
@Test
public void appRegisterActor() {
try {
Actor actor = new Actor(combatStr);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
RecountApp app = RecountApp.getInstance();
try {
app.registerActor(new Actor(combatStr));
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
app.registerActor(new Actor(combatStr));
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final String logdata ="[23:45:15.154] [@Yalo:Kira Carsen {349412769398784}] [Thul Artillery Droid {670199581769728}:9572007456857] [Bleeding (Physical) {2071080474771712}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (76 internal {836045448940876}) <76>";
try {
app.registerActor(new Actor(logdata));
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final String logdata1 ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
Actor droid = null;
try {
droid = new Actor(logdata1);
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
app.registerActor(droid);
final String logdata2 ="[23:45:16.972] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Charged Plating {811980747177984}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (189 energy {836045448940874}) <189>";
try {
app.registerActor(new Actor(logdata2));
} catch (DoesNotExist e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator<Actor> iter = app.getActors().iterator();
while(iter.hasNext()) {
Actor act = iter.next();
act.setOnDamage(new Combat.EventHandler<Combat.Event>() {
@Override
public void handle(Event event) {
}
});
act.setOnHeal(new Combat.EventHandler<Combat.Event>() {
@Override
public void handle(Event event) {
// TODO Auto-generated method stub
}
});
act.handleEvent(combatStr);
act.handleEvent(combatStr);
act.handleEvent(combatStr);
act.handleEvent(logdata);
act.handleEvent(logdata1);
act.handleEvent(logdata2);
}
assertEquals(3, app.getActors().size());
assertEquals(droid, app.getActorList().get(0));
}
@Test public void compileAbility() {
final String logdata ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
final String logdata1 ="[23:23:12.901] [@Jolo] [@Jano] [Innervate {1104395005591552}] [ApplyEffect {836045448945477}: Heal {836045448945500}] (1714* force)";
final String logdata2 ="[23:45:12.782] [Thul Artillery Droid {670199581769728}:9572007456857] [@Yalo] [Twin-linked Railguns {2455114975543296}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (346 energy {836045448940874}) <346>";
final String logdata3 ="[23:23:12.901] [@Jolo] [@Jano] [Innervate {1104395005591552}] [ApplyEffect {836045448945477}: Heal {836045448945500}] (1714)";
Ability ability = null;
Ability ability1 = null;
Ability ability2 = null;
Ability ability3 = null;
try {
ability = new Ability(logdata);
ability1 = new Ability(logdata1);
ability2 = new Ability(logdata2);
ability3 = new Ability(logdata3);
} catch (DoesNotExist e) {
e.printStackTrace();
}
assertEquals("Twin-linked Railguns", ability.name());
assertEquals("Innervate", ability1.name());
assertEquals("Twin-linked Railguns", ability2.name());
assertEquals("Innervate", ability3.name());
assertTrue("Equals the same ability", ability1.equals(ability3));
}
}