Differential D2403 Diff 11832 ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Heal.js
Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Heal.js
Engine.LoadHelperScript("ValueModification.js"); | Engine.LoadHelperScript("ValueModification.js"); | ||||
Engine.LoadHelperScript("Player.js"); | |||||
Engine.LoadComponentScript("interfaces/Formation.js"); | |||||
Engine.LoadComponentScript("interfaces/Heal.js"); | Engine.LoadComponentScript("interfaces/Heal.js"); | ||||
Engine.LoadComponentScript("interfaces/Health.js"); | Engine.LoadComponentScript("interfaces/Health.js"); | ||||
Engine.LoadComponentScript("interfaces/Loot.js"); | Engine.LoadComponentScript("interfaces/Loot.js"); | ||||
Engine.LoadComponentScript("interfaces/Promotion.js"); | Engine.LoadComponentScript("interfaces/Promotion.js"); | ||||
Engine.LoadComponentScript("interfaces/UnitAI.js"); | Engine.LoadComponentScript("interfaces/UnitAI.js"); | ||||
Engine.LoadComponentScript("Heal.js"); | Engine.LoadComponentScript("Heal.js"); | ||||
const entity= 60; | const entity = 60; | ||||
const player = 1; | |||||
const otherPlayer = 2 | |||||
let template = { | let template = { | ||||
"Range": 20, | "Range": 20, | ||||
"RangeOverlay" : { | "RangeOverlay": { | ||||
"LineTexture": "heal_overlay_range.png", | "LineTexture": "heal_overlay_range.png", | ||||
"LineTextureMask": "heal_overlay_range_mask.png", | "LineTextureMask": "heal_overlay_range_mask.png", | ||||
"LineThickness": 0.35 | "LineThickness": 0.35 | ||||
}, | }, | ||||
"HP": 5, | "HP": 5, | ||||
"Rate": 2000, | "Rate": 2000, | ||||
"UnhealableClasses": { "_string": "Cavalry" }, | "UnhealableClasses": { "_string": "Cavalry" }, | ||||
"HealableClasses": { "_string": "Support Infantry" }, | "HealableClasses": { "_string": "Support Infantry" }, | ||||
}; | }; | ||||
AddMock(entity, IID_Ownership, { | |||||
"GetOwner": () => player | |||||
}); | |||||
AddMock(SYSTEM_ENTITY, IID_PlayerManager, { | |||||
"GetPlayerByID": () => player | |||||
}); | |||||
AddMock(player, IID_Player, { | |||||
"IsAlly": () => true | |||||
}); | |||||
AddMock(otherPlayer, IID_Player, { | |||||
"IsAlly": () => false | |||||
}); | |||||
ApplyValueModificationsToEntity = function(value, stat, ent) | ApplyValueModificationsToEntity = function(value, stat, ent) | ||||
{ | { | ||||
if (ent != entity) | if (ent != entity) | ||||
return stat; | return stat; | ||||
switch (value) | switch (value) | ||||
{ | { | ||||
case "Heal/HP": | case "Heal/HP": | ||||
return stat + 100; | return stat + 100; | ||||
Show All 10 Lines | |||||
// Test Getters | // Test Getters | ||||
TS_ASSERT_EQUALS(cmpHeal.GetRate(), 2000 + 200); | TS_ASSERT_EQUALS(cmpHeal.GetRate(), 2000 + 200); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetTimers(), { "prepare": 1000, "repeat": 2000 + 200 }); | TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetTimers(), { "prepare": 1000, "repeat": 2000 + 200 }); | ||||
TS_ASSERT_EQUALS(cmpHeal.GetHP(), 5 + 100); | TS_ASSERT_EQUALS(cmpHeal.GetHP(), 5 + 100); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetRange(), {"min":0, "max": 20 + 300 }); | TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetRange(), { "min": 0, "max": 20 + 300 }); | ||||
TS_ASSERT_EQUALS(cmpHeal.GetHealableClasses(), "Support Infantry"); | TS_ASSERT_EQUALS(cmpHeal.GetHealableClasses(), "Support Infantry"); | ||||
TS_ASSERT_EQUALS(cmpHeal.GetUnhealableClasses(), "Cavalry"); | TS_ASSERT_EQUALS(cmpHeal.GetUnhealableClasses(), "Cavalry"); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetRangeOverlays(), [{ | TS_ASSERT_UNEVAL_EQUALS(cmpHeal.GetRangeOverlays(), [{ | ||||
"radius": 20 + 300, | "radius": 20 + 300, | ||||
"texture": "heal_overlay_range.png", | "texture": "heal_overlay_range.png", | ||||
"textureMask": "heal_overlay_range_mask.png", | "textureMask": "heal_overlay_range_mask.png", | ||||
"thickness": 0.35 | "thickness": 0.35 | ||||
}]); | }]); | ||||
// Test PerformHeal | // Test PerformHeal | ||||
let target = 70; | let target = 70; | ||||
AddMock(target, IID_Ownership, { | |||||
"GetOwner": () => player | |||||
}); | |||||
let targetClasses; | |||||
AddMock(target, IID_Identity, { | |||||
"GetClassesList": () => targetClasses | |||||
}); | |||||
let increased; | let increased; | ||||
let unhealable = false; | |||||
AddMock(target, IID_Health, { | AddMock(target, IID_Health, { | ||||
"GetMaxHitpoints": () => 700, | "GetMaxHitpoints": () => 700, | ||||
"Increase": amount => { | "Increase": amount => { | ||||
increased = true; | increased = true; | ||||
TS_ASSERT_EQUALS(amount, 5 + 100); | TS_ASSERT_EQUALS(amount, 5 + 100); | ||||
return { "old": 600, "new": 600 + 5 + 100 }; | return { "old": 600, "new": 600 + 5 + 100 }; | ||||
} | }, | ||||
"IsUnhealable": () => unhealable | |||||
}); | }); | ||||
cmpHeal.PerformHeal(target); | cmpHeal.PerformHeal(target); | ||||
TS_ASSERT(increased); | TS_ASSERT(increased); | ||||
let looted; | let looted; | ||||
AddMock(target, IID_Loot, { | AddMock(target, IID_Loot, { | ||||
"GetXp": () => { | "GetXp": () => { | ||||
Show All 21 Lines | AddMock(entity, IID_UnitAI, { | ||||
} | } | ||||
}); | }); | ||||
cmpHeal.OnValueModification({ "component": "Heal", "valueNames": ["Heal/HP"] }); | cmpHeal.OnValueModification({ "component": "Heal", "valueNames": ["Heal/HP"] }); | ||||
TS_ASSERT(!updated); | TS_ASSERT(!updated); | ||||
cmpHeal.OnValueModification({ "component": "Heal", "valueNames": ["Heal/Range"] }); | cmpHeal.OnValueModification({ "component": "Heal", "valueNames": ["Heal/Range"] }); | ||||
TS_ASSERT(updated); | TS_ASSERT(updated); | ||||
// Test CanHeal. | |||||
targetClasses = ["Infantry", "Hero"]; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), true); | |||||
targetClasses = ["Hero"]; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), false); | |||||
targetClasses = ["Infantry", "Cavalry"]; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), false); | |||||
targetClasses = ["Cavalry"]; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), false); | |||||
targetClasses = ["Infantry"]; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), true); | |||||
unhealable = true; | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(target), false); | |||||
let otherTarget = 71; | |||||
AddMock(otherTarget, IID_Ownership, { | |||||
"GetOwner": () => player | |||||
}); | |||||
AddMock(otherTarget, IID_Health, { | |||||
"IsUnhealable": () => false | |||||
}); | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpHeal.CanHeal(otherTarget), false); |
Wildfire Games · Phabricator