mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-02-21 07:33:34 +00:00
working vehicle loadouts from repair/rearm silos; code documentation and expanded tests
This commit is contained in:
parent
2a4fe4865e
commit
a513f4996e
24 changed files with 601 additions and 200 deletions
|
|
@ -293,12 +293,12 @@ class AvatarTest extends Specification {
|
|||
|
||||
avatar.LoadLoadout(0) match {
|
||||
case Some(items : InfantryLoadout) =>
|
||||
items.Label mustEqual "test"
|
||||
items.ExoSuit mustEqual obj.ExoSuit
|
||||
items.Subtype mustEqual 0
|
||||
items.label mustEqual "test"
|
||||
items.exosuit mustEqual obj.ExoSuit
|
||||
items.subtype mustEqual 0
|
||||
|
||||
items.VisibleSlots.length mustEqual 3
|
||||
val holsters = items.VisibleSlots.sortBy(_.index)
|
||||
items.visible_slots.length mustEqual 3
|
||||
val holsters = items.visible_slots.sortBy(_.index)
|
||||
holsters.head.index mustEqual 0
|
||||
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual beamer
|
||||
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].ammo.head.ammo.capacity mustEqual 1 //we changed this
|
||||
|
|
@ -308,8 +308,8 @@ class AvatarTest extends Specification {
|
|||
holsters(2).index mustEqual 4
|
||||
holsters(2).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual forceblade
|
||||
|
||||
items.Inventory.length mustEqual 6
|
||||
val inventory = items.Inventory.sortBy(_.index)
|
||||
items.inventory.length mustEqual 6
|
||||
val inventory = items.inventory.sortBy(_.index)
|
||||
inventory.head.index mustEqual 6
|
||||
inventory.head.item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm
|
||||
inventory(1).index mustEqual 9
|
||||
|
|
@ -349,11 +349,11 @@ class AvatarTest extends Specification {
|
|||
|
||||
avatar.LoadLoadout(0) match {
|
||||
case Some(items : InfantryLoadout) =>
|
||||
items.Label mustEqual "test"
|
||||
items.ExoSuit mustEqual obj.ExoSuit
|
||||
items.Subtype mustEqual 0
|
||||
items.VisibleSlots.length mustEqual 3
|
||||
items.Inventory.length mustEqual 0 //empty
|
||||
items.label mustEqual "test"
|
||||
items.exosuit mustEqual obj.ExoSuit
|
||||
items.subtype mustEqual 0
|
||||
items.visible_slots.length mustEqual 3
|
||||
items.inventory.length mustEqual 0 //empty
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
|
|
@ -368,11 +368,11 @@ class AvatarTest extends Specification {
|
|||
|
||||
avatar.LoadLoadout(0) match {
|
||||
case Some(items : InfantryLoadout) =>
|
||||
items.Label mustEqual "test"
|
||||
items.ExoSuit mustEqual obj.ExoSuit
|
||||
items.Subtype mustEqual 0
|
||||
items.VisibleSlots.length mustEqual 0 //empty
|
||||
items.Inventory.length mustEqual 6
|
||||
items.label mustEqual "test"
|
||||
items.exosuit mustEqual obj.ExoSuit
|
||||
items.subtype mustEqual 0
|
||||
items.visible_slots.length mustEqual 0 //empty
|
||||
items.inventory.length mustEqual 6
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,12 +39,12 @@ class LoadoutTest extends Specification {
|
|||
val player = CreatePlayer()
|
||||
val obj = Loadout.Create(player, "test").asInstanceOf[InfantryLoadout]
|
||||
|
||||
obj.Label mustEqual "test"
|
||||
obj.ExoSuit mustEqual obj.ExoSuit
|
||||
obj.Subtype mustEqual 0
|
||||
obj.label mustEqual "test"
|
||||
obj.exosuit mustEqual ExoSuitType.Standard
|
||||
obj.subtype mustEqual 0
|
||||
|
||||
obj.VisibleSlots.length mustEqual 3
|
||||
val holsters = obj.VisibleSlots.sortBy(_.index)
|
||||
obj.visible_slots.length mustEqual 3
|
||||
val holsters = obj.visible_slots.sortBy(_.index)
|
||||
holsters.head.index mustEqual 0
|
||||
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual beamer
|
||||
holsters(1).index mustEqual 2
|
||||
|
|
@ -52,8 +52,8 @@ class LoadoutTest extends Specification {
|
|||
holsters(2).index mustEqual 4
|
||||
holsters(2).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual forceblade
|
||||
|
||||
obj.Inventory.length mustEqual 5
|
||||
val inventory = obj.Inventory.sortBy(_.index)
|
||||
obj.inventory.length mustEqual 5
|
||||
val inventory = obj.inventory.sortBy(_.index)
|
||||
inventory.head.index mustEqual 6
|
||||
inventory.head.item.asInstanceOf[Loadout.ShorthandConstructionItem].definition mustEqual ace
|
||||
inventory(1).index mustEqual 9
|
||||
|
|
@ -66,6 +66,30 @@ class LoadoutTest extends Specification {
|
|||
inventory(4).item.asInstanceOf[Loadout.ShorthandSimpleItem].definition mustEqual remote_electronics_kit
|
||||
}
|
||||
|
||||
"create a loadout that contains a vehicle's inventory" in {
|
||||
val vehicle = Vehicle(mediumtransport)
|
||||
vehicle.Inventory += 30 -> AmmoBox(bullet_9mm)
|
||||
vehicle.Inventory += 33 -> AmmoBox(bullet_9mm_AP)
|
||||
val obj = Loadout.Create(vehicle, "test").asInstanceOf[VehicleLoadout]
|
||||
|
||||
obj.label mustEqual "test"
|
||||
obj.vehicle_definition mustEqual mediumtransport
|
||||
|
||||
obj.visible_slots.length mustEqual 2
|
||||
val holsters = obj.visible_slots.sortBy(_.index)
|
||||
holsters.head.index mustEqual 5
|
||||
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual mediumtransport_weapon_systemA
|
||||
holsters(1).index mustEqual 6
|
||||
holsters(1).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual mediumtransport_weapon_systemB
|
||||
|
||||
obj.inventory.length mustEqual 2
|
||||
val inventory = obj.inventory.sortBy(_.index)
|
||||
inventory.head.index mustEqual 30
|
||||
inventory.head.item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm
|
||||
inventory(1).index mustEqual 33
|
||||
inventory(1).item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm_AP
|
||||
}
|
||||
|
||||
"distinguish MAX subtype information" in {
|
||||
val player = CreatePlayer()
|
||||
val slot = player.Slot(0)
|
||||
|
|
@ -83,9 +107,9 @@ class LoadoutTest extends Specification {
|
|||
slot.Equipment = Tool(trhev_burster)
|
||||
val ldout4 = Loadout.Create(player, "burster").asInstanceOf[InfantryLoadout]
|
||||
|
||||
ldout1.Subtype mustEqual 0
|
||||
ldout2.Subtype mustEqual 1
|
||||
ldout3.Subtype mustEqual 2
|
||||
ldout4.Subtype mustEqual 3
|
||||
ldout1.subtype mustEqual 0
|
||||
ldout2.subtype mustEqual 1
|
||||
ldout3.subtype mustEqual 2
|
||||
ldout4.subtype mustEqual 3
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,6 +208,25 @@ class SpawnTubeObjectBuilderTest extends ActorTest {
|
|||
}
|
||||
}
|
||||
|
||||
class RepairRearmSiloObjectBuilderTest extends ActorTest {
|
||||
import net.psforever.objects.GlobalDefinitions.repair_silo
|
||||
import net.psforever.objects.serverobject.terminals.RepairRearmSilo
|
||||
"LockerObjectBuilder" should {
|
||||
"build" in {
|
||||
val hub = ServerObjectBuilderTest.NumberPoolHub
|
||||
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
||||
RepairRearmSilo.Constructor(repair_silo)), hub), "silo")
|
||||
actor ! "!"
|
||||
|
||||
val reply = receiveOne(Duration.create(1000, "ms"))
|
||||
assert(reply.isInstanceOf[RepairRearmSilo])
|
||||
assert(reply.asInstanceOf[RepairRearmSilo].HasGUID)
|
||||
assert(reply.asInstanceOf[RepairRearmSilo].GUID == PlanetSideGUID(1))
|
||||
assert(reply == hub(1).get)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object ServerObjectBuilderTest {
|
||||
import net.psforever.objects.guid.source.LimitedNumberSource
|
||||
def NumberPoolHub : NumberPoolHub = {
|
||||
|
|
|
|||
|
|
@ -277,6 +277,38 @@ class VehicleTest extends Specification {
|
|||
filteredMap(0).UtilType mustEqual UtilityType.order_terminalb
|
||||
filteredMap(2).UtilType mustEqual UtilityType.order_terminalb
|
||||
}
|
||||
|
||||
"access its mounted weapons by Slot" in {
|
||||
val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
|
||||
harasser_vehicle.Weapons(2).Equipment.get.GUID = PlanetSideGUID(10)
|
||||
|
||||
harasser_vehicle.Slot(2).Equipment.get.GUID mustEqual PlanetSideGUID(10)
|
||||
}
|
||||
|
||||
"access its trunk by Slot" in {
|
||||
val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
|
||||
val ammobox = AmmoBox(GlobalDefinitions.armor_canister)
|
||||
ammobox.GUID = PlanetSideGUID(10)
|
||||
harasser_vehicle.Inventory += 30 -> ammobox
|
||||
|
||||
harasser_vehicle.Slot(30).Equipment.get.GUID mustEqual PlanetSideGUID(10)
|
||||
}
|
||||
|
||||
"find its mounted weapons by GUID" in {
|
||||
val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
|
||||
harasser_vehicle.Weapons(2).Equipment.get.GUID = PlanetSideGUID(10)
|
||||
|
||||
harasser_vehicle.Find(PlanetSideGUID(10)) mustEqual Some(2)
|
||||
}
|
||||
|
||||
"find items in its trunk by GUID" in {
|
||||
val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
|
||||
val ammobox = AmmoBox(GlobalDefinitions.armor_canister)
|
||||
ammobox.GUID = PlanetSideGUID(10)
|
||||
harasser_vehicle.Inventory += 30 -> ammobox
|
||||
|
||||
harasser_vehicle.Find(PlanetSideGUID(10)) mustEqual Some(30)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,12 +72,54 @@ class OrderTerminalTest extends Specification {
|
|||
terminal.Request(player, msg) mustEqual Terminal.NoDeal()
|
||||
}
|
||||
|
||||
//TODO loudout tests
|
||||
|
||||
"player can not buy equipment from the wrong page ('9mmbullet_AP', page 1)" in {
|
||||
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "9mmbullet_AP", 0, PlanetSideGUID(0))
|
||||
|
||||
terminal.Request(player, msg) mustEqual Terminal.NoDeal()
|
||||
}
|
||||
|
||||
"player can retrieve an infantry loadout" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
player2.ExoSuit = ExoSuitType.Agile
|
||||
player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
player2.Slot(6).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
avatar.SaveLoadout(player2, "test", 0)
|
||||
|
||||
val msg = terminal.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 0, PlanetSideGUID(0)))
|
||||
msg.isInstanceOf[Terminal.InfantryLoadout] mustEqual true
|
||||
val loadout = msg.asInstanceOf[Terminal.InfantryLoadout]
|
||||
loadout.exosuit mustEqual ExoSuitType.Agile
|
||||
loadout.subtype mustEqual 0
|
||||
loadout.holsters.size mustEqual 1
|
||||
loadout.holsters.head.obj.Definition mustEqual GlobalDefinitions.beamer
|
||||
loadout.holsters.head.start mustEqual 0
|
||||
loadout.inventory.head.obj.Definition mustEqual GlobalDefinitions.beamer
|
||||
loadout.inventory.head.start mustEqual 6
|
||||
}
|
||||
|
||||
"player can not retrieve an infantry loadout from the wrong page" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
player2.ExoSuit = ExoSuitType.Agile
|
||||
player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
player2.Slot(6).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
avatar.SaveLoadout(player2, "test", 0)
|
||||
|
||||
val msg = terminal.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 3, "", 0, PlanetSideGUID(0))) //page 3
|
||||
msg.isInstanceOf[Terminal.NoDeal] mustEqual true
|
||||
}
|
||||
|
||||
"player can not retrieve an infantry loadout from the wrong line" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
player2.ExoSuit = ExoSuitType.Agile
|
||||
player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
player2.Slot(6).Equipment = Tool(GlobalDefinitions.beamer)
|
||||
avatar.SaveLoadout(player2, "test", 0)
|
||||
|
||||
val msg = terminal.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 1, PlanetSideGUID(0)))
|
||||
msg.isInstanceOf[Terminal.NoDeal] mustEqual true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ class ProximityTerminalControl2Test extends ActorTest() {
|
|||
val (_, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.medical_terminal, PlanetSideEmpire.TR)
|
||||
|
||||
terminal.Actor !"hello"
|
||||
val reply = receiveOne(Duration.create(500, "ms"))
|
||||
assert(reply.isInstanceOf[Terminal.NoDeal])
|
||||
expectNoMsg(Duration.create(500, "ms"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
170
common/src/test/scala/objects/terminal/ProximityTest.scala
Normal file
170
common/src/test/scala/objects/terminal/ProximityTest.scala
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package objects.terminal
|
||||
|
||||
import akka.actor.Props
|
||||
import net.psforever.objects.serverobject.CommonMessages
|
||||
import net.psforever.objects.serverobject.terminals.Terminal.TerminalMessage
|
||||
import net.psforever.objects.serverobject.terminals.{ProximityTerminal, ProximityTerminalControl, ProximityUnit, Terminal}
|
||||
import net.psforever.objects.{Avatar, GlobalDefinitions, Player}
|
||||
import net.psforever.packet.game.PlanetSideGUID
|
||||
import net.psforever.types.{CharacterGender, PlanetSideEmpire}
|
||||
import objects.ActorTest
|
||||
import org.specs2.mutable.Specification
|
||||
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class ProximityTest extends Specification {
|
||||
"ProximityUnit" should {
|
||||
"construct (with a Terminal object)" in {
|
||||
val obj = new ProximityTest.SampleTerminal()
|
||||
obj.NumberUsers mustEqual 0
|
||||
}
|
||||
|
||||
"keep track of users (add)" in {
|
||||
val obj = new ProximityTest.SampleTerminal()
|
||||
obj.NumberUsers mustEqual 0
|
||||
obj.AddUser(PlanetSideGUID(10)) mustEqual obj.NumberUsers
|
||||
obj.NumberUsers mustEqual 1
|
||||
obj.AddUser(PlanetSideGUID(20)) mustEqual obj.NumberUsers
|
||||
obj.NumberUsers mustEqual 2
|
||||
}
|
||||
|
||||
"keep track of users (remove)" in {
|
||||
val obj = new ProximityTest.SampleTerminal()
|
||||
obj.AddUser(PlanetSideGUID(10))
|
||||
obj.AddUser(PlanetSideGUID(20))
|
||||
obj.NumberUsers mustEqual 2
|
||||
obj.RemoveUser(PlanetSideGUID(10)) mustEqual obj.NumberUsers
|
||||
obj.NumberUsers mustEqual 1
|
||||
obj.RemoveUser(PlanetSideGUID(20)) mustEqual obj.NumberUsers
|
||||
obj.NumberUsers mustEqual 0
|
||||
}
|
||||
|
||||
"can not add a user twice" in {
|
||||
val obj = new ProximityTest.SampleTerminal()
|
||||
obj.AddUser(PlanetSideGUID(10))
|
||||
obj.NumberUsers mustEqual 1
|
||||
obj.AddUser(PlanetSideGUID(10))
|
||||
obj.NumberUsers mustEqual 1
|
||||
}
|
||||
|
||||
"can not remove a user that was not added" in {
|
||||
val obj = new ProximityTest.SampleTerminal()
|
||||
obj.AddUser(PlanetSideGUID(10))
|
||||
obj.NumberUsers mustEqual 1
|
||||
obj.RemoveUser(PlanetSideGUID(20))
|
||||
obj.NumberUsers mustEqual 1
|
||||
}
|
||||
}
|
||||
|
||||
"ProximityTerminal" should {
|
||||
"construct" in {
|
||||
ProximityTerminal(GlobalDefinitions.medical_terminal)
|
||||
ok
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ProximityTerminalControl1bTest extends ActorTest {
|
||||
"ProximityTerminalControl" should {
|
||||
"send out a start message" in {
|
||||
val obj = ProximityTerminal(GlobalDefinitions.medical_terminal)
|
||||
obj.Actor = system.actorOf(Props(classOf[ProximityTerminalControl], obj), "prox-ctrl")
|
||||
val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player.GUID = PlanetSideGUID(10)
|
||||
|
||||
assert(obj.NumberUsers == 0)
|
||||
obj.Actor ! CommonMessages.Use(player)
|
||||
val msg = receiveOne(200 milliseconds)
|
||||
assert(obj.NumberUsers == 1)
|
||||
assert(msg.isInstanceOf[TerminalMessage])
|
||||
val msgout = msg.asInstanceOf[TerminalMessage]
|
||||
assert(msgout.player == player)
|
||||
assert(msgout.msg == null)
|
||||
assert(msgout.response.isInstanceOf[Terminal.StartProximityEffect])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ProximityTerminalControl2bTest extends ActorTest {
|
||||
"ProximityTerminalControl" should {
|
||||
"will not send out one start message unless first user" in {
|
||||
val obj = ProximityTerminal(GlobalDefinitions.medical_terminal)
|
||||
obj.Actor = system.actorOf(Props(classOf[ProximityTerminalControl], obj), "prox-ctrl")
|
||||
val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player1.GUID = PlanetSideGUID(10)
|
||||
val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player2.GUID = PlanetSideGUID(11)
|
||||
assert(obj.NumberUsers == 0)
|
||||
|
||||
obj.Actor ! CommonMessages.Use(player1)
|
||||
val msg = receiveOne(200 milliseconds)
|
||||
assert(obj.NumberUsers == 1)
|
||||
assert(msg.isInstanceOf[TerminalMessage])
|
||||
assert(msg.asInstanceOf[TerminalMessage].response.isInstanceOf[Terminal.StartProximityEffect])
|
||||
obj.Actor ! CommonMessages.Use(player2)
|
||||
expectNoMsg(500 milliseconds)
|
||||
assert(obj.NumberUsers == 2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ProximityTerminalControl3bTest extends ActorTest {
|
||||
"ProximityTerminalControl" should {
|
||||
"send out a stop message" in {
|
||||
val obj = ProximityTerminal(GlobalDefinitions.medical_terminal)
|
||||
obj.Actor = system.actorOf(Props(classOf[ProximityTerminalControl], obj), "prox-ctrl")
|
||||
val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player.GUID = PlanetSideGUID(10)
|
||||
|
||||
assert(obj.NumberUsers == 0)
|
||||
obj.Actor ! CommonMessages.Use(player)
|
||||
receiveOne(200 milliseconds)
|
||||
assert(obj.NumberUsers == 1)
|
||||
obj.Actor ! CommonMessages.Unuse(player)
|
||||
val msg = receiveOne(200 milliseconds)
|
||||
assert(obj.NumberUsers == 0)
|
||||
assert(msg.isInstanceOf[TerminalMessage])
|
||||
val msgout = msg.asInstanceOf[TerminalMessage]
|
||||
assert(msgout.player == player)
|
||||
assert(msgout.msg == null)
|
||||
assert(msgout.response.isInstanceOf[Terminal.StopProximityEffect])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ProximityTerminalControl4bTest extends ActorTest {
|
||||
"ProximityTerminalControl" should {
|
||||
"will not send out one stop message until last user" in {
|
||||
val obj = ProximityTerminal(GlobalDefinitions.medical_terminal)
|
||||
obj.Actor = system.actorOf(Props(classOf[ProximityTerminalControl], obj), "prox-ctrl")
|
||||
val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player1.GUID = PlanetSideGUID(10)
|
||||
val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
player2.GUID = PlanetSideGUID(11)
|
||||
assert(obj.NumberUsers == 0)
|
||||
|
||||
obj.Actor ! CommonMessages.Use(player1)
|
||||
receiveOne(200 milliseconds) //StartProximityEffect
|
||||
assert(obj.NumberUsers == 1)
|
||||
obj.Actor ! CommonMessages.Use(player2)
|
||||
expectNoMsg(500 milliseconds)
|
||||
assert(obj.NumberUsers == 2)
|
||||
obj.Actor ! CommonMessages.Unuse(player1)
|
||||
expectNoMsg(500 milliseconds)
|
||||
assert(obj.NumberUsers == 1)
|
||||
obj.Actor ! CommonMessages.Unuse(player2)
|
||||
val msg = receiveOne(200 milliseconds)
|
||||
assert(obj.NumberUsers == 0)
|
||||
assert(msg.isInstanceOf[TerminalMessage])
|
||||
val msgout = msg.asInstanceOf[TerminalMessage]
|
||||
assert(msgout.player == player2)
|
||||
assert(msgout.msg == null)
|
||||
assert(msgout.response.isInstanceOf[Terminal.StopProximityEffect])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object ProximityTest {
|
||||
class SampleTerminal extends Terminal(GlobalDefinitions.dropship_vehicle_terminal) with ProximityUnit
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package objects.terminal
|
||||
|
||||
import akka.actor.ActorRef
|
||||
import net.psforever.objects.serverobject.structures.{Building, StructureType}
|
||||
import net.psforever.objects._
|
||||
import net.psforever.objects.serverobject.terminals.{RepairRearmSilo, Terminal}
|
||||
import net.psforever.objects.zones.Zone
|
||||
import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID}
|
||||
import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType}
|
||||
import org.specs2.mutable.Specification
|
||||
|
||||
class RepairRearmSiloTest extends Specification {
|
||||
"RepairRearmSilo" should {
|
||||
val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0))
|
||||
val silo = RepairRearmSilo(GlobalDefinitions.repair_silo)
|
||||
silo.Owner = new Building(0, Zone.Nowhere, StructureType.Building)
|
||||
silo.Owner.Faction = PlanetSideEmpire.TR
|
||||
|
||||
"define" in {
|
||||
GlobalDefinitions.repair_silo.ObjectId mustEqual 729
|
||||
}
|
||||
|
||||
"construct" in {
|
||||
val obj = RepairRearmSilo(GlobalDefinitions.repair_silo)
|
||||
obj.Actor mustEqual ActorRef.noSender
|
||||
}
|
||||
|
||||
"player can buy a box of ammunition ('bullet_35mm')" in {
|
||||
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 3, "35mmbullet", 0, PlanetSideGUID(0))
|
||||
val reply = silo.Request(player, msg)
|
||||
reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true
|
||||
val reply2 = reply.asInstanceOf[Terminal.BuyEquipment]
|
||||
reply2.item.isInstanceOf[AmmoBox] mustEqual true
|
||||
reply2.item.asInstanceOf[AmmoBox].Definition mustEqual GlobalDefinitions.bullet_35mm
|
||||
reply2.item.asInstanceOf[AmmoBox].Capacity mustEqual 100
|
||||
}
|
||||
|
||||
"player can not buy fake equipment ('sabot')" in {
|
||||
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 3, "sabot", 0, PlanetSideGUID(0))
|
||||
|
||||
silo.Request(player, msg) mustEqual Terminal.NoDeal()
|
||||
}
|
||||
|
||||
"player can not buy equipment from the wrong page ('35mmbullet', page 1)" in {
|
||||
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "35mmbullet", 0, PlanetSideGUID(0))
|
||||
|
||||
silo.Request(player, msg) mustEqual Terminal.NoDeal()
|
||||
}
|
||||
|
||||
"player can retrieve a vehicle loadout" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury)
|
||||
vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm)
|
||||
avatar.SaveLoadout(vehicle, "test", 10)
|
||||
|
||||
val msg = silo.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 0, PlanetSideGUID(0)))
|
||||
msg.isInstanceOf[Terminal.VehicleLoadout] mustEqual true
|
||||
val loadout = msg.asInstanceOf[Terminal.VehicleLoadout]
|
||||
loadout.vehicle_definition mustEqual GlobalDefinitions.fury
|
||||
loadout.weapons.size mustEqual 1
|
||||
loadout.weapons.head.obj.Definition mustEqual GlobalDefinitions.fury_weapon_systema
|
||||
loadout.weapons.head.start mustEqual 1
|
||||
loadout.inventory.head.obj.Definition mustEqual GlobalDefinitions.bullet_9mm
|
||||
loadout.inventory.head.start mustEqual 30
|
||||
}
|
||||
|
||||
"player can not retrieve a vehicle loadout from the wrong line" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury)
|
||||
vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm)
|
||||
avatar.SaveLoadout(vehicle, "test", 10)
|
||||
|
||||
val msg = silo.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 3, "", 0, PlanetSideGUID(0))) //page 3
|
||||
msg.isInstanceOf[Terminal.NoDeal] mustEqual true
|
||||
}
|
||||
|
||||
"player can not retrieve a vehicle loadout from the wrong line" in {
|
||||
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)
|
||||
val player2 = Player(avatar)
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury)
|
||||
vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm)
|
||||
avatar.SaveLoadout(vehicle, "test", 10)
|
||||
|
||||
val msg = silo.Request(player2, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 1, PlanetSideGUID(0))) //line 11
|
||||
msg.isInstanceOf[Terminal.NoDeal] mustEqual true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -26,8 +26,7 @@ class TerminalControl2Test extends ActorTest() {
|
|||
val (_, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR)
|
||||
|
||||
terminal.Actor !"hello"
|
||||
val reply = receiveOne(Duration.create(500, "ms"))
|
||||
assert(reply.isInstanceOf[Terminal.NoDeal])
|
||||
expectNoMsg(Duration.create(500, "ms"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue