Differential D2056 Diff 15675 binaries/data/mods/public/simulation/components/tests/test_GarrisonHolder.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/tests/test_GarrisonHolder.js
Show All 9 Lines | |||||
Engine.LoadComponentScript("interfaces/ModifiersManager.js"); | Engine.LoadComponentScript("interfaces/ModifiersManager.js"); | ||||
Engine.LoadComponentScript("interfaces/Timer.js"); | Engine.LoadComponentScript("interfaces/Timer.js"); | ||||
Engine.LoadComponentScript("interfaces/UnitAI.js"); | Engine.LoadComponentScript("interfaces/UnitAI.js"); | ||||
const garrisonedEntitiesList = [25, 26, 27, 28, 29, 30, 31, 32, 33]; | const garrisonedEntitiesList = [25, 26, 27, 28, 29, 30, 31, 32, 33]; | ||||
const garrisonHolderId = 15; | const garrisonHolderId = 15; | ||||
const unitToGarrisonId = 24; | const unitToGarrisonId = 24; | ||||
const enemyUnitId = 34; | const enemyUnitId = 34; | ||||
const largeUnitId = 35; | |||||
const player = 1; | const player = 1; | ||||
const friendlyPlayer = 2; | const friendlyPlayer = 2; | ||||
const enemyPlayer = 3; | const enemyPlayer = 3; | ||||
AddMock(garrisonHolderId, IID_Footprint, { | AddMock(garrisonHolderId, IID_Footprint, { | ||||
"PickSpawnPointBothPass": entity => new Vector3D(4, 3, 30), | "PickSpawnPointBothPass": entity => new Vector3D(4, 3, 30), | ||||
"PickSpawnPoint": entity => new Vector3D(4, 3, 30) | "PickSpawnPoint": entity => new Vector3D(4, 3, 30) | ||||
}); | }); | ||||
Show All 17 Lines | |||||
AddMock(SYSTEM_ENTITY, IID_Timer, { | AddMock(SYSTEM_ENTITY, IID_Timer, { | ||||
"SetTimeout": (ent, iid, funcname, time, data) => 1 | "SetTimeout": (ent, iid, funcname, time, data) => 1 | ||||
}); | }); | ||||
AddMock(SYSTEM_ENTITY, IID_PlayerManager, { | AddMock(SYSTEM_ENTITY, IID_PlayerManager, { | ||||
"GetPlayerByID": id => id | "GetPlayerByID": id => id | ||||
}); | }); | ||||
for (let i = 24; i <= 34; ++i) | for (let i = 24; i <= 35; ++i) | ||||
{ | { | ||||
AddMock(i, IID_Identity, { | AddMock(i, IID_Identity, { | ||||
"GetClassesList": () => ["Infantry", "Cavalry"], | "GetClassesList": () => ["Infantry", "Cavalry"], | ||||
"GetSelectionGroupName": () => "mace_infantry_archer_a" | "GetSelectionGroupName": () => "mace_infantry_archer_a" | ||||
}); | }); | ||||
if (i < 28) | if (i < 28) | ||||
AddMock(i, IID_Ownership, { | AddMock(i, IID_Ownership, { | ||||
"GetOwner": () => player | "GetOwner": () => player | ||||
}); | }); | ||||
else if (i == 34) | else if (i == 34) | ||||
AddMock(i, IID_Ownership, { | AddMock(i, IID_Ownership, { | ||||
"GetOwner": () => enemyPlayer | "GetOwner": () => enemyPlayer | ||||
}); | }); | ||||
else | else | ||||
AddMock(i, IID_Ownership, { | AddMock(i, IID_Ownership, { | ||||
"GetOwner": () => friendlyPlayer | "GetOwner": () => friendlyPlayer | ||||
}); | }); | ||||
if (i == largeUnitId) | |||||
AddMock(i, IID_Garrisonable, { | AddMock(i, IID_Garrisonable, { | ||||
"UnitSize": () => 9, | |||||
"TotalSize": () => 9, | |||||
"Garrison": entity => true, | |||||
"UnGarrison": () => {} | |||||
}); | |||||
else | |||||
AddMock(i, IID_Garrisonable, { | |||||
"UnitSize": () => 1, | |||||
"TotalSize": () => 1, | |||||
"Garrison": entity => true, | "Garrison": entity => true, | ||||
"UnGarrison": () => {} | "UnGarrison": () => {} | ||||
}); | }); | ||||
AddMock(i, IID_Position, { | AddMock(i, IID_Position, { | ||||
"GetHeightOffset": () => 0, | "GetHeightOffset": () => 0, | ||||
"GetPosition": () => new Vector3D(4, 3, 25), | "GetPosition": () => new Vector3D(4, 3, 25), | ||||
"GetRotation": () => new Vector3D(4, 0, 6), | "GetRotation": () => new Vector3D(4, 0, 6), | ||||
"JumpTo": (posX, posZ) => {}, | "JumpTo": (posX, posZ) => {}, | ||||
"MoveOutOfWorld": () => {}, | "MoveOutOfWorld": () => {}, | ||||
"SetHeightOffset": height => {} | "SetHeightOffset": height => {} | ||||
Show All 15 Lines | let cmpGarrisonHolder = ConstructComponent(garrisonHolderId, "GarrisonHolder", { | ||||
"Pickup": false | "Pickup": false | ||||
}); | }); | ||||
let testGarrisonAllowed = function() | let testGarrisonAllowed = function() | ||||
{ | { | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.HasEnoughHealth(), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.HasEnoughHealth(), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(enemyUnitId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(enemyUnitId), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(largeUnitId), true); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), true); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Eject(largeUnitId), true); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Eject(unitToGarrisonId), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Eject(unitToGarrisonId), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), true); | ||||
for (let entity of garrisonedEntitiesList) | for (let entity of garrisonedEntitiesList) | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(entity), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(entity), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(largeUnitId), false); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(unitToGarrisonId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(unitToGarrisonId), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadTemplate("spart_infantry_archer_a", 2, false, false), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadTemplate("spart_infantry_archer_a", 2, false, false), true); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 25, 26, 27, 28, 29, 30, 31, 32]); | TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 25, 26, 27, 28, 29, 30, 31, 32]); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadAllByOwner(friendlyPlayer, false), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadAllByOwner(friendlyPlayer, false), true); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 25, 26, 27]); | TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 25, 26, 27]); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 4); | TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 4); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsEjectable(25), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsEjectable(25), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Unload(25), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Unload(25), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsEjectable(25), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsEjectable(25), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.PerformEject([25], false), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.PerformEject([25], false), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.PerformEject([], false), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.PerformEject([], false), true); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 26, 27]); | TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), [24, 26, 27]); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 3); | TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 3); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(largeUnitId), false); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadAll(), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.UnloadAll(), true); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), []); | TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetEntities(), []); | ||||
}; | }; | ||||
// No health component yet. | // No health component yet. | ||||
testGarrisonAllowed(); | testGarrisonAllowed(); | ||||
AddMock(garrisonHolderId, IID_Health, { | AddMock(garrisonHolderId, IID_Health, { | ||||
Show All 16 Lines | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetAllowedClasses(), "Infantry+Cavalry"); | TS_ASSERT_UNEVAL_EQUALS(cmpGarrisonHolder.GetAllowedClasses(), "Infantry+Cavalry"); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.GetCapacity(), 10); | TS_ASSERT_EQUALS(cmpGarrisonHolder.GetCapacity(), 10); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 0); | TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 0); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(unitToGarrisonId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(unitToGarrisonId), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(enemyUnitId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.CanPickup(enemyUnitId), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsFull(), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsAllowedToGarrison(enemyUnitId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsAllowedToGarrison(enemyUnitId), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsAllowedToGarrison(largeUnitId), true); | |||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.IsAllowedToGarrison(unitToGarrisonId), true); | TS_ASSERT_EQUALS(cmpGarrisonHolder.IsAllowedToGarrison(unitToGarrisonId), true); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.HasEnoughHealth(), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.HasEnoughHealth(), false); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), false); | TS_ASSERT_EQUALS(cmpGarrisonHolder.Garrison(unitToGarrisonId), false); | ||||
AddMock(garrisonHolderId, IID_Health, { | AddMock(garrisonHolderId, IID_Health, { | ||||
"GetHitpoints": () => 600, | "GetHitpoints": () => 600, | ||||
"GetMaxHitpoints": () => 600 | "GetMaxHitpoints": () => 600 | ||||
}); | }); | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | AddMock(siegeEngineId, IID_Position, { | ||||
"MoveOutOfWorld": () => {}, | "MoveOutOfWorld": () => {}, | ||||
"SetHeightOffset": height => {} | "SetHeightOffset": height => {} | ||||
}); | }); | ||||
let currentSiegePlayer = player; | let currentSiegePlayer = player; | ||||
AddMock(siegeEngineId, IID_Ownership, { | AddMock(siegeEngineId, IID_Ownership, { | ||||
"GetOwner": () => currentSiegePlayer | "GetOwner": () => currentSiegePlayer | ||||
}); | }); | ||||
AddMock(siegeEngineId, IID_Garrisonable, { | AddMock(siegeEngineId, IID_Garrisonable, { | ||||
"UnitSize": () => 1, | |||||
"TotalSize": () => 1, | |||||
"Garrison": entity => true, | "Garrison": entity => true, | ||||
"UnGarrison": () => {} | "UnGarrison": () => {} | ||||
}); | }); | ||||
let cavalryId = 46; | let cavalryId = 46; | ||||
AddMock(cavalryId, IID_Identity, { | AddMock(cavalryId, IID_Identity, { | ||||
"GetClassesList": () => ["Infantry", "Ranged"] | "GetClassesList": () => ["Infantry", "Ranged"] | ||||
}); | }); | ||||
AddMock(cavalryId, IID_Position, { | AddMock(cavalryId, IID_Position, { | ||||
"GetHeightOffset": () => 0, | "GetHeightOffset": () => 0, | ||||
"GetPosition": () => new Vector3D(4, 3, 25), | "GetPosition": () => new Vector3D(4, 3, 25), | ||||
"GetRotation": () => new Vector3D(4, 0, 6), | "GetRotation": () => new Vector3D(4, 0, 6), | ||||
"JumpTo": (posX, posZ) => {}, | "JumpTo": (posX, posZ) => {}, | ||||
"MoveOutOfWorld": () => {}, | "MoveOutOfWorld": () => {}, | ||||
"SetHeightOffset": height => {} | "SetHeightOffset": height => {} | ||||
}); | }); | ||||
let currentCavalryPlayer = player; | let currentCavalryPlayer = player; | ||||
AddMock(cavalryId, IID_Ownership, { | AddMock(cavalryId, IID_Ownership, { | ||||
"GetOwner": () => currentCavalryPlayer | "GetOwner": () => currentCavalryPlayer | ||||
}); | }); | ||||
AddMock(cavalryId, IID_Garrisonable, { | AddMock(cavalryId, IID_Garrisonable, { | ||||
"UnitSize": () => 1, | |||||
"TotalSize": () => 1, | |||||
"Garrison": entity => true, | "Garrison": entity => true, | ||||
"UnGarrison": () => {} | "UnGarrison": () => {} | ||||
}); | }); | ||||
TS_ASSERT(cmpGarrisonHolder.Garrison(siegeEngineId)); | TS_ASSERT(cmpGarrisonHolder.Garrison(siegeEngineId)); | ||||
TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 1); | TS_ASSERT_EQUALS(cmpGarrisonHolder.GetGarrisonedEntitiesCount(), 1); | ||||
cmpGarrisonHolder.OnGlobalEntityRenamed({ | cmpGarrisonHolder.OnGlobalEntityRenamed({ | ||||
"entity": siegeEngineId, | "entity": siegeEngineId, | ||||
"newentity": cavalryId | "newentity": cavalryId | ||||
Show All 36 Lines |
Wildfire Games · Phabricator