From e62adc4bc16b2f42530587943a9f9851b7a9c9cf Mon Sep 17 00:00:00 2001 From: FateJH Date: Tue, 28 Nov 2017 22:37:06 -0500 Subject: [PATCH] broke up GUIDTask tests into separate files; attempting to increase code coverage by modifying the first registering test --- .../src/test/scala/objects/GUIDTaskTest.scala | 245 ------------------ .../guidtask/GUIDTaskRegister1Test.scala | 52 ++++ .../guidtask/GUIDTaskRegister2Test.scala | 18 ++ .../guidtask/GUIDTaskRegister3Test.scala | 21 ++ .../guidtask/GUIDTaskRegister4Test.scala | 28 ++ .../guidtask/GUIDTaskRegister5Test.scala | 39 +++ .../scala/objects/guidtask/GUIDTaskTest.scala | 45 ++++ .../guidtask/GUIDTaskUnregister1Test.scala | 18 ++ .../guidtask/GUIDTaskUnregister2Test.scala | 19 ++ .../guidtask/GUIDTaskUnregister3Test.scala | 23 ++ .../guidtask/GUIDTaskUnregister4Test.scala | 32 +++ .../guidtask/GUIDTaskUnregister5Test.scala | 44 ++++ 12 files changed, 339 insertions(+), 245 deletions(-) delete mode 100644 common/src/test/scala/objects/GUIDTaskTest.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskRegister1Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskRegister2Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskRegister3Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskRegister4Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskTest.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskUnregister1Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskUnregister2Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskUnregister3Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskUnregister4Test.scala create mode 100644 common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala diff --git a/common/src/test/scala/objects/GUIDTaskTest.scala b/common/src/test/scala/objects/GUIDTaskTest.scala deleted file mode 100644 index 1ea187de..00000000 --- a/common/src/test/scala/objects/GUIDTaskTest.scala +++ /dev/null @@ -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 - } -} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister1Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister1Test.scala new file mode 100644 index 00000000..803a6024 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister1Test.scala @@ -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) +// } +//} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister2Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister2Test.scala new file mode 100644 index 00000000..e6ffb6eb --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister2Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister3Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister3Test.scala new file mode 100644 index 00000000..58b3ce48 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister3Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister4Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister4Test.scala new file mode 100644 index 00000000..1eab3dbf --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister4Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala new file mode 100644 index 00000000..a96b55dd --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala new file mode 100644 index 00000000..f67ce272 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala @@ -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 + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister1Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister1Test.scala new file mode 100644 index 00000000..5de6f2e3 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister1Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister2Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister2Test.scala new file mode 100644 index 00000000..71dcc480 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister2Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister3Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister3Test.scala new file mode 100644 index 00000000..3f0fd901 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister3Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister4Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister4Test.scala new file mode 100644 index 00000000..e52eeab7 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister4Test.scala @@ -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) + } +} diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala new file mode 100644 index 00000000..b4d28ab4 --- /dev/null +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala @@ -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) + } +}