2017-11-30 03:30:25 +00:00
|
|
|
// Copyright (c) 2017 PSForever
|
|
|
|
|
package objects
|
|
|
|
|
|
2018-03-06 04:26:38 +00:00
|
|
|
import akka.actor.{Actor, ActorContext, Props}
|
2018-07-15 01:25:44 +00:00
|
|
|
import base.ActorTest
|
2017-11-30 03:30:25 +00:00
|
|
|
import net.psforever.objects.guid.NumberPoolHub
|
|
|
|
|
import net.psforever.packet.game.PlanetSideGUID
|
2017-12-24 02:08:28 +00:00
|
|
|
import net.psforever.objects.serverobject.ServerObjectBuilder
|
2018-03-24 04:28:02 +00:00
|
|
|
import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType, WarpGate}
|
2018-04-18 22:29:40 +00:00
|
|
|
import net.psforever.objects.serverobject.terminals.ProximityTerminal
|
2018-01-26 20:32:08 +00:00
|
|
|
import net.psforever.objects.zones.Zone
|
2017-12-24 02:08:28 +00:00
|
|
|
import net.psforever.types.Vector3
|
2017-11-30 03:30:25 +00:00
|
|
|
|
|
|
|
|
import scala.concurrent.duration.Duration
|
|
|
|
|
|
2018-01-26 20:32:08 +00:00
|
|
|
class BuildingBuilderTest extends ActorTest {
|
|
|
|
|
"Building object" should {
|
|
|
|
|
"build" in {
|
2018-03-24 04:28:02 +00:00
|
|
|
val structure : (Int,Zone,ActorContext)=>Building = Building.Structure(StructureType.Building)
|
2018-03-06 04:26:38 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, 10, Zone.Nowhere), "building")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Building])
|
|
|
|
|
assert(reply.asInstanceOf[Building].Id == 10)
|
|
|
|
|
assert(reply.asInstanceOf[Building].Zone == Zone.Nowhere)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class WarpGateBuilderTest extends ActorTest {
|
|
|
|
|
"WarpGate object" should {
|
|
|
|
|
"build" in {
|
|
|
|
|
val structure : (Int,Zone,ActorContext)=>Building = WarpGate.Structure
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, 10, Zone.Nowhere), "wgate")
|
2018-01-26 20:32:08 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Building])
|
|
|
|
|
assert(reply.asInstanceOf[Building].Id == 10)
|
|
|
|
|
assert(reply.asInstanceOf[Building].Zone == Zone.Nowhere)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-24 15:07:42 +00:00
|
|
|
class DoorObjectBuilderTest1 extends ActorTest {
|
2017-11-30 03:30:25 +00:00
|
|
|
import net.psforever.objects.serverobject.doors.Door
|
2018-01-24 15:07:42 +00:00
|
|
|
"Door object" should {
|
2017-11-30 03:30:25 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2017-12-24 02:08:28 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor), hub), "door")
|
2017-11-30 03:30:25 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
2017-12-24 02:08:28 +00:00
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply.isInstanceOf[Door])
|
|
|
|
|
assert(reply.asInstanceOf[Door].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[Door].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-24 15:07:42 +00:00
|
|
|
class DoorObjectBuilderTest2 extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.doors.Door
|
|
|
|
|
"Door object" should {
|
|
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor(Vector3(1, 2, 3), Vector3(90, 180, 45))), hub), "door")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Door])
|
|
|
|
|
assert(reply.asInstanceOf[Door].Position == Vector3(1, 2, 3))
|
|
|
|
|
assert(reply.asInstanceOf[Door].Orientation == Vector3(90, 180, 45))
|
|
|
|
|
assert(reply.asInstanceOf[Door].Outwards == Vector3(0.70710677f, 0.70710677f, 0f))
|
|
|
|
|
assert(reply.asInstanceOf[Door].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[Door].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-30 03:30:25 +00:00
|
|
|
class IFFLockObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.locks.IFFLock
|
2018-01-24 15:07:42 +00:00
|
|
|
"IFFLock object" should {
|
2017-11-30 03:30:25 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2017-12-24 02:08:28 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, IFFLock.Constructor), hub), "lock")
|
2017-11-30 03:30:25 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
2017-12-24 02:08:28 +00:00
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply.isInstanceOf[IFFLock])
|
|
|
|
|
assert(reply.asInstanceOf[IFFLock].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[IFFLock].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ImplantTerminalMechObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.implantmech.ImplantTerminalMech
|
2018-01-24 15:07:42 +00:00
|
|
|
"Implant terminal mech object" should {
|
2017-11-30 03:30:25 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2017-12-24 02:08:28 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, ImplantTerminalMech.Constructor), hub), "mech")
|
2017-11-30 03:30:25 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
2017-12-24 02:08:28 +00:00
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply.isInstanceOf[ImplantTerminalMech])
|
|
|
|
|
assert(reply.asInstanceOf[ImplantTerminalMech].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[ImplantTerminalMech].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TerminalObjectBuilderTest extends ActorTest {
|
2018-01-23 01:45:05 +00:00
|
|
|
import net.psforever.objects.GlobalDefinitions.order_terminal
|
2017-11-30 03:30:25 +00:00
|
|
|
import net.psforever.objects.serverobject.terminals.Terminal
|
2018-01-24 15:07:42 +00:00
|
|
|
"Terminal object" should {
|
2017-11-30 03:30:25 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2017-12-24 02:08:28 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Terminal.Constructor(order_terminal)), hub), "term")
|
2017-11-30 03:30:25 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
2017-12-24 02:08:28 +00:00
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply.isInstanceOf[Terminal])
|
|
|
|
|
assert(reply.asInstanceOf[Terminal].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[Terminal].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-18 22:29:40 +00:00
|
|
|
class ProximityTerminalObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.GlobalDefinitions.medical_terminal
|
|
|
|
|
import net.psforever.objects.serverobject.terminals.Terminal
|
|
|
|
|
"Terminal object" should {
|
|
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2018-07-15 01:25:44 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
ProximityTerminal.Constructor(medical_terminal)), hub), "term")
|
2018-04-18 22:29:40 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal])
|
|
|
|
|
assert(reply.asInstanceOf[Terminal].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[Terminal].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-30 03:30:25 +00:00
|
|
|
class VehicleSpawnPadObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
|
2018-01-24 15:07:42 +00:00
|
|
|
"Vehicle spawn pad object" should {
|
2017-11-30 03:30:25 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
2017-12-24 02:08:28 +00:00
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
VehicleSpawnPad.Constructor(Vector3(1.1f, 2.2f, 3.3f), Vector3(4.4f, 5.5f, 6.6f))
|
|
|
|
|
), hub), "pad")
|
2017-11-30 03:30:25 +00:00
|
|
|
actor ! "!"
|
|
|
|
|
|
2017-12-24 02:08:28 +00:00
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply.isInstanceOf[VehicleSpawnPad])
|
|
|
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].GUID == PlanetSideGUID(1))
|
2017-12-24 02:08:28 +00:00
|
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].Position == Vector3(1.1f, 2.2f, 3.3f))
|
|
|
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].Orientation == Vector3(4.4f, 5.5f, 6.6f))
|
2017-11-30 03:30:25 +00:00
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-06-16 04:34:29 +00:00
|
|
|
class LocalProjectileBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.LocalProjectile
|
2018-07-15 01:25:44 +00:00
|
|
|
"Local projectile object" should {
|
2018-06-16 04:34:29 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
LocalProjectile.Constructor), hub), "locker")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[LocalProjectile])
|
|
|
|
|
assert(reply.asInstanceOf[LocalProjectile].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[LocalProjectile].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-23 01:45:05 +00:00
|
|
|
class LockerObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.mblocker.Locker
|
2018-07-15 01:25:44 +00:00
|
|
|
"Locker object" should {
|
2018-01-23 01:45:05 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
Locker.Constructor), hub), "locker")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Locker])
|
|
|
|
|
assert(reply.asInstanceOf[Locker].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[Locker].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class ResourceSiloObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
|
|
|
|
|
"Resource silo object" should {
|
|
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
ResourceSilo.Constructor), hub), "spawn-tube")
|
|
|
|
|
actor ! "startup"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[ResourceSilo])
|
|
|
|
|
assert(reply.asInstanceOf[ResourceSilo].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[ResourceSilo].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-03-24 04:28:02 +00:00
|
|
|
class SpawnTubeObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.serverobject.tube.SpawnTube
|
2018-07-15 01:25:44 +00:00
|
|
|
"Spawn tube object" should {
|
2018-03-24 04:28:02 +00:00
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
SpawnTube.Constructor(Vector3(3980.4062f, 4267.3047f, 257.5625f), Vector3(0, 0, 90))), hub), "spawn-tube")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[SpawnTube])
|
|
|
|
|
assert(reply.asInstanceOf[SpawnTube].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[SpawnTube].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply.asInstanceOf[SpawnTube].Position == Vector3(3980.4062f, 4267.3047f, 257.5625f))
|
|
|
|
|
assert(reply.asInstanceOf[SpawnTube].Orientation == Vector3(0, 0, 90))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class MannedTurretObjectBuilderTest extends ActorTest {
|
|
|
|
|
import net.psforever.objects.GlobalDefinitions.manned_turret
|
|
|
|
|
import net.psforever.objects.serverobject.turret.MannedTurret
|
|
|
|
|
"MannedTurretObjectBuilder" should {
|
|
|
|
|
"build" in {
|
|
|
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
|
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
|
|
|
MannedTurret.Constructor(manned_turret)), hub), "spawn-tube")
|
|
|
|
|
actor ! "!"
|
|
|
|
|
|
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[MannedTurret])
|
|
|
|
|
assert(reply.asInstanceOf[MannedTurret].HasGUID)
|
|
|
|
|
assert(reply.asInstanceOf[MannedTurret].GUID == PlanetSideGUID(1))
|
|
|
|
|
assert(reply == hub(1).get)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-30 03:30:25 +00:00
|
|
|
object ServerObjectBuilderTest {
|
|
|
|
|
import net.psforever.objects.guid.source.LimitedNumberSource
|
|
|
|
|
def NumberPoolHub : NumberPoolHub = {
|
|
|
|
|
val obj = new NumberPoolHub(new LimitedNumberSource(2))
|
|
|
|
|
obj
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class BuilderTestActor(builder : ServerObjectBuilder[_], hub : NumberPoolHub) extends Actor {
|
|
|
|
|
def receive : Receive = {
|
|
|
|
|
case _ =>
|
|
|
|
|
sender ! builder.Build(context, hub)
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-01-26 20:32:08 +00:00
|
|
|
|
2018-03-06 04:26:38 +00:00
|
|
|
class BuildingTestActor(structure_con : (Int,Zone,ActorContext)=>Building, building_id : Int, zone : Zone) extends Actor {
|
2018-01-26 20:32:08 +00:00
|
|
|
def receive : Receive = {
|
|
|
|
|
case _ =>
|
2018-03-06 04:26:38 +00:00
|
|
|
sender ! FoundationBuilder(structure_con).Build(building_id, zone)(context)
|
2018-01-26 20:32:08 +00:00
|
|
|
}
|
|
|
|
|
}
|
2017-11-30 03:30:25 +00:00
|
|
|
}
|