1
0
Fork 0
spacetac/src/core/diffs/ShipEffectChangedDiff.spec.ts

76 lines
3.7 KiB
TypeScript

module TK.SpaceTac.Specs {
testing("ShipEffectChangedDiff", test => {
test.case("applies and reverts", check => {
let battle = TestTools.createBattle();
let ship = battle.fleets[0].ships[0];
let effect1 = new BaseEffect("e1");
let effect2 = new StickyEffect(new BaseEffect("e2"), 2);
let effect3 = new StickyEffect(new BaseEffect("e3"), 3);
ship.active_effects.add(effect1);
ship.active_effects.add(effect2);
ship.active_effects.add(effect3);
TestTools.diffChain(check, battle, [
new ShipEffectChangedDiff(ship, effect1),
new ShipEffectChangedDiff(ship, effect2, -1),
new ShipEffectChangedDiff(ship, effect3, 1),
], [
check => {
check.equals(ship.active_effects.count(), 3, "effect count");
check.equals(effect2.duration, 2, "duration effect2");
check.equals(effect3.duration, 3, "duration effect3");
},
check => {
check.equals(ship.active_effects.count(), 3, "effect count");
check.equals(effect2.duration, 2, "duration effect2");
check.equals(effect3.duration, 3, "duration effect3");
},
check => {
check.equals(ship.active_effects.count(), 3, "effect count");
check.equals(effect2.duration, 1, "duration effect2");
check.equals(effect3.duration, 3, "duration effect3");
},
check => {
check.equals(ship.active_effects.count(), 3, "effect count");
check.equals(effect2.duration, 1, "duration effect2");
check.equals(effect3.duration, 4, "duration effect3");
},
]);
});
test.case("leaves original effect untouched", check => {
let battle = TestTools.createBattle();
let ship = battle.fleets[0].ships[0];
let effect = new StickyEffect(new BaseEffect("effect"), 2);
let effect_at_removal = copy(effect);
effect_at_removal.duration = 1;
TestTools.diffChain(check, battle, [
new ShipEffectAddedDiff(ship, effect),
new ShipEffectChangedDiff(ship, effect, -1),
new ShipEffectRemovedDiff(ship, effect_at_removal),
], [
check => {
check.equals(ship.active_effects.count(), 0, "effect count");
check.equals(effect.duration, 2, "original duration");
},
check => {
check.equals(ship.active_effects.count(), 1, "effect count");
check.equals(effect.duration, 2, "original duration");
check.equals((<StickyEffect>nn(ship.active_effects.get(effect.id))).duration, 2, "active duration");
},
check => {
check.equals(ship.active_effects.count(), 1, "effect count");
check.equals(effect.duration, 2, "original duration");
check.equals((<StickyEffect>nn(ship.active_effects.get(effect.id))).duration, 1, "active duration");
},
check => {
check.equals(ship.active_effects.count(), 0, "effect count");
check.equals(effect.duration, 2, "original duration");
},
]);
});
});
}