2017-11-14 00:07:06 +00:00
|
|
|
module TK.SpaceTac.Specs {
|
|
|
|
testing("StickyEffect", test => {
|
|
|
|
test.case("applies to ship", check => {
|
|
|
|
let battle = new Battle();
|
|
|
|
let ship = battle.fleets[0].addShip();
|
|
|
|
|
|
|
|
check.in("before", check => {
|
|
|
|
check.equals(ship.active_effects.count(), 0, "no sticky effect");
|
2018-03-26 15:30:43 +00:00
|
|
|
check.equals(ship.getAttribute("evasion"), 0, "evasion");
|
2017-11-14 00:07:06 +00:00
|
|
|
})
|
|
|
|
|
2018-03-26 15:30:43 +00:00
|
|
|
let effect = new StickyEffect(new AttributeEffect("evasion", 1), 2);
|
2018-03-20 23:23:00 +00:00
|
|
|
battle.applyDiffs(effect.getOnDiffs(ship, ship));
|
2017-11-14 00:07:06 +00:00
|
|
|
|
|
|
|
check.in("after", check => {
|
2017-11-28 18:15:22 +00:00
|
|
|
check.equals(ship.active_effects.count(), 1, "one sticky effect");
|
|
|
|
let sticked = ship.active_effects.list()[0];
|
|
|
|
if (sticked instanceof StickyEffect) {
|
|
|
|
check.equals(sticked.base, effect.base, "sticked effect");
|
|
|
|
check.equals(sticked.duration, 2, "sticked duration");
|
2018-03-26 15:30:43 +00:00
|
|
|
check.equals(ship.getAttribute("evasion"), 1, "evasion");
|
2017-11-28 18:15:22 +00:00
|
|
|
sticked.duration = 1;
|
|
|
|
} else {
|
|
|
|
check.fail("Not a sticky effect");
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2018-03-20 23:23:00 +00:00
|
|
|
battle.applyDiffs(effect.getOnDiffs(ship, ship));
|
2017-11-28 18:15:22 +00:00
|
|
|
|
|
|
|
check.in("after second apply", check => {
|
2017-11-14 00:07:06 +00:00
|
|
|
check.equals(ship.active_effects.count(), 1, "one sticky effect");
|
|
|
|
let sticked = ship.active_effects.list()[0];
|
|
|
|
if (sticked instanceof StickyEffect) {
|
|
|
|
check.equals(sticked.base, effect.base, "sticked effect");
|
|
|
|
check.equals(sticked.duration, 2, "sticked duration");
|
2018-03-26 15:30:43 +00:00
|
|
|
check.equals(ship.getAttribute("evasion"), 1, "evasion");
|
2017-11-14 00:07:06 +00:00
|
|
|
} else {
|
|
|
|
check.fail("Not a sticky effect");
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
|
|
|
|
test.case("gets a textual description", check => {
|
|
|
|
check.equals(new StickyEffect(new DamageEffect(10), 2).getDescription(), "do 10 damage for 2 turns");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|