mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-15 08:24:39 +00:00
broke up GUIDTask tests into separate files; attempting to increase code coverage by modifying the first registering test
This commit is contained in:
parent
ab2e2959b5
commit
e62adc4bc1
12 changed files with 339 additions and 245 deletions
|
|
@ -1,245 +0,0 @@
|
||||||
// Copyright (c) 2017 PSForever
|
|
||||||
package objects
|
|
||||||
|
|
||||||
import java.util.logging.LogManager
|
|
||||||
|
|
||||||
import akka.actor.{ActorRef, ActorSystem, Props}
|
|
||||||
import akka.testkit.TestProbe
|
|
||||||
import net.psforever.objects._
|
|
||||||
import net.psforever.objects.entity.IdentifiableEntity
|
|
||||||
import net.psforever.objects.guid.actor.{NumberPoolActor, UniqueNumberSystem}
|
|
||||||
import net.psforever.objects.guid.selector.RandomSelector
|
|
||||||
import net.psforever.objects.guid.source.LimitedNumberSource
|
|
||||||
import net.psforever.objects.guid.{GUIDTask, NumberPoolHub, Task, TaskResolver}
|
|
||||||
import net.psforever.types.{CharacterGender, PlanetSideEmpire}
|
|
||||||
|
|
||||||
class GUIDTaskRegister1Test extends ActorTest() {
|
|
||||||
"RegisterObjectTask" in {
|
|
||||||
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = new GUIDTaskTest.TestObject
|
|
||||||
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterObjectTask(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskRegister2Test extends ActorTest() {
|
|
||||||
"RegisterEquipment -> RegisterObjectTask" in {
|
|
||||||
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskRegister3Test extends ActorTest() {
|
|
||||||
"RegisterEquipment -> RegisterTool" in {
|
|
||||||
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Tool(GlobalDefinitions.beamer)
|
|
||||||
obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj.AmmoSlots.head.Box.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj.AmmoSlots.head.Box.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskRegister4Test extends ActorTest() {
|
|
||||||
"RegisterVehicle" in {
|
|
||||||
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Vehicle(GlobalDefinitions.fury)
|
|
||||||
val obj_wep = obj.WeaponControlledFromSeat(0).get
|
|
||||||
val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get
|
|
||||||
obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo)
|
|
||||||
val obj_trunk_ammo = obj.Trunk.Items(0).obj
|
|
||||||
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj_wep.HasGUID)
|
|
||||||
assert(!obj_wep_ammo.HasGUID)
|
|
||||||
assert(!obj_trunk_ammo.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterVehicle(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj_wep.HasGUID)
|
|
||||||
assert(obj_wep_ammo.HasGUID)
|
|
||||||
assert(obj_trunk_ammo.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskRegister5Test extends ActorTest() {
|
|
||||||
"RegisterAvatar" in {
|
|
||||||
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Player("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
|
||||||
val obj_wep = Tool(GlobalDefinitions.beamer)
|
|
||||||
obj.Slot(0).Equipment = obj_wep
|
|
||||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj_wep.AmmoSlots.head.Box = obj_wep_ammo
|
|
||||||
val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj.Slot(6).Equipment = obj_inv_ammo
|
|
||||||
val obj_locker = obj.Slot(5).Equipment.get
|
|
||||||
val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj_locker.asInstanceOf[LockerContainer].Inventory += 0 -> obj_locker_ammo
|
|
||||||
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj_wep.HasGUID)
|
|
||||||
assert(!obj_wep_ammo.HasGUID)
|
|
||||||
assert(!obj_inv_ammo.HasGUID)
|
|
||||||
assert(!obj_locker.HasGUID)
|
|
||||||
assert(!obj_locker_ammo.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterAvatar(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj_wep.HasGUID)
|
|
||||||
assert(obj_wep_ammo.HasGUID)
|
|
||||||
assert(obj_inv_ammo.HasGUID)
|
|
||||||
assert(obj_locker.HasGUID)
|
|
||||||
assert(obj_locker_ammo.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskUnregister1Test extends ActorTest() {
|
|
||||||
"UnregisterObjectTask" in {
|
|
||||||
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = new GUIDTaskTest.TestObject
|
|
||||||
guid.register(obj, "dynamic")
|
|
||||||
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterObjectTask(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskUnregister2Test extends ActorTest() {
|
|
||||||
"UnregisterEquipment -> UnregisterObjectTask" in {
|
|
||||||
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
guid.register(obj, "dynamic")
|
|
||||||
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskUnregister3Test extends ActorTest() {
|
|
||||||
"UnregisterEquipment -> UnregisterTool" in {
|
|
||||||
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Tool(GlobalDefinitions.beamer)
|
|
||||||
obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
guid.register(obj, "dynamic")
|
|
||||||
guid.register(obj.AmmoSlots.head.Box, "dynamic")
|
|
||||||
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj.AmmoSlots.head.Box.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj.AmmoSlots.head.Box.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskUnregister4Test extends ActorTest() {
|
|
||||||
"RegisterVehicle" in {
|
|
||||||
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Vehicle(GlobalDefinitions.fury)
|
|
||||||
val obj_wep = obj.WeaponControlledFromSeat(0).get
|
|
||||||
val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get
|
|
||||||
obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo)
|
|
||||||
val obj_trunk_ammo = obj.Trunk.Items(0).obj
|
|
||||||
guid.register(obj, "dynamic")
|
|
||||||
guid.register(obj_wep, "dynamic")
|
|
||||||
guid.register(obj_wep_ammo, "dynamic")
|
|
||||||
guid.register(obj_trunk_ammo, "dynamic")
|
|
||||||
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj_wep.HasGUID)
|
|
||||||
assert(obj_wep_ammo.HasGUID)
|
|
||||||
assert(obj_trunk_ammo.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterVehicle(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj_wep.HasGUID)
|
|
||||||
assert(!obj_wep_ammo.HasGUID)
|
|
||||||
assert(!obj_trunk_ammo.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GUIDTaskUnregister5Test extends ActorTest() {
|
|
||||||
"UnregisterAvatar" in {
|
|
||||||
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
|
||||||
val obj = Player("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
|
||||||
val obj_wep = Tool(GlobalDefinitions.beamer)
|
|
||||||
obj.Slot(0).Equipment = obj_wep
|
|
||||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj_wep.AmmoSlots.head.Box = obj_wep_ammo
|
|
||||||
val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj.Slot(6).Equipment = obj_inv_ammo
|
|
||||||
val obj_locker = obj.Slot(5).Equipment.get
|
|
||||||
val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
|
||||||
obj_locker.asInstanceOf[LockerContainer].Inventory += 0 -> obj_locker_ammo
|
|
||||||
guid.register(obj, "dynamic")
|
|
||||||
guid.register(obj_wep, "dynamic")
|
|
||||||
guid.register(obj_wep_ammo, "dynamic")
|
|
||||||
guid.register(obj_inv_ammo, "dynamic")
|
|
||||||
guid.register(obj_locker, "dynamic")
|
|
||||||
guid.register(obj_locker_ammo, "dynamic")
|
|
||||||
|
|
||||||
assert(obj.HasGUID)
|
|
||||||
assert(obj_wep.HasGUID)
|
|
||||||
assert(obj_wep_ammo.HasGUID)
|
|
||||||
assert(obj_inv_ammo.HasGUID)
|
|
||||||
assert(obj_locker.HasGUID)
|
|
||||||
assert(obj_locker_ammo.HasGUID)
|
|
||||||
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterAvatar(obj)(uns)))
|
|
||||||
probe.expectMsg(scala.util.Success)
|
|
||||||
assert(!obj.HasGUID)
|
|
||||||
assert(!obj_wep.HasGUID)
|
|
||||||
assert(!obj_wep_ammo.HasGUID)
|
|
||||||
assert(!obj_inv_ammo.HasGUID)
|
|
||||||
assert(!obj_locker.HasGUID)
|
|
||||||
assert(!obj_locker_ammo.HasGUID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
object GUIDTaskTest {
|
|
||||||
class TestObject extends IdentifiableEntity
|
|
||||||
|
|
||||||
class RegisterTestTask(probe : ActorRef) extends Task {
|
|
||||||
def Execute(resolver : ActorRef) : Unit = {
|
|
||||||
probe ! scala.util.Success
|
|
||||||
resolver ! scala.util.Success(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def CommonTestSetup(implicit system : ActorSystem) : (NumberPoolHub, ActorRef, ActorRef, TestProbe) = {
|
|
||||||
import akka.actor.Props
|
|
||||||
import akka.routing.RandomPool
|
|
||||||
import akka.testkit.TestProbe
|
|
||||||
|
|
||||||
val guid : NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(110))
|
|
||||||
guid.AddPool("dynamic", (1 to 100).toList).Selector = new RandomSelector //TODO name is hardcoded for now
|
|
||||||
val uns = system.actorOf(RandomPool(25).props(Props(classOf[UniqueNumberSystem], guid, GUIDTaskTest.AllocateNumberPoolActors(guid))), "uns")
|
|
||||||
val taskResolver = system.actorOf(RandomPool(15).props(Props[TaskResolver]), "resolver")
|
|
||||||
LogManager.getLogManager.reset() //suppresses any internal loggers created by the above elements
|
|
||||||
(guid, uns, taskResolver, TestProbe())
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see `UniqueNumberSystem.AllocateNumberPoolActors(NumberPoolHub)(implicit ActorContext)`
|
|
||||||
*/
|
|
||||||
def AllocateNumberPoolActors(poolSource : NumberPoolHub)(implicit system : ActorSystem) : Map[String, ActorRef] = {
|
|
||||||
poolSource.Pools.map({ case ((pname, pool)) =>
|
|
||||||
pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname)
|
|
||||||
}).toMap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import akka.actor.{Actor, ActorSystem, Props}
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import org.specs2.mutable.Specification
|
||||||
|
|
||||||
|
import scala.concurrent.Await
|
||||||
|
import akka.pattern.ask
|
||||||
|
import akka.util.Timeout
|
||||||
|
import scala.concurrent.duration._
|
||||||
|
|
||||||
|
class GUIDTaskRegister1Test extends Specification {
|
||||||
|
"RegisterObjectTask" should {
|
||||||
|
"register (1)" in {
|
||||||
|
val system = ActorSystem("sys")
|
||||||
|
val test = system.actorOf(Props(classOf[GUIDTaskRegister1TestActor], system), "test")
|
||||||
|
|
||||||
|
implicit val timeout = Timeout(5 seconds)
|
||||||
|
val future = test ? "test"
|
||||||
|
val result = Await.result(future, timeout.duration).asInstanceOf[String]
|
||||||
|
result mustEqual "success"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class GUIDTaskRegister1TestActor(implicit system : ActorSystem) extends Actor {
|
||||||
|
def receive : Receive = {
|
||||||
|
case "test" =>
|
||||||
|
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = new GUIDTaskTest.TestObject
|
||||||
|
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterObjectTask(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
sender ! "success"
|
||||||
|
case _ => ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//class GUIDTaskRegister1Test extends ActorTest() {
|
||||||
|
// "RegisterObjectTask" in {
|
||||||
|
// val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
// val obj = new GUIDTaskTest.TestObject
|
||||||
|
//
|
||||||
|
// assert(!obj.HasGUID)
|
||||||
|
// taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterObjectTask(obj)(uns)))
|
||||||
|
// probe.expectMsg(scala.util.Success)
|
||||||
|
// assert(obj.HasGUID)
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskRegister2Test extends ActorTest() {
|
||||||
|
"RegisterEquipment -> RegisterObjectTask" in {
|
||||||
|
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskRegister3Test extends ActorTest() {
|
||||||
|
"RegisterEquipment -> RegisterTool" in {
|
||||||
|
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Tool(GlobalDefinitions.beamer)
|
||||||
|
obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj.AmmoSlots.head.Box.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj.AmmoSlots.head.Box.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskRegister4Test extends ActorTest() {
|
||||||
|
"RegisterVehicle" in {
|
||||||
|
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Vehicle(GlobalDefinitions.fury)
|
||||||
|
val obj_wep = obj.WeaponControlledFromSeat(0).get
|
||||||
|
val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get
|
||||||
|
obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo)
|
||||||
|
val obj_trunk_ammo = obj.Trunk.Items(0).obj
|
||||||
|
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj_wep.HasGUID)
|
||||||
|
assert(!obj_wep_ammo.HasGUID)
|
||||||
|
assert(!obj_trunk_ammo.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterVehicle(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj_wep.HasGUID)
|
||||||
|
assert(obj_wep_ammo.HasGUID)
|
||||||
|
assert(obj_trunk_ammo.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import net.psforever.types.{CharacterGender, PlanetSideEmpire}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskRegister5Test extends ActorTest() {
|
||||||
|
"RegisterAvatar" in {
|
||||||
|
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Player("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||||
|
val obj_wep = Tool(GlobalDefinitions.beamer)
|
||||||
|
obj.Slot(0).Equipment = obj_wep
|
||||||
|
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj_wep.AmmoSlots.head.Box = obj_wep_ammo
|
||||||
|
val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj.Slot(6).Equipment = obj_inv_ammo
|
||||||
|
val obj_locker = obj.Slot(5).Equipment.get
|
||||||
|
val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj_locker.asInstanceOf[LockerContainer].Inventory += 0 -> obj_locker_ammo
|
||||||
|
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj_wep.HasGUID)
|
||||||
|
assert(!obj_wep_ammo.HasGUID)
|
||||||
|
assert(!obj_inv_ammo.HasGUID)
|
||||||
|
assert(!obj_locker.HasGUID)
|
||||||
|
assert(!obj_locker_ammo.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterAvatar(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj_wep.HasGUID)
|
||||||
|
assert(obj_wep_ammo.HasGUID)
|
||||||
|
assert(obj_inv_ammo.HasGUID)
|
||||||
|
assert(obj_locker.HasGUID)
|
||||||
|
assert(obj_locker_ammo.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
45
common/src/test/scala/objects/guidtask/GUIDTaskTest.scala
Normal file
45
common/src/test/scala/objects/guidtask/GUIDTaskTest.scala
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import java.util.logging.LogManager
|
||||||
|
|
||||||
|
import akka.actor.{ActorRef, ActorSystem, Props}
|
||||||
|
import akka.testkit.TestProbe
|
||||||
|
import net.psforever.objects.entity.IdentifiableEntity
|
||||||
|
import net.psforever.objects.guid.actor.{NumberPoolActor, UniqueNumberSystem}
|
||||||
|
import net.psforever.objects.guid.selector.RandomSelector
|
||||||
|
import net.psforever.objects.guid.source.LimitedNumberSource
|
||||||
|
import net.psforever.objects.guid.{NumberPoolHub, Task, TaskResolver}
|
||||||
|
|
||||||
|
object GUIDTaskTest {
|
||||||
|
class TestObject extends IdentifiableEntity
|
||||||
|
|
||||||
|
class RegisterTestTask(probe : ActorRef) extends Task {
|
||||||
|
def Execute(resolver : ActorRef) : Unit = {
|
||||||
|
probe ! scala.util.Success
|
||||||
|
resolver ! scala.util.Success(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def CommonTestSetup(implicit system : ActorSystem) : (NumberPoolHub, ActorRef, ActorRef, TestProbe) = {
|
||||||
|
import akka.actor.Props
|
||||||
|
import akka.routing.RandomPool
|
||||||
|
import akka.testkit.TestProbe
|
||||||
|
|
||||||
|
val guid : NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(110))
|
||||||
|
guid.AddPool("dynamic", (1 to 100).toList).Selector = new RandomSelector //TODO name is hardcoded for now
|
||||||
|
val uns = system.actorOf(RandomPool(25).props(Props(classOf[UniqueNumberSystem], guid, GUIDTaskTest.AllocateNumberPoolActors(guid))), "uns")
|
||||||
|
val taskResolver = system.actorOf(RandomPool(15).props(Props[TaskResolver]), "resolver")
|
||||||
|
LogManager.getLogManager.reset() //suppresses any internal loggers created by the above elements
|
||||||
|
(guid, uns, taskResolver, TestProbe())
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see `UniqueNumberSystem.AllocateNumberPoolActors(NumberPoolHub)(implicit ActorContext)`
|
||||||
|
*/
|
||||||
|
def AllocateNumberPoolActors(poolSource : NumberPoolHub)(implicit system : ActorSystem) : Map[String, ActorRef] = {
|
||||||
|
poolSource.Pools.map({ case ((pname, pool)) =>
|
||||||
|
pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname)
|
||||||
|
}).toMap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskUnregister1Test extends ActorTest() {
|
||||||
|
"UnregisterObjectTask" in {
|
||||||
|
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = new GUIDTaskTest.TestObject
|
||||||
|
guid.register(obj, "dynamic")
|
||||||
|
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterObjectTask(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskUnregister2Test extends ActorTest() {
|
||||||
|
"UnregisterEquipment -> UnregisterObjectTask" in {
|
||||||
|
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
guid.register(obj, "dynamic")
|
||||||
|
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskUnregister3Test extends ActorTest() {
|
||||||
|
"UnregisterEquipment -> UnregisterTool" in {
|
||||||
|
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Tool(GlobalDefinitions.beamer)
|
||||||
|
obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
guid.register(obj, "dynamic")
|
||||||
|
guid.register(obj.AmmoSlots.head.Box, "dynamic")
|
||||||
|
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj.AmmoSlots.head.Box.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj.AmmoSlots.head.Box.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskUnregister4Test extends ActorTest() {
|
||||||
|
"RegisterVehicle" in {
|
||||||
|
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Vehicle(GlobalDefinitions.fury)
|
||||||
|
val obj_wep = obj.WeaponControlledFromSeat(0).get
|
||||||
|
val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get
|
||||||
|
obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo)
|
||||||
|
val obj_trunk_ammo = obj.Trunk.Items(0).obj
|
||||||
|
guid.register(obj, "dynamic")
|
||||||
|
guid.register(obj_wep, "dynamic")
|
||||||
|
guid.register(obj_wep_ammo, "dynamic")
|
||||||
|
guid.register(obj_trunk_ammo, "dynamic")
|
||||||
|
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj_wep.HasGUID)
|
||||||
|
assert(obj_wep_ammo.HasGUID)
|
||||||
|
assert(obj_trunk_ammo.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterVehicle(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj_wep.HasGUID)
|
||||||
|
assert(!obj_wep_ammo.HasGUID)
|
||||||
|
assert(!obj_trunk_ammo.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright (c) 2017 PSForever
|
||||||
|
package objects.guidtask
|
||||||
|
|
||||||
|
import net.psforever.objects._
|
||||||
|
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||||
|
import net.psforever.types.{CharacterGender, PlanetSideEmpire}
|
||||||
|
import objects.ActorTest
|
||||||
|
|
||||||
|
class GUIDTaskUnregister5Test extends ActorTest() {
|
||||||
|
"UnregisterAvatar" in {
|
||||||
|
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
|
||||||
|
val obj = Player("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||||
|
val obj_wep = Tool(GlobalDefinitions.beamer)
|
||||||
|
obj.Slot(0).Equipment = obj_wep
|
||||||
|
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj_wep.AmmoSlots.head.Box = obj_wep_ammo
|
||||||
|
val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj.Slot(6).Equipment = obj_inv_ammo
|
||||||
|
val obj_locker = obj.Slot(5).Equipment.get
|
||||||
|
val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||||
|
obj_locker.asInstanceOf[LockerContainer].Inventory += 0 -> obj_locker_ammo
|
||||||
|
guid.register(obj, "dynamic")
|
||||||
|
guid.register(obj_wep, "dynamic")
|
||||||
|
guid.register(obj_wep_ammo, "dynamic")
|
||||||
|
guid.register(obj_inv_ammo, "dynamic")
|
||||||
|
guid.register(obj_locker, "dynamic")
|
||||||
|
guid.register(obj_locker_ammo, "dynamic")
|
||||||
|
|
||||||
|
assert(obj.HasGUID)
|
||||||
|
assert(obj_wep.HasGUID)
|
||||||
|
assert(obj_wep_ammo.HasGUID)
|
||||||
|
assert(obj_inv_ammo.HasGUID)
|
||||||
|
assert(obj_locker.HasGUID)
|
||||||
|
assert(obj_locker_ammo.HasGUID)
|
||||||
|
taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterAvatar(obj)(uns)))
|
||||||
|
probe.expectMsg(scala.util.Success)
|
||||||
|
assert(!obj.HasGUID)
|
||||||
|
assert(!obj_wep.HasGUID)
|
||||||
|
assert(!obj_wep_ammo.HasGUID)
|
||||||
|
assert(!obj_inv_ammo.HasGUID)
|
||||||
|
assert(!obj_locker.HasGUID)
|
||||||
|
assert(!obj_locker_ammo.HasGUID)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue