Differential D1958 Diff 13254 binaries/data/mods/public/simulation/components/tests/test_TurretHolder.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/tests/test_TurretHolder.js
Engine.LoadHelperScript("Player.js"); | Engine.LoadHelperScript("Player.js"); | ||||
Engine.LoadComponentScript("interfaces/Attack.js"); | |||||
Engine.LoadComponentScript("interfaces/TurretHolder.js"); | Engine.LoadComponentScript("interfaces/TurretHolder.js"); | ||||
Engine.LoadComponentScript("interfaces/UnitAI.js"); | Engine.LoadComponentScript("interfaces/UnitAI.js"); | ||||
Engine.LoadComponentScript("TurretHolder.js"); | Engine.LoadComponentScript("TurretHolder.js"); | ||||
AddMock(SYSTEM_ENTITY, IID_PlayerManager, { | AddMock(SYSTEM_ENTITY, IID_PlayerManager, { | ||||
"GetPlayerByID": id => id | "GetPlayerByID": id => id | ||||
}); | }); | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | |||||
}); | }); | ||||
let infID = entitiesToTest[3]; | let infID = entitiesToTest[3]; | ||||
AddMock(infID, IID_Identity, { | AddMock(infID, IID_Identity, { | ||||
"GetClassesList": () => ["Infantry"] | "GetClassesList": () => ["Infantry"] | ||||
}); | }); | ||||
// Test visible garrisoning restrictions. | // Test visible garrisoning restrictions. | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(siegeEngineID, cmpTurretHolder.turretPoints[0]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(siegeEngineID, cmpTurretHolder.turretPoints[0]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(siegeEngineID, cmpTurretHolder.turretPoints[1]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(siegeEngineID, cmpTurretHolder.turretPoints[1]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(siegeEngineID, cmpTurretHolder.turretPoints[2]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(siegeEngineID, cmpTurretHolder.turretPoints[2]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(archerID, cmpTurretHolder.turretPoints[0]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(archerID, cmpTurretHolder.turretPoints[0]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(archerID, cmpTurretHolder.turretPoints[1]), false); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(archerID, cmpTurretHolder.turretPoints[1]), false); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(archerID, cmpTurretHolder.turretPoints[2]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(archerID, cmpTurretHolder.turretPoints[2]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(cavID, cmpTurretHolder.turretPoints[0]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[0]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(cavID, cmpTurretHolder.turretPoints[1]), false); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[1]), false); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(cavID, cmpTurretHolder.turretPoints[2]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[2]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(infID, cmpTurretHolder.turretPoints[0]), true); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(infID, cmpTurretHolder.turretPoints[0]), true); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(infID, cmpTurretHolder.turretPoints[1]), false); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(infID, cmpTurretHolder.turretPoints[1]), false); | ||||
TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurret(infID, cmpTurretHolder.turretPoints[2]), false); | TS_ASSERT_EQUALS(cmpTurretHolder.AllowedToOccupyTurretPoint(infID, cmpTurretHolder.turretPoints[2]), false); | ||||
// Test that one cannot leave a turret that is not occupied. | // Test that one cannot leave a turret that is not occupied. | ||||
TS_ASSERT(!cmpTurretHolder.LeaveTurret(archerID)); | TS_ASSERT(!cmpTurretHolder.LeaveTurretPoint(archerID)); | ||||
// Test occupying a turret. | // Test occupying a turret. | ||||
TS_ASSERT(!cmpTurretHolder.OccupiesTurret(archerID)); | TS_ASSERT(!cmpTurretHolder.OccupiesTurretPoint(archerID)); | ||||
TS_ASSERT(cmpTurretHolder.OccupyTurret(archerID)); | TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(archerID)); | ||||
TS_ASSERT(cmpTurretHolder.OccupiesTurret(archerID)); | TS_ASSERT(cmpTurretHolder.OccupiesTurretPoint(archerID)); | ||||
// We're not occupying a turret that we can't occupy. | // We're not occupying a turret that we can't occupy. | ||||
TS_ASSERT(!cmpTurretHolder.OccupiesTurret(archerID, cmpTurretHolder.turretPoints[1])); | TS_ASSERT(!cmpTurretHolder.OccupiesTurretPoint(archerID, cmpTurretHolder.turretPoints[1])); | ||||
TS_ASSERT(!cmpTurretHolder.OccupyTurret(cavID, cmpTurretHolder.turretPoints[1])); | TS_ASSERT(!cmpTurretHolder.OccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[1])); | ||||
TS_ASSERT(!cmpTurretHolder.OccupyTurret(cavID, cmpTurretHolder.turretPoints[0])); | TS_ASSERT(!cmpTurretHolder.OccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[0])); | ||||
TS_ASSERT(cmpTurretHolder.OccupyTurret(cavID, cmpTurretHolder.turretPoints[2])); | TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(cavID, cmpTurretHolder.turretPoints[2])); | ||||
// Leave turrets. | // Leave turrets. | ||||
TS_ASSERT(cmpTurretHolder.LeaveTurret(archerID)); | TS_ASSERT(cmpTurretHolder.LeaveTurretPoint(archerID)); | ||||
TS_ASSERT(!cmpTurretHolder.LeaveTurret(cavID, cmpTurretHolder.turretPoints[1])); | TS_ASSERT(!cmpTurretHolder.LeaveTurretPoint(cavID, cmpTurretHolder.turretPoints[1])); | ||||
TS_ASSERT(cmpTurretHolder.LeaveTurret(cavID, cmpTurretHolder.turretPoints[2])); | TS_ASSERT(cmpTurretHolder.LeaveTurretPoint(cavID, cmpTurretHolder.turretPoints[2])); | ||||
// Test renaming. | // Test renaming. | ||||
AddMock(turretHolderID, IID_GarrisonHolder, { | AddMock(turretHolderID, IID_GarrisonHolder, { | ||||
"IsGarrisoned": () => true | "IsGarrisoned": () => true | ||||
}); | }); | ||||
TS_ASSERT(cmpTurretHolder.OccupyTurret(siegeEngineID, cmpTurretHolder.turretPoints[2])); | TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(siegeEngineID, cmpTurretHolder.turretPoints[2])); | ||||
cmpTurretHolder.SwapEntities(siegeEngineID, archerID); | cmpTurretHolder.SwapEntities(siegeEngineID, archerID); | ||||
TS_ASSERT(!cmpTurretHolder.OccupiesTurret(siegeEngineID)); | TS_ASSERT(!cmpTurretHolder.OccupiesTurretPoint(siegeEngineID)); | ||||
TS_ASSERT(cmpTurretHolder.LeaveTurret(archerID)); | TS_ASSERT(cmpTurretHolder.LeaveTurretPoint(archerID)); | ||||
// Renaming into an entity not allowed on the same turret point hides us. | // Renaming into an entity not allowed on the same turret point hides us. | ||||
TS_ASSERT(cmpTurretHolder.OccupyTurret(siegeEngineID, cmpTurretHolder.turretPoints[1])); | TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(siegeEngineID, cmpTurretHolder.turretPoints[1])); | ||||
cmpTurretHolder.SwapEntities(siegeEngineID, archerID); | cmpTurretHolder.SwapEntities(siegeEngineID, archerID); | ||||
TS_ASSERT(!cmpTurretHolder.OccupiesTurret(siegeEngineID)); | TS_ASSERT(!cmpTurretHolder.OccupiesTurretPoint(siegeEngineID)); | ||||
TS_ASSERT(!cmpTurretHolder.OccupiesTurret(archerID)); | TS_ASSERT(!cmpTurretHolder.OccupiesTurretPoint(archerID)); | ||||
// Test getting the range of subunits. | |||||
TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(archerID)); | |||||
AddMock(archerID, IID_Attack, { | |||||
"GetRange": () => { return { "min": 0, "max": 5, "elevationBonus": 2 }; } | |||||
}); | |||||
let expectedResult = { | |||||
"min": 0, | |||||
"max": 5 + cmpTurretHolder.GetOccupiedTurretPoint(archerID).offset.z, | |||||
"elevationBonus": 2 | |||||
}; | |||||
let result = cmpTurretHolder.GetSubunitsRange(IID_Attack); | |||||
TS_ASSERT(result.min == expectedResult.min && | |||||
Freagarach: `UNEVAL_EQUALS` | |||||
result.max == expectedResult.max && | |||||
result.elevationBonus == expectedResult.elevationBonus); | |||||
TS_ASSERT(cmpTurretHolder.LeaveTurretPoint(archerID)); | |||||
// Test getting the actions of subunits. | |||||
TS_ASSERT(cmpTurretHolder.OccupyTurretPoint(archerID)); | |||||
AddMock(archerID, IID_UnitAI, { | |||||
"CanAttack": (target) => target == 90 | |||||
}); | |||||
TS_ASSERT(cmpTurretHolder.CanAnySubunitPerform("Attack", 90, undefined)); | |||||
TS_ASSERT(!cmpTurretHolder.CanAnySubunitPerform("Attack", 91, undefined)); | |||||
DeleteMock(archerID, IID_UnitAI); | |||||
TS_ASSERT(cmpTurretHolder.LeaveTurretPoint(archerID)); | |||||
// ToDo: Ownership changes are handled by GarrisonHolder.js. | // ToDo: Ownership changes are handled by GarrisonHolder.js. |
Wildfire Games · Phabricator
UNEVAL_EQUALS