2017-11-06 15:24:36 +00:00
|
|
|
// Copyright (c) 2017 PSForever
|
|
|
|
|
package objects.terminal
|
|
|
|
|
|
2018-01-26 20:32:08 +00:00
|
|
|
import akka.actor.{ActorSystem, Props}
|
2018-07-15 01:25:44 +00:00
|
|
|
import base.ActorTest
|
2018-03-24 04:28:02 +00:00
|
|
|
import net.psforever.objects.serverobject.structures.{Building, StructureType}
|
2018-01-26 20:32:08 +00:00
|
|
|
import net.psforever.objects.serverobject.terminals.{Terminal, TerminalControl, TerminalDefinition}
|
|
|
|
|
import net.psforever.objects.zones.Zone
|
2018-03-20 00:13:39 +00:00
|
|
|
import net.psforever.objects.{Avatar, GlobalDefinitions, Player}
|
2017-11-06 15:24:36 +00:00
|
|
|
import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID}
|
|
|
|
|
import net.psforever.types._
|
|
|
|
|
|
|
|
|
|
import scala.concurrent.duration.Duration
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class TerminalControl1Test extends ActorTest {
|
2017-11-06 15:24:36 +00:00
|
|
|
"TerminalControl" should {
|
|
|
|
|
"construct (cert terminal)" in {
|
|
|
|
|
val terminal = Terminal(GlobalDefinitions.cert_terminal)
|
|
|
|
|
terminal.Actor = system.actorOf(Props(classOf[TerminalControl], terminal), "test-cert-term")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class TerminalControl2Test extends ActorTest {
|
2017-12-05 05:37:24 +00:00
|
|
|
"TerminalControl can not process wrong messages" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (_, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR)
|
2017-12-05 05:37:24 +00:00
|
|
|
|
|
|
|
|
terminal.Actor !"hello"
|
2018-05-16 04:27:25 +00:00
|
|
|
expectNoMsg(Duration.create(500, "ms"))
|
2017-12-05 05:37:24 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-06 15:24:36 +00:00
|
|
|
//terminal control is mostly a pass-through actor for Terminal.Exchange messages, wrapped in Terminal.TerminalMessage protocol
|
|
|
|
|
//test for Cert_Terminal messages (see CertTerminalTest)
|
2018-07-15 01:25:44 +00:00
|
|
|
class CertTerminalControl1Test extends ActorTest {
|
2017-11-06 15:24:36 +00:00
|
|
|
"TerminalControl can be used to learn a certification ('medium_assault')" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR)
|
2017-11-06 15:24:36 +00:00
|
|
|
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "medium_assault", 0, PlanetSideGUID(0))
|
|
|
|
|
|
|
|
|
|
terminal.Actor ! Terminal.Request(player, msg)
|
|
|
|
|
val reply = receiveOne(Duration.create(500, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal.TerminalMessage])
|
|
|
|
|
val reply2 = reply.asInstanceOf[Terminal.TerminalMessage]
|
|
|
|
|
assert(reply2.player == player)
|
|
|
|
|
assert(reply2.msg == msg)
|
|
|
|
|
assert(reply2.response == Terminal.LearnCertification(CertificationType.MediumAssault, 2))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class CertTerminalControl2Test extends ActorTest {
|
2017-11-06 15:24:36 +00:00
|
|
|
"TerminalControl can be used to warn about not learning a fake certification ('juggling')" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR)
|
2017-11-06 15:24:36 +00:00
|
|
|
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "juggling", 0, PlanetSideGUID(0))
|
|
|
|
|
|
|
|
|
|
terminal.Actor ! Terminal.Request(player, msg)
|
|
|
|
|
val reply = receiveOne(Duration.create(500, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal.TerminalMessage])
|
|
|
|
|
val reply2 = reply.asInstanceOf[Terminal.TerminalMessage]
|
|
|
|
|
assert(reply2.player == player)
|
|
|
|
|
assert(reply2.msg == msg)
|
|
|
|
|
assert(reply2.response == Terminal.NoDeal())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class CertTerminalControl3Test extends ActorTest {
|
2017-11-06 15:24:36 +00:00
|
|
|
"TerminalControl can be used to forget a certification ('medium_assault')" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR)
|
2017-11-06 15:24:36 +00:00
|
|
|
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "medium_assault", 0, PlanetSideGUID(0))
|
|
|
|
|
|
|
|
|
|
terminal.Actor ! Terminal.Request(player, msg)
|
|
|
|
|
val reply = receiveOne(Duration.create(500, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal.TerminalMessage])
|
|
|
|
|
val reply2 = reply.asInstanceOf[Terminal.TerminalMessage]
|
|
|
|
|
assert(reply2.player == player)
|
|
|
|
|
assert(reply2.msg == msg)
|
|
|
|
|
assert(reply2.response == Terminal.SellCertification(CertificationType.MediumAssault, 2))
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-11-09 02:00:46 +00:00
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class VehicleTerminalControl1Test extends ActorTest {
|
2017-11-09 02:00:46 +00:00
|
|
|
"TerminalControl can be used to buy a vehicle ('two_man_assault_buggy')" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR)
|
2017-11-09 02:00:46 +00:00
|
|
|
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "two_man_assault_buggy", 0, PlanetSideGUID(0))
|
|
|
|
|
|
|
|
|
|
terminal.Actor ! Terminal.Request(player, msg)
|
|
|
|
|
val reply = receiveOne(Duration.create(500, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal.TerminalMessage])
|
|
|
|
|
val reply2 = reply.asInstanceOf[Terminal.TerminalMessage]
|
|
|
|
|
assert(reply2.player == player)
|
|
|
|
|
assert(reply2.msg == msg)
|
|
|
|
|
assert(reply2.response.isInstanceOf[Terminal.BuyVehicle])
|
|
|
|
|
val reply3 = reply2.response.asInstanceOf[Terminal.BuyVehicle]
|
|
|
|
|
assert(reply3.vehicle.Definition == GlobalDefinitions.two_man_assault_buggy)
|
2017-12-11 23:17:05 +00:00
|
|
|
assert(reply3.weapons == Nil)
|
|
|
|
|
assert(reply3.inventory.length == 6) //TODO
|
|
|
|
|
assert(reply3.inventory.head.obj.Definition == GlobalDefinitions.bullet_12mm)
|
|
|
|
|
assert(reply3.inventory(1).obj.Definition == GlobalDefinitions.bullet_12mm)
|
|
|
|
|
assert(reply3.inventory(2).obj.Definition == GlobalDefinitions.bullet_12mm)
|
|
|
|
|
assert(reply3.inventory(3).obj.Definition == GlobalDefinitions.bullet_12mm)
|
|
|
|
|
assert(reply3.inventory(4).obj.Definition == GlobalDefinitions.bullet_12mm)
|
|
|
|
|
assert(reply3.inventory(5).obj.Definition == GlobalDefinitions.bullet_12mm)
|
2017-11-09 02:00:46 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-15 01:25:44 +00:00
|
|
|
class VehicleTerminalControl2Test extends ActorTest {
|
2017-11-09 02:00:46 +00:00
|
|
|
"TerminalControl can be used to warn about not buy a vehicle ('harasser')" in {
|
2018-01-26 20:32:08 +00:00
|
|
|
val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR)
|
2017-11-09 02:00:46 +00:00
|
|
|
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "harasser", 0, PlanetSideGUID(0))
|
|
|
|
|
|
|
|
|
|
terminal.Actor ! Terminal.Request(player, msg)
|
|
|
|
|
val reply = receiveOne(Duration.create(500, "ms"))
|
|
|
|
|
assert(reply.isInstanceOf[Terminal.TerminalMessage])
|
|
|
|
|
val reply2 = reply.asInstanceOf[Terminal.TerminalMessage]
|
|
|
|
|
assert(reply2.player == player)
|
|
|
|
|
assert(reply2.msg == msg)
|
|
|
|
|
assert(reply2.response == Terminal.NoDeal())
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-01-26 20:32:08 +00:00
|
|
|
|
|
|
|
|
object TerminalControlTest {
|
|
|
|
|
def SetUpAgents(tdef : TerminalDefinition, faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, Terminal) = {
|
|
|
|
|
val terminal = Terminal(tdef)
|
|
|
|
|
terminal.Actor = system.actorOf(Props(classOf[TerminalControl], terminal), "test-term")
|
2018-03-24 04:28:02 +00:00
|
|
|
terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building)
|
2018-01-26 20:32:08 +00:00
|
|
|
terminal.Owner.Faction = faction
|
2018-06-09 01:07:47 +00:00
|
|
|
(Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal)
|
2018-01-26 20:32:08 +00:00
|
|
|
}
|
|
|
|
|
}
|