82 lines
3.1 KiB
TypeScript
82 lines
3.1 KiB
TypeScript
module TS.SpaceTac.Specs {
|
|
describe("Equipment", () => {
|
|
it("generates a full name", function () {
|
|
let equipment = new Equipment(SlotType.Weapon, "rayofdeath");
|
|
expect(equipment.getFullName()).toEqual("Level 1 rayofdeath");
|
|
|
|
equipment.name = "Ray of Death";
|
|
expect(equipment.getFullName()).toEqual("Level 1 Ray of Death");
|
|
|
|
equipment.quality = EquipmentQuality.LEGENDARY;
|
|
expect(equipment.getFullName()).toEqual("Level 1 Legendary Ray of Death");
|
|
});
|
|
|
|
it("checks capabilities requirements", function () {
|
|
var equipment = new Equipment();
|
|
var ship = new Ship();
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(true);
|
|
|
|
equipment.requirements["skill_time"] = 2;
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(false);
|
|
|
|
ship.attributes.skill_time.set(1);
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(false);
|
|
|
|
ship.attributes.skill_time.set(2);
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(true);
|
|
|
|
ship.attributes.skill_time.set(3);
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(true);
|
|
|
|
// Second requirement
|
|
equipment.requirements["skill_material"] = 3;
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(false);
|
|
|
|
ship.attributes.skill_material.set(4);
|
|
|
|
expect(equipment.canBeEquipped(ship)).toBe(true);
|
|
});
|
|
|
|
it("generates a description of the effects", function () {
|
|
let equipment = new Equipment();
|
|
expect(equipment.getEffectsDescription()).toEqual("does nothing");
|
|
|
|
let action = new FireWeaponAction(equipment, 1, 200, 0, [
|
|
new DamageEffect(50)
|
|
]);
|
|
equipment.action = action;
|
|
expect(equipment.getEffectsDescription()).toEqual("Fire (power usage 1, max range 200km):\n- do 50 damage on target");
|
|
|
|
action.blast = 20;
|
|
expect(equipment.getEffectsDescription()).toEqual("Fire (power usage 1, max range 200km):\n- do 50 damage in 20km radius");
|
|
|
|
action.blast = 0;
|
|
action.effects.push(new StickyEffect(new AttributeLimitEffect("shield_capacity", 200), 3));
|
|
expect(equipment.getEffectsDescription()).toEqual("Fire (power usage 1, max range 200km):\n- do 50 damage on target\n- limit shield capacity to 200 for 3 turns on target");
|
|
});
|
|
|
|
it("gets a minimal level, based on skills requirements", function () {
|
|
let equipment = new Equipment();
|
|
expect(equipment.getMinimumLevel()).toBe(1);
|
|
|
|
equipment.requirements["skill_human"] = 10;
|
|
expect(equipment.getMinimumLevel()).toBe(1);
|
|
|
|
equipment.requirements["skill_time"] = 1;
|
|
expect(equipment.getMinimumLevel()).toBe(2);
|
|
|
|
equipment.requirements["skill_gravity"] = 2;
|
|
expect(equipment.getMinimumLevel()).toBe(2);
|
|
|
|
equipment.requirements["skill_electronics"] = 4;
|
|
expect(equipment.getMinimumLevel()).toBe(3);
|
|
});
|
|
});
|
|
}
|