mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-20 02:24:45 +00:00
* added short and detailed codecs for Telepad, and converter for switching between Telepad and packets; modified Utility to construct a formal TeleportPadTerminal that associates the Telepad with a Router; can now pull telepad Equipment from Router terminal utilities * this code supports operation of the deployable-side telepad * basic teleportation between the Router and the remote telepad is functional; an ever-present internal telepad utility was added to the Router to facilitate this teleportation * breakdown of Router teleportation code for the purposes of client synchronization; supports Router being set up first or Telepad being set up first, either order; background timer for eventual activation of Router * refactored the router telepad system to remove unecessary function diversions; telepads now are properly linked where appropriate and links are properly broken in appropriate situations; message passing has been simplified * fixed inventory size of the telepad; transferred router telepad activation systems from VehicleService to LocalService, and from the Ruoter to the TelepadDeployable; cleaned up code that handled the TelepadDeployable the Router relationship in WSA * tests, mostly; no-router conditions for certain telepad-related converters * adjusted (made constant) quantities for owned telepads * resolved issue with router and telepad crashes; properly handles deployment states of AMS and Router upon zone entry; changed ownership/decon requirements to ownerless only
1058 lines
59 KiB
Scala
1058 lines
59 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package objects
|
|
|
|
import net.psforever.objects._
|
|
import net.psforever.objects.avatar.DeployableToolbox
|
|
import net.psforever.objects.ce.{DeployableCategory, DeployedItem}
|
|
import net.psforever.packet.game.PlanetSideGUID
|
|
import net.psforever.types.CertificationType._
|
|
import org.specs2.mutable.Specification
|
|
|
|
class DeployableToolboxTest extends Specification {
|
|
"DeployableToolbbox" should {
|
|
"construct" in {
|
|
new DeployableToolbox //should just construct without issue
|
|
ok
|
|
}
|
|
|
|
"initialization (default)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set())
|
|
val list = obj.UpdateUI()
|
|
list.size mustEqual DeployedItem.values.size - 3 //extra field turrets
|
|
val (routers, allOthers) = list.partition({ case((_,_,_,max)) => max == 1024 })
|
|
allOthers.foreach({case(_,curr,_,max) =>
|
|
curr mustEqual 0
|
|
max mustEqual 0
|
|
})
|
|
routers.length mustEqual 1
|
|
ok
|
|
}
|
|
|
|
"initialization (CombatEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (AssaultEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AssaultEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (FortificationEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, FortificationEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (AdvancedEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(AdvancedEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (AdvancedHacking)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (without CombatEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(AssaultEngineering, FortificationEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"initialization (GroundSupport)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(GroundSupport))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"can not initialize twice" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set()) mustEqual true
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.Initialize(Set(AdvancedEngineering)) mustEqual false
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"uninitialized fields can not accept deployables" in {
|
|
val obj = new DeployableToolbox
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Accept(boomer) mustEqual false
|
|
obj.Add(boomer) mustEqual false
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
}
|
|
|
|
"only initialized fields can accept deployables" in {
|
|
val obj = new DeployableToolbox
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Accept(boomer) mustEqual true
|
|
obj.Add(boomer) mustEqual true
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20)
|
|
}
|
|
|
|
"change accessible fields by adding by certification type (CombatEngineering ...)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set())
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
CombatEngineering,
|
|
Set(CombatEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
FortificationEngineering,
|
|
Set(CombatEngineering, FortificationEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
AssaultEngineering,
|
|
Set(CombatEngineering, FortificationEngineering, AssaultEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
AssaultEngineering,
|
|
Set(CombatEngineering, FortificationEngineering, AssaultEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
AdvancedHacking,
|
|
Set(CombatEngineering, FortificationEngineering, AssaultEngineering, AdvancedHacking)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"change accessible fields by adding by certification type (GroundSupport)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set())
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
GroundSupport,
|
|
Set(GroundSupport)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"change accessible fields by adding by certification type (AdvancedEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.AddToDeployableQuantities(
|
|
AdvancedEngineering,
|
|
Set(CombatEngineering, AdvancedEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"change accessible fields by removing by certification types (all)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AssaultEngineering, FortificationEngineering, AdvancedHacking, GroundSupport))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
GroundSupport,
|
|
Set(CombatEngineering, AssaultEngineering, FortificationEngineering, AdvancedHacking)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
AdvancedHacking,
|
|
Set(CombatEngineering, AssaultEngineering, FortificationEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
FortificationEngineering,
|
|
Set(CombatEngineering, AssaultEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
AssaultEngineering,
|
|
Set(CombatEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
CombatEngineering,
|
|
Set()
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"change accessible fields by removing by certification type (AdvancedEngineering)" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 25
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 5
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 1
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
AdvancedEngineering,
|
|
Set(CombatEngineering)
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 10
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.jammer_mine)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_cloaked)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.spitfire_aa)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.tank_traps)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_nc)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_tr)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.portable_manned_turret_vs)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.deployable_shield_generator)._2 mustEqual 0
|
|
obj.CountDeployable(DeployedItem.router_telepad_deployable)._2 mustEqual 1024
|
|
}
|
|
|
|
"can not remove deployables from an unpopulated field" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.Remove(boomer) mustEqual false
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
}
|
|
|
|
"can remove a deployable from a field it populates" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.Add(boomer) mustEqual true
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1,20)
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20)
|
|
obj.Remove(boomer) mustEqual true
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
}
|
|
|
|
"can not remove a deployable from a field it does not populate" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
val boomer1 = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20
|
|
obj.Add(boomer1) mustEqual true
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20)
|
|
val boomer2 = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Remove(boomer2) mustEqual false
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20)
|
|
}
|
|
|
|
"changing accessible fields by removing by certification type does not invalidate existing deployables" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.Add(new BoomerDeployable(GlobalDefinitions.boomer))
|
|
obj.Add(new BoomerDeployable(GlobalDefinitions.boomer))
|
|
obj.Add(new BoomerDeployable(GlobalDefinitions.boomer))
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(3, 20)
|
|
|
|
obj.RemoveFromDeployableQuantities(
|
|
CombatEngineering,
|
|
Set()
|
|
)
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(3, 0)
|
|
}
|
|
|
|
"can not add the same deployable multiple times" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Add(boomer) mustEqual true
|
|
obj.Add(boomer) mustEqual false
|
|
}
|
|
|
|
"can not add more deployables to a field than is allowed by its current type maximum" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20
|
|
(1 to 19).foreach(_ => {
|
|
val o1 = new ExplosiveDeployable(GlobalDefinitions.he_mine)
|
|
obj.Accept(o1)mustEqual true
|
|
obj.Add(o1) mustEqual true
|
|
})
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(19, 20)
|
|
val o2 = new BoomerDeployable(GlobalDefinitions.he_mine)
|
|
obj.Accept(o2) mustEqual true
|
|
obj.Add(o2) mustEqual true
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(20, 20)
|
|
//fail extra
|
|
val o3 = new BoomerDeployable(GlobalDefinitions.he_mine)
|
|
obj.Accept(o3) mustEqual false
|
|
obj.Add(o3) mustEqual false
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(20, 20)
|
|
//remove old
|
|
obj.Remove(o2) mustEqual true
|
|
obj.Accept(o2) mustEqual true
|
|
obj.Accept(o3) mustEqual true
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(19, 20)
|
|
//add extra
|
|
obj.Add(o3) mustEqual true
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(20, 20)
|
|
}
|
|
|
|
"some deployables can share a category and a category maximum" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
(1 to 10).foreach(_ => {
|
|
val o = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
obj.Accept(o)mustEqual true
|
|
obj.Add(o) mustEqual true
|
|
})
|
|
(1 to 10).foreach(_ => {
|
|
val o = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Accept(o)mustEqual true
|
|
obj.Add(o) mustEqual true
|
|
})
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(10, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(10, 20)
|
|
|
|
val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
obj.Accept(o1)mustEqual false
|
|
obj.Add(o1) mustEqual false
|
|
val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Accept(o2)mustEqual false
|
|
obj.Add(o2) mustEqual false
|
|
}
|
|
|
|
"remove the first deployable type from a category" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
obj.Accept(o1)mustEqual true
|
|
obj.Add(o1) mustEqual true
|
|
val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Accept(o2)mustEqual true
|
|
obj.Add(o2) mustEqual true
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20)
|
|
|
|
val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
val displaced1a = obj.DisplaceFirst(o3) //remove the first sensor_shield's deployable
|
|
displaced1a.nonEmpty mustEqual true
|
|
displaced1a.get.Definition == o3.Definition mustEqual true
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(0, 20)
|
|
//test: add o2 again and try to remove the motionalarmsensor
|
|
obj.Add(o2)
|
|
val displaced1b = obj.DisplaceFirst(o3, {(d) => d.Definition.Item != DeployedItem.sensor_shield}) //remove the first sensor_shield's deployable
|
|
displaced1b.nonEmpty mustEqual true
|
|
displaced1b.get.Definition == o3.Definition mustEqual false
|
|
displaced1b.get.Definition mustEqual GlobalDefinitions.motionalarmsensor
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20)
|
|
|
|
val o4 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
val displaced2 = obj.DisplaceFirst(o3) //remove the first deployable of motionalarmsensor's category
|
|
displaced2.nonEmpty mustEqual true
|
|
displaced2.get.Definition == o4.Definition mustEqual false
|
|
displaced2.get.Definition mustEqual GlobalDefinitions.sensor_shield //removed deployable is a sensor_shield type
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
|
|
obj.DisplaceFirst(o3) mustEqual None //we can not remove anymore deployables because the category is empty
|
|
obj.DisplaceFirst(o4) mustEqual None //likewise
|
|
}
|
|
|
|
"remove the first deployable type from a category" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
val o1 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
val o2 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Add(o3) mustEqual true //0
|
|
obj.Add(o1) mustEqual true //1
|
|
obj.Add(o2) mustEqual true //2
|
|
|
|
val displaced1 = obj.DisplaceFirst(DeployableCategory.Sensors)
|
|
displaced1.nonEmpty mustEqual true
|
|
displaced1.get.Definition == GlobalDefinitions.sensor_shield mustEqual true
|
|
displaced1.get == o3 mustEqual true
|
|
|
|
val displaced2 = obj.DisplaceFirst(DeployableCategory.Sensors)
|
|
displaced2.nonEmpty mustEqual true
|
|
displaced2.get.Definition == GlobalDefinitions.sensor_shield mustEqual true
|
|
displaced2.get == o1 mustEqual true
|
|
}
|
|
|
|
"counting deployables will give the type number; counting categories gives all deployables in that category" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.sensor_shield))
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.motionalarmsensor))
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.sensor_shield))
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(2, 20)
|
|
obj.CountCategory(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(3, 20)
|
|
obj.CountCategory(DeployedItem.sensor_shield).productIterator.toList mustEqual List(3, 20)
|
|
}
|
|
|
|
"get a list of GUIDs when the category contents are tested" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
o1.GUID = PlanetSideGUID(1)
|
|
obj.Add(o1) mustEqual true
|
|
val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
o3.GUID = PlanetSideGUID(3)
|
|
obj.Add(o3) mustEqual true
|
|
val o4 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
o4.GUID = PlanetSideGUID(4)
|
|
obj.Add(o4) mustEqual true
|
|
val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
o2.GUID = PlanetSideGUID(2)
|
|
obj.Add(o2) mustEqual true
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(2, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(2, 20)
|
|
|
|
val test1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
val test2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Category(test1) mustEqual List(PlanetSideGUID(1),PlanetSideGUID(3),PlanetSideGUID(4),PlanetSideGUID(2))
|
|
obj.Category(test1) mustEqual obj.Category(test2)
|
|
}
|
|
|
|
"get a list of GUIDs when the types are tested" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20
|
|
obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20
|
|
val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
o1.GUID = PlanetSideGUID(1)
|
|
obj.Add(o1) mustEqual true
|
|
val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
o3.GUID = PlanetSideGUID(3)
|
|
obj.Add(o3) mustEqual true
|
|
val o4 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
o4.GUID = PlanetSideGUID(4)
|
|
obj.Add(o4) mustEqual true
|
|
val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
o2.GUID = PlanetSideGUID(2)
|
|
obj.Add(o2) mustEqual true
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(2, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(2, 20)
|
|
|
|
val test1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
|
val test2 = new SensorDeployable(GlobalDefinitions.sensor_shield)
|
|
obj.Deployables(test1) mustEqual List(PlanetSideGUID(1),PlanetSideGUID(4))
|
|
obj.Deployables(test2) mustEqual List(PlanetSideGUID(3),PlanetSideGUID(2))
|
|
}
|
|
|
|
"three tests: 'contains' detects same deployable" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
|
|
val boomer1 = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
val boomer2 = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Contains(boomer1) mustEqual false
|
|
obj.Contains(boomer2) mustEqual false
|
|
obj.Add(boomer1)
|
|
obj.Contains(boomer1) mustEqual true
|
|
obj.Contains(boomer2) mustEqual false
|
|
}
|
|
|
|
"three tests: 'valid' tests whether deployable type can be accepted" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
|
|
val cerebus = new TurretDeployable(GlobalDefinitions.spitfire_aa) //cerebus turret
|
|
obj.Valid(cerebus) mustEqual false
|
|
obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0,0)
|
|
|
|
obj.AddToDeployableQuantities(AdvancedEngineering, Set(CombatEngineering, AdvancedEngineering))
|
|
obj.Valid(cerebus) mustEqual true
|
|
obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0,5)
|
|
}
|
|
|
|
"three tests: 'available' tests whether there is enough space to add more deployables of a type" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,20)
|
|
|
|
(1 to 20).foreach(_ => {
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Available(boomer) mustEqual true
|
|
obj.Add(boomer) mustEqual true
|
|
})
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,20)
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
obj.Available(boomer) mustEqual false
|
|
obj.Add(boomer) mustEqual false
|
|
}
|
|
|
|
"three tests: 'accept' ensures that all three of the previous tests are passable" in {
|
|
val obj = new DeployableToolbox
|
|
val boomer = new BoomerDeployable(GlobalDefinitions.boomer)
|
|
|
|
obj.Initialize(Set())
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,0)
|
|
obj.Accept(boomer) mustEqual false
|
|
obj.Available(boomer) mustEqual false
|
|
obj.Contains(boomer) mustEqual false //false is being passable
|
|
obj.Valid(boomer) mustEqual false
|
|
|
|
obj.AddToDeployableQuantities(CombatEngineering, Set(CombatEngineering))
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,20)
|
|
obj.Accept(boomer) mustEqual true
|
|
obj.Available(boomer) mustEqual true //true is being passable
|
|
obj.Contains(boomer) mustEqual false //false is being passable
|
|
obj.Valid(boomer) mustEqual true //true is being passable
|
|
|
|
obj.Add(boomer)
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1,20)
|
|
obj.Accept(boomer) mustEqual false
|
|
obj.Available(boomer) mustEqual true //true is being passable
|
|
obj.Contains(boomer) mustEqual true
|
|
obj.Valid(boomer) mustEqual true //true is being passable
|
|
|
|
(1 to 20).foreach(_ => { obj.Add(new BoomerDeployable(GlobalDefinitions.boomer)) })
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,20)
|
|
obj.Accept(boomer) mustEqual false
|
|
obj.Available(boomer) mustEqual false
|
|
obj.Contains(boomer) mustEqual true
|
|
obj.Valid(boomer) mustEqual true //true is being passable
|
|
|
|
obj.RemoveFromDeployableQuantities(CombatEngineering, Set())
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,0)
|
|
obj.Accept(boomer) mustEqual false
|
|
obj.Available(boomer) mustEqual false
|
|
obj.Contains(boomer) mustEqual true
|
|
obj.Valid(boomer) mustEqual false
|
|
}
|
|
|
|
"UI elements report individual deployable types for a certification type" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedEngineering, AdvancedHacking))
|
|
|
|
val list1 = obj.UpdateUI(CombatEngineering)
|
|
list1.head.productIterator.toList mustEqual List(94, 0, 83, 25)
|
|
list1(1).productIterator.toList mustEqual List(95, 0, 84, 25)
|
|
list1(2).productIterator.toList mustEqual List(97, 0, 86, 15)
|
|
list1(3).productIterator.toList mustEqual List(98, 0, 87, 25)
|
|
|
|
val list2 = obj.UpdateUI(AdvancedHacking)
|
|
list2.head.productIterator.toList mustEqual List(104, 0, 93, 25)
|
|
|
|
val list3 = obj.UpdateUI(AssaultEngineering)
|
|
list3.head.productIterator.toList mustEqual List(96, 0, 85, 20)
|
|
list3(1).productIterator.toList mustEqual List(103, 0, 92, 1)
|
|
list3(2).productIterator.toList mustEqual List(101, 0, 90, 1)
|
|
|
|
val list4 = obj.UpdateUI(FortificationEngineering)
|
|
list4.head.productIterator.toList mustEqual List(94, 0, 83, 25)
|
|
list4(1).productIterator.toList mustEqual List(95, 0, 84, 25)
|
|
list4(2).productIterator.toList mustEqual List(97, 0, 86, 15)
|
|
list4(3).productIterator.toList mustEqual List(99, 0, 88, 5)
|
|
list4(4).productIterator.toList mustEqual List(100, 0, 89, 5)
|
|
list4(5).productIterator.toList mustEqual List(98, 0, 87, 25)
|
|
list4(6).productIterator.toList mustEqual List(102, 0, 91, 5)
|
|
|
|
obj.UpdateUI(AdvancedEngineering).flatMap(tuple => tuple.productIterator.toList) mustEqual
|
|
obj.UpdateUI(AssaultEngineering).flatMap(tuple => tuple.productIterator.toList) ++
|
|
obj.UpdateUI(FortificationEngineering).flatMap(tuple => tuple.productIterator.toList)
|
|
|
|
obj.UpdateUI(MediumAssault) mustEqual Nil
|
|
}
|
|
|
|
"UI elements report individual deployable types for a combination of certification types" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedEngineering, AdvancedHacking))
|
|
|
|
obj.UpdateUI(
|
|
List(AssaultEngineering, FortificationEngineering)
|
|
).flatMap(tuple => tuple.productIterator.toList) mustEqual
|
|
obj.UpdateUI(AdvancedEngineering).flatMap(tuple => tuple.productIterator.toList)
|
|
}
|
|
|
|
"all of the one manned field turrets use the same category and the same UI elements" in {
|
|
val obj = new DeployableToolbox
|
|
//initial state
|
|
(obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)
|
|
).toSet mustEqual Set((103, 0, 92, 0)) //note: four elements become one common element
|
|
|
|
//initialized state
|
|
obj.Initialize(Set(CombatEngineering, AdvancedEngineering))
|
|
(obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)
|
|
).toSet mustEqual Set((103, 0, 92, 1))
|
|
|
|
//portable_manned_turret_vs added
|
|
val obj1 = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs)
|
|
obj1.Definition.Item mustEqual DeployedItem.portable_manned_turret_vs
|
|
obj1.Definition.DeployCategory mustEqual DeployableCategory.FieldTurrets
|
|
obj1.GUID = PlanetSideGUID(1)
|
|
obj.Add(obj1) mustEqual true
|
|
(obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)
|
|
).toSet mustEqual Set((103, 1, 92, 1))
|
|
|
|
//portable_manned_turret_nc fails to add
|
|
val obj2 = new TurretDeployable(GlobalDefinitions.portable_manned_turret_nc)
|
|
obj2.Definition.Item mustEqual DeployedItem.portable_manned_turret_nc
|
|
obj2.Definition.DeployCategory mustEqual DeployableCategory.FieldTurrets
|
|
obj2.GUID = PlanetSideGUID(2)
|
|
obj.Add(obj2) mustEqual false
|
|
obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(1)) mustEqual true //included
|
|
obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(2)) mustEqual false
|
|
|
|
//swap turrets
|
|
obj.Remove(obj1) mustEqual true
|
|
obj.Add(obj2) mustEqual true
|
|
(obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++
|
|
obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)
|
|
).toSet mustEqual Set((103, 1, 92, 1))
|
|
obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(1)) mustEqual false
|
|
obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(2)) mustEqual true //included
|
|
}
|
|
|
|
"clear all deployables, return their GUIDs" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering))
|
|
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.motionalarmsensor) { GUID = PlanetSideGUID(1) })
|
|
obj.Add(new BoomerDeployable(GlobalDefinitions.boomer) { GUID = PlanetSideGUID(2) })
|
|
obj.Add(new BoomerDeployable(GlobalDefinitions.he_mine) { GUID = PlanetSideGUID(3) })
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
|
|
obj.Clear().toSet mustEqual Set(PlanetSideGUID(1), PlanetSideGUID(2), PlanetSideGUID(3))
|
|
obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20)
|
|
}
|
|
|
|
"clear all deployables of a certain type" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
|
|
obj.Add(new ExplosiveDeployable(GlobalDefinitions.he_mine) { GUID = PlanetSideGUID(1) })
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.motionalarmsensor) { GUID = PlanetSideGUID(3) })
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.sensor_shield) { GUID = PlanetSideGUID(4) })
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountCategory(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(2, 20)
|
|
|
|
obj.ClearDeployable(DeployedItem.motionalarmsensor).toSet mustEqual Set(PlanetSideGUID(3))
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountCategory(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
}
|
|
|
|
"clear all deployables of a certain category" in {
|
|
val obj = new DeployableToolbox
|
|
obj.Initialize(Set(CombatEngineering, AdvancedHacking))
|
|
|
|
obj.Add(new ExplosiveDeployable(GlobalDefinitions.he_mine) { GUID = PlanetSideGUID(1) })
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.motionalarmsensor) { GUID = PlanetSideGUID(3) })
|
|
obj.Add(new SensorDeployable(GlobalDefinitions.sensor_shield) { GUID = PlanetSideGUID(4) })
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountCategory(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(2, 20)
|
|
|
|
obj.ClearCategory(DeployedItem.motionalarmsensor).toSet mustEqual Set(PlanetSideGUID(3), PlanetSideGUID(4))
|
|
obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(1, 20)
|
|
obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(0, 20)
|
|
obj.CountCategory(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20)
|
|
}
|
|
}
|
|
}
|