diff --git a/common/src/main/scala/net/psforever/objects/Avatar.scala b/common/src/main/scala/net/psforever/objects/Avatar.scala index 05caf2be..3166d5b6 100644 --- a/common/src/main/scala/net/psforever/objects/Avatar.scala +++ b/common/src/main/scala/net/psforever/objects/Avatar.scala @@ -4,12 +4,12 @@ package net.psforever.objects import net.psforever.objects.definition.{AvatarDefinition, ImplantDefinition} import net.psforever.objects.equipment.EquipmentSize import net.psforever.objects.loadouts.Loadout -import net.psforever.types.{CertificationType, CharacterGender, ImplantType, PlanetSideEmpire} +import net.psforever.types._ import scala.annotation.tailrec import scala.collection.mutable -class Avatar(val name : String, val faction : PlanetSideEmpire.Value, val sex : CharacterGender.Value, val head : Int, val voice : Int) { +class Avatar(val name : String, val faction : PlanetSideEmpire.Value, val sex : CharacterGender.Value, val head : Int, val voice : CharacterVoice.Value) { /** Battle Experience Points */ private var bep : Long = 0 /** Command Experience Points */ @@ -212,7 +212,7 @@ class Avatar(val name : String, val faction : PlanetSideEmpire.Value, val sex : object Avatar { final private val definition : AvatarDefinition = new AvatarDefinition(121) - def apply(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : Int) : Avatar = { + def apply(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : CharacterVoice.Value) : Avatar = { new Avatar(name, faction, sex, head, voice) } diff --git a/common/src/main/scala/net/psforever/objects/Player.scala b/common/src/main/scala/net/psforever/objects/Player.scala index 4300ac40..71398c5e 100644 --- a/common/src/main/scala/net/psforever/objects/Player.scala +++ b/common/src/main/scala/net/psforever/objects/Player.scala @@ -58,7 +58,7 @@ class Player(private val core : Avatar) extends PlanetSideGameObject with Factio def Head : Int = core.head - def Voice : Int = core.voice + def Voice : CharacterVoice.Value = core.voice def isAlive : Boolean = alive diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala index 7840e027..25870e88 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala @@ -4,7 +4,7 @@ package net.psforever.objects.definition.converter import net.psforever.objects.{EquipmentSlot, Player} import net.psforever.objects.equipment.Equipment import net.psforever.packet.game.objectcreate._ -import net.psforever.types.{GrenadeState, ImplantType} +import net.psforever.types.{CharacterVoice, GrenadeState, ImplantType} import scala.annotation.tailrec import scala.util.{Failure, Success, Try} @@ -45,7 +45,7 @@ class CharacterSelectConverter extends AvatarConverter { */ private def MakeAppearanceData(obj : Player) : (Int)=>CharacterAppearanceData = { CharacterAppearanceData( - BasicCharacterData(obj.Name, obj.Faction, obj.Sex, obj.Head, 1), + BasicCharacterData(obj.Name, obj.Faction, obj.Sex, obj.Head, CharacterVoice.Mute), 0, false, false, diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala index b32a0a82..98a4bb38 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala @@ -4,7 +4,7 @@ package net.psforever.objects.definition.converter import net.psforever.objects.{EquipmentSlot, Player} import net.psforever.objects.equipment.Equipment import net.psforever.packet.game.objectcreate._ -import net.psforever.types.{CharacterGender, GrenadeState, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, GrenadeState, Vector3} import scala.annotation.tailrec import scala.util.{Failure, Success, Try} @@ -36,7 +36,7 @@ class CorpseConverter extends AvatarConverter { */ private def MakeAppearanceData(obj : Player) : (Int)=>CharacterAppearanceData = { CharacterAppearanceData( - BasicCharacterData(obj.Name, obj.Faction, CharacterGender.Male, 0, 0), + BasicCharacterData(obj.Name, obj.Faction, CharacterGender.Male, 0, CharacterVoice.Mute), 0, false, false, diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala index eea2f688..0dd65630 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala @@ -35,14 +35,14 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { false, obj.Cloaked, SpecificFormatData(obj), - Some(InventoryData((MakeSeats(obj) ++ MakeUtilities(obj) ++ MakeMountings(obj)).sortBy(_.parentSlot))) + Some(InventoryData(MakeDriverSeat(obj) ++ MakeUtilities(obj) ++ MakeMountings(obj))) )(SpecificFormatModifier) ) } - private def MakeSeats(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { - val offset : Long = VehicleData.InitialStreamLengthToSeatEntries(true, SpecificFormatModifier) - obj.Seats(0).Occupant match { //TODO just the driver for now to avoid issues with seat permissions + private def MakeDriverSeat(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { + val offset : Long = VehicleData.InitialStreamLengthToSeatEntries(obj.Velocity.nonEmpty, SpecificFormatModifier) + obj.Seats(0).Occupant match { case Some(player) => val mountedPlayer = VehicleData.PlayerData( AvatarConverter.MakeAppearanceData(player), @@ -51,14 +51,32 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { AvatarConverter.GetDrawnSlot(player), offset ) - val entry = InventoryItemData(ObjectClass.avatar, player.GUID, 0, mountedPlayer) - //println(s"seat 0 offset: $offset, size: ${entry.bitsize}, pad: ${mountedPlayer.basic_appearance.NamePadding}") - //offset += entry.bitsize - List(entry) + List(InventoryItemData(ObjectClass.avatar, player.GUID, 0, mountedPlayer)) case None => Nil } } + + //TODO do not use for now; causes vehicle access permission issues; may not mesh with workflows; player GUID requirements +// private def MakeSeats(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { +// var offset : Long = VehicleData.InitialStreamLengthToSeatEntries(obj.Velocity.nonEmpty, SpecificFormatModifier) +// obj.Seats +// .filter({ case (_, seat) => seat.isOccupied }) +// .map({case (index, seat) => +// val player = seat.Occupant.get +// val mountedPlayer = VehicleData.PlayerData( +// AvatarConverter.MakeAppearanceData(player), +// AvatarConverter.MakeCharacterData(player), +// AvatarConverter.MakeInventoryData(player), +// AvatarConverter.GetDrawnSlot(player), +// offset +// ) +// val entry = InventoryItemData(ObjectClass.avatar, player.GUID, index, mountedPlayer) +// //println(s"seat 0 offset: $offset, size: ${entry.bitsize}, pad: ${mountedPlayer.basic_appearance.NamePadding}") +// offset += entry.bitsize +// entry +// }).toList +// } private def MakeMountings(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { obj.Weapons.map({ diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala index 29724f0c..635fa074 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala @@ -2,7 +2,7 @@ package net.psforever.packet.game import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import scodec.{Attempt, Codec, Err} import scodec.codecs._ import shapeless.{::, HNil} @@ -12,7 +12,7 @@ import shapeless.{::, HNil} */ final case class CharacterCreateRequestMessage(name : String, headId : Int, - voiceId : Int, + voiceId : CharacterVoice.Value, gender : CharacterGender.Value, empire : PlanetSideEmpire.Value) extends PlanetSideGamePacket { @@ -22,10 +22,12 @@ final case class CharacterCreateRequestMessage(name : String, } object CharacterCreateRequestMessage extends Marshallable[CharacterCreateRequestMessage] { + private val character_voice_codec = PacketHelpers.createEnumerationCodec(CharacterVoice, uint8) + implicit val codec : Codec[CharacterCreateRequestMessage] = ( ("name" | PacketHelpers.encodedWideString) :: ("headId" | uint8L) :: - ("voiceId" | uint8L) :: + ("voiceId" | character_voice_codec) :: ("gender" | CharacterGender.codec) :: ("empire" | PlanetSideEmpire.codec) ).exmap[CharacterCreateRequestMessage] ( diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala new file mode 100644 index 00000000..39cacc32 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala @@ -0,0 +1,25 @@ +// Copyright (c) 2017 PSForever +package net.psforever.packet.game.objectcreate + +import net.psforever.types._ + +/** + * A part of a representation of the avatar portion of `ObjectCreateMessage` packet data.
+ *
+ * This partition of the data stream contains information used to represent how the player's avatar is presented. + * This appearance coincides with the data available from the `CharacterCreateRequestMessage` packet. + * @see `PlanetSideEmpire`
+ * `CharacterGender` + * @param name the unique name of the avatar; + * minimum of two characters + * @param faction the empire to which the avatar belongs + * @param sex whether the avatar is `Male` or `Female` + * @param head the avatar's face and hair; + * by row and column on the character creation screen, the high nibble is the row and the low nibble is the column + * @param voice the avatar's voice selection + */ +final case class BasicCharacterData(name : String, + faction : PlanetSideEmpire.Value, + sex : CharacterGender.Value, + head : Int, + voice : CharacterVoice.Value) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala index d6221fcb..fb6eee6e 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala @@ -7,50 +7,6 @@ import scodec.{Attempt, Codec, Err} import scodec.codecs._ import shapeless.{::, HNil} -/** - * The voice used by the player character, from a selection of ten divided between five male voices and five female voices. - * The first entry (0) is no voice. - * While it is technically not valid to have a wrong-gendered voice, - * unlisted sixth and seventh entries would give a male character a female voice; - * a female character with either entry would become mute. - * @see `CharacterGender` - */ -object CharacterVoice extends Enumeration { - type Type = Value - - val - Mute, - Voice1, //grizzled, tough - Voice2, //greenhorn, clueless - Voice3, //roughneck, gruff - Voice4, //stalwart, smooth - Voice5 //daredevil, calculating - = Value - - implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) -} - -/** - * A part of a representation of the avatar portion of `ObjectCreateMessage` packet data.
- *
- * This partition of the data stream contains information used to represent how the player's avatar is presented. - * This appearance coincides with the data available from the `CharacterCreateRequestMessage` packet. - * @see `PlanetSideEmpire`
- * `CharacterGender` - * @param name the unique name of the avatar; - * minimum of two characters - * @param faction the empire to which the avatar belongs - * @param sex whether the avatar is `Male` or `Female` - * @param head the avatar's face and hair; - * by row and column on the character creation screen, the high nibble is the row and the low nibble is the column - * @param voice the avatar's voice selection - */ -final case class BasicCharacterData(name : String, - faction : PlanetSideEmpire.Value, - sex : CharacterGender.Value, - head : Int, - voice : Int) - /** * A part of a representation of the avatar portion of `ObjectCreateDetailedMessage` packet data.
*
@@ -77,6 +33,7 @@ final case class BasicCharacterData(name : String, * `ExoSuitType`
* `GrenadeState`
* `RibbonBars` + * @see `http://www.planetside-universe.com/p-outfit-decals-31.htm` * @param app the player's cardinal appearance settings * @param voice2 na; * affects the frequency by which the character's voice is heard (somehow); @@ -125,9 +82,9 @@ final case class CharacterAppearanceData(app : BasicCharacterData, //factor guard bool values into the base size, not its corresponding optional field val nameStringSize : Long = StreamBitSize.stringBitSize(app.name, 16) + name_padding val outfitStringSize : Long = StreamBitSize.stringBitSize(outfit_name, 16) + - (if(outfit_name.nonEmpty) { CharacterAppearanceData.outfitNamePadding } else { 0L }) //even if the outfit_name is blank, string always padded + CharacterAppearanceData.outfitNamePadding //even if the outfit_name is blank, string is always padded val altModelSize = CharacterAppearanceData.altModelBit(this).getOrElse(0) - 335L + nameStringSize + outfitStringSize + altModelSize + 335L + nameStringSize + outfitStringSize + altModelSize //base value includes the ribbons } /** @@ -182,7 +139,7 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { ignore(2) :: //unknown ("sex" | CharacterGender.codec) :: ("head" | uint8L) :: - ("voice" | uint(3)) :: + ("voice" | CharacterVoice.codec) :: ("voice2" | uint2L) :: ignore(78) :: //unknown uint16L :: //usually either 0 or 65535 diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala index 2d13c1e3..9cfa09d8 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala @@ -5,7 +5,7 @@ import net.psforever.packet.game.PlanetSideGUID import net.psforever.packet.{Marshallable, PacketHelpers} import scodec.Attempt.{Failure, Successful} import scodec.{Attempt, Codec, Err} -import shapeless.HNil //note: do not import shapeless.:: here; it messes up List's :: function +import shapeless.HNil //note: do not import shapeless.:: here; it messes up List's :: functionality import scodec.codecs._ import net.psforever.types.{DriveState, PlanetSideEmpire} diff --git a/common/src/main/scala/net/psforever/types/CharacterVoice.scala b/common/src/main/scala/net/psforever/types/CharacterVoice.scala new file mode 100644 index 00000000..556b712f --- /dev/null +++ b/common/src/main/scala/net/psforever/types/CharacterVoice.scala @@ -0,0 +1,28 @@ +// Copyright (c) 2017 PSForever +package net.psforever.types + +import net.psforever.packet.PacketHelpers +import scodec.codecs.uint + +/** + * The voice used by the player character, from a selection of ten divided between five male voices and five female voices. + * The first entry (0) is no voice. + * While it is technically not valid to have a wrong-gendered voice, + * unlisted sixth and seventh entries would give a male character a female voice; + * a female character with either entry would become mute, however. + * @see `CharacterGender` + */ +object CharacterVoice extends Enumeration { + type Type = Value + + val + Mute, + Voice1, //grizzled, tough + Voice2, //greenhorn, clueless + Voice3, //roughneck, gruff + Voice4, //stalwart, smooth + Voice5 //daredevil, calculating + = Value + + implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) +} diff --git a/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala b/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala index 416ac237..f1840669 100644 --- a/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala +++ b/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala @@ -4,7 +4,7 @@ package game import org.specs2.mutable._ import net.psforever.packet._ import net.psforever.packet.game._ -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import scodec.bits._ class CharacterCreateRequestMessageTest extends Specification { @@ -15,7 +15,7 @@ class CharacterCreateRequestMessageTest extends Specification { case CharacterCreateRequestMessage(name, head, voice, gender, faction) => name mustEqual "TestChar" head mustEqual 50 - voice mustEqual 5 + voice mustEqual CharacterVoice.Voice5 gender mustEqual CharacterGender.Female faction mustEqual PlanetSideEmpire.NC case _ => @@ -24,7 +24,7 @@ class CharacterCreateRequestMessageTest extends Specification { } "encode" in { - val msg = CharacterCreateRequestMessage("TestChar", 50, 5, CharacterGender.Female, PlanetSideEmpire.NC) + val msg = CharacterCreateRequestMessage("TestChar", 50, CharacterVoice.Voice5, CharacterGender.Female, PlanetSideEmpire.NC) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/objectcreate/CharacterDataTest.scala b/common/src/test/scala/game/objectcreate/CharacterDataTest.scala index fda6afeb..6115f231 100644 --- a/common/src/test/scala/game/objectcreate/CharacterDataTest.scala +++ b/common/src/test/scala/game/objectcreate/CharacterDataTest.scala @@ -37,7 +37,7 @@ class CharacterDataTest extends Specification { basic.app.faction mustEqual PlanetSideEmpire.TR basic.app.sex mustEqual CharacterGender.Male basic.app.head mustEqual 5 - basic.app.voice mustEqual 5 + basic.app.voice mustEqual CharacterVoice.Voice5 basic.voice2 mustEqual 3 basic.black_ops mustEqual false basic.jammered mustEqual false @@ -130,7 +130,7 @@ class CharacterDataTest extends Specification { basic.app.faction mustEqual PlanetSideEmpire.TR basic.app.sex mustEqual CharacterGender.Male basic.app.head mustEqual 5 - basic.app.voice mustEqual 5 + basic.app.voice mustEqual CharacterVoice.Voice5 basic.voice2 mustEqual 3 basic.black_ops mustEqual false basic.jammered mustEqual false @@ -174,7 +174,7 @@ class CharacterDataTest extends Specification { basic.app.faction mustEqual PlanetSideEmpire.VS basic.app.sex mustEqual CharacterGender.Male basic.app.head mustEqual 10 - basic.app.voice mustEqual 2 + basic.app.voice mustEqual CharacterVoice.Voice2 basic.voice2 mustEqual 0 basic.black_ops mustEqual false basic.jammered mustEqual false @@ -226,7 +226,7 @@ class CharacterDataTest extends Specification { PlanetSideEmpire.TR, CharacterGender.Male, 5, - 5 + CharacterVoice.Voice5 ), 3, false, @@ -282,7 +282,7 @@ class CharacterDataTest extends Specification { PlanetSideEmpire.TR, CharacterGender.Male, 5, - 5 + CharacterVoice.Voice5 ), 3, false, @@ -335,7 +335,7 @@ class CharacterDataTest extends Specification { PlanetSideEmpire.VS, CharacterGender.Male, 10, - 2 + CharacterVoice.Voice2 ), 0, false, diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala index 9f573970..b571749b 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala @@ -38,7 +38,7 @@ class DetailedCharacterDataTest extends Specification { basic.app.faction mustEqual PlanetSideEmpire.VS basic.app.sex mustEqual CharacterGender.Female basic.app.head mustEqual 41 - basic.app.voice mustEqual 1 //female 1 + basic.app.voice mustEqual CharacterVoice.Voice1 basic.voice2 mustEqual 3 basic.black_ops mustEqual false basic.jammered mustEqual false @@ -174,7 +174,7 @@ class DetailedCharacterDataTest extends Specification { basic.app.faction mustEqual PlanetSideEmpire.VS basic.app.sex mustEqual CharacterGender.Female basic.app.head mustEqual 41 - basic.app.voice mustEqual 1 //female 1 + basic.app.voice mustEqual CharacterVoice.Voice1 basic.voice2 mustEqual 3 basic.black_ops mustEqual false basic.jammered mustEqual false @@ -380,7 +380,7 @@ class DetailedCharacterDataTest extends Specification { PlanetSideEmpire.VS, CharacterGender.Female, 41, - 1 + CharacterVoice.Voice1 ), 3, false, @@ -451,7 +451,7 @@ class DetailedCharacterDataTest extends Specification { PlanetSideEmpire.VS, CharacterGender.Female, 41, - 1 + CharacterVoice.Voice1 ), 3, false, @@ -519,7 +519,7 @@ class DetailedCharacterDataTest extends Specification { None ) val app : (Int)=>CharacterAppearanceData = CharacterAppearanceData( - BasicCharacterData("KiCkJr", PlanetSideEmpire.NC, CharacterGender.Male, 24, 4), + BasicCharacterData("KiCkJr", PlanetSideEmpire.NC, CharacterGender.Male, 24, CharacterVoice.Voice4), 3, false, false, ExoSuitType.Agile, diff --git a/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala index 393bf678..ca939ebe 100644 --- a/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala @@ -56,7 +56,7 @@ class MountedVehiclesTest extends Specification { app.app.faction mustEqual PlanetSideEmpire.TR app.app.sex mustEqual CharacterGender.Male app.app.head mustEqual 5 - app.app.voice mustEqual 5 + app.app.voice mustEqual CharacterVoice.Voice5 app.voice2 mustEqual 3 app.black_ops mustEqual false app.lfs mustEqual false @@ -106,7 +106,7 @@ class MountedVehiclesTest extends Specification { "encode (Scrawny Ronnie's mosquito)" in { val app : (Int)=>CharacterAppearanceData = CharacterAppearanceData( - BasicCharacterData("ScrawnyRonnie", PlanetSideEmpire.TR, CharacterGender.Male, 5, 5), + BasicCharacterData("ScrawnyRonnie", PlanetSideEmpire.TR, CharacterGender.Male, 5, CharacterVoice.Voice5), 3, false, false, ExoSuitType.Agile, diff --git a/common/src/test/scala/objects/AutoDriveControlsTest.scala b/common/src/test/scala/objects/AutoDriveControlsTest.scala index e26c7d9b..e16b701e 100644 --- a/common/src/test/scala/objects/AutoDriveControlsTest.scala +++ b/common/src/test/scala/objects/AutoDriveControlsTest.scala @@ -7,7 +7,7 @@ import net.psforever.objects.serverobject.pad.{VehicleSpawnControl, VehicleSpawn import net.psforever.objects.{Avatar, GlobalDefinitions, Player, Vehicle} import net.psforever.objects.serverobject.pad.process.{AutoDriveControls, VehicleSpawnControlGuided} import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import org.specs2.mutable.Specification import scala.concurrent.duration._ @@ -389,7 +389,7 @@ class GuidedControlTest1 extends ActorTest { "unguided" in { val vehicle = Vehicle(GlobalDefinitions.mediumtransport) vehicle.GUID = PlanetSideGUID(1) - val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0,0)) + val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) driver.VehicleSeated = vehicle.GUID val sendTo = TestProbe() val order = VehicleSpawnControl.Order(driver, vehicle, sendTo.ref) @@ -411,7 +411,7 @@ class GuidedControlTest2 extends ActorTest { val vehicle = Vehicle(GlobalDefinitions.mediumtransport) vehicle.GUID = PlanetSideGUID(1) vehicle.Velocity = Vector3(1,1,1) - val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0,0)) + val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) driver.VehicleSeated = vehicle.GUID val sendTo = TestProbe() val order = VehicleSpawnControl.Order(driver, vehicle, sendTo.ref) @@ -436,7 +436,7 @@ class GuidedControlTest3 extends ActorTest { val vehicle = Vehicle(GlobalDefinitions.mediumtransport) vehicle.GUID = PlanetSideGUID(1) vehicle.Velocity = Vector3(1,1,1) - val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0,0)) + val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) driver.VehicleSeated = vehicle.GUID val sendTo = TestProbe() val order = VehicleSpawnControl.Order(driver, vehicle, sendTo.ref) @@ -457,7 +457,7 @@ class GuidedControlTest3 extends ActorTest { assert(msg2.isInstanceOf[VehicleSpawnControlGuided.GuidedControl]) assert(msg2.asInstanceOf[VehicleSpawnControlGuided.GuidedControl].command == AutoDriveControls.State.Wait) sendTo.expectNoMsg(1000 milliseconds) - val msg3 = sendTo.receiveOne(100 milliseconds) + val msg3 = sendTo.receiveOne(300 milliseconds) assert(msg3.isInstanceOf[VehicleSpawnControlGuided.GuidedControl]) assert(msg3.asInstanceOf[VehicleSpawnControlGuided.GuidedControl].command == AutoDriveControls.State.Drive) val msg4 = sendTo.receiveOne(200 milliseconds) @@ -474,7 +474,7 @@ class GuidedControlTest4 extends ActorTest { val vehicle = Vehicle(GlobalDefinitions.mediumtransport) vehicle.GUID = PlanetSideGUID(1) vehicle.Velocity = Vector3(1,1,1) - val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0,0)) + val driver = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) driver.VehicleSeated = vehicle.GUID val sendTo = TestProbe() val order = VehicleSpawnControl.Order(driver, vehicle, sendTo.ref) diff --git a/common/src/test/scala/objects/AvatarTest.scala b/common/src/test/scala/objects/AvatarTest.scala index 6c331798..c2c482c0 100644 --- a/common/src/test/scala/objects/AvatarTest.scala +++ b/common/src/test/scala/objects/AvatarTest.scala @@ -5,12 +5,12 @@ import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects._ import net.psforever.objects.loadouts._ import net.psforever.objects.definition.ImplantDefinition -import net.psforever.types.{CharacterGender, ImplantType, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, ImplantType, PlanetSideEmpire} import org.specs2.mutable._ class AvatarTest extends Specification { def CreatePlayer() : (Player, Avatar) = { - val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, 1) + val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) val player = Player(avatar) player.Slot(0).Equipment = Tool(beamer) @@ -26,12 +26,12 @@ class AvatarTest extends Specification { } "construct" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.name mustEqual "Chord" av.faction mustEqual PlanetSideEmpire.TR av.sex mustEqual CharacterGender.Male av.head mustEqual 0 - av.voice mustEqual 5 + av.voice mustEqual CharacterVoice.Voice5 av.BEP mustEqual 0 av.CEP mustEqual 0 av.Certifications mustEqual Set.empty @@ -39,7 +39,7 @@ class AvatarTest extends Specification { } "can maintain cumulative battle experience point values" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.BEP mustEqual 0 av.BEP = 100 av.BEP mustEqual 100 @@ -48,14 +48,14 @@ class AvatarTest extends Specification { } "can maintain battle experience point values up to a maximum (Long.MaxValue)" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.BEP mustEqual 0 av.BEP = 4294967295L av.BEP mustEqual 4294967295L } "can not maintain battle experience point values below zero" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.BEP mustEqual 0 av.BEP = -1 av.BEP mustEqual 0 @@ -66,7 +66,7 @@ class AvatarTest extends Specification { } "can maintain cumulative command experience point values" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.CEP mustEqual 0 av.CEP = 100 av.CEP mustEqual 100 @@ -75,14 +75,14 @@ class AvatarTest extends Specification { } "can maintain command experience point values up to a maximum (Long.MaxValue)" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.CEP mustEqual 0 av.CEP = 4294967295L av.CEP mustEqual 4294967295L } "can not maintain command experience point values below zero" in { - val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val av = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) av.CEP mustEqual 0 av.CEP = -1 av.CEP mustEqual 0 @@ -93,28 +93,28 @@ class AvatarTest extends Specification { } "can tell the difference between avatars" in { - (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual true + (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual true - (Avatar("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual false + (Avatar("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual false - (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5)) mustEqual false + (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual false - (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Female, 0, 5)) mustEqual false + (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Female, 0, CharacterVoice.Voice5)) mustEqual false - (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 1, 5)) mustEqual false + (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 1, CharacterVoice.Voice5)) mustEqual false - (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 6)) mustEqual false + (Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice4)) mustEqual false } //refer to ImplantTest.scala for more tests "maximum of three implant slots" in { - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants.length mustEqual 3 obj.Implants(0).Unlocked mustEqual false obj.Implants(0).Initialized mustEqual false @@ -140,7 +140,7 @@ class AvatarTest extends Specification { "can install an implant" in { val testplant : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.InstallImplant(testplant) mustEqual Some(0) obj.Implants.find({p => p.Implant == ImplantType(1)}) match { //find the installed implant @@ -155,7 +155,7 @@ class AvatarTest extends Specification { "can install implants in sequential slots" in { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(2) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -166,7 +166,7 @@ class AvatarTest extends Specification { "can not install the same type of implant twice" in { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -178,7 +178,7 @@ class AvatarTest extends Specification { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(2) val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -192,7 +192,7 @@ class AvatarTest extends Specification { val testplant2 : ImplantDefinition = ImplantDefinition(2) val testplant3 : ImplantDefinition = ImplantDefinition(3) val testplant4 : ImplantDefinition = ImplantDefinition(4) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -205,7 +205,7 @@ class AvatarTest extends Specification { "can uninstall an implant" in { val testplant : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.InstallImplant(testplant) mustEqual Some(0) obj.Implants(0).Installed mustEqual Some(testplant) @@ -218,7 +218,7 @@ class AvatarTest extends Specification { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(2) val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -239,7 +239,7 @@ class AvatarTest extends Specification { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(2) val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -261,7 +261,7 @@ class AvatarTest extends Specification { "can reset implants to uninitialized state" in { val testplant1 : ImplantDefinition = ImplantDefinition(1) val testplant2 : ImplantDefinition = ImplantDefinition(2) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.InstallImplant(testplant1) mustEqual Some(0) @@ -393,6 +393,6 @@ class AvatarTest extends Specification { } "toString" in { - Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5).toString mustEqual "TR Chord" + Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5).toString mustEqual "TR Chord" } } diff --git a/common/src/test/scala/objects/ConverterTest.scala b/common/src/test/scala/objects/ConverterTest.scala index aad737dd..b863499a 100644 --- a/common/src/test/scala/objects/ConverterTest.scala +++ b/common/src/test/scala/objects/ConverterTest.scala @@ -11,7 +11,7 @@ import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.serverobject.tube.SpawnTube import net.psforever.packet.game.PlanetSideGUID import net.psforever.packet.game.objectcreate._ -import net.psforever.types.{CharacterGender, PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import org.specs2.mutable.Specification import scala.util.{Failure, Success} @@ -154,7 +154,7 @@ class ConverterTest extends Specification { } "Player" should { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj : Player = { /* Create an AmmoBoxDefinition with which to build two AmmoBoxes diff --git a/common/src/test/scala/objects/DoorTest.scala b/common/src/test/scala/objects/DoorTest.scala index 73e55c00..76184282 100644 --- a/common/src/test/scala/objects/DoorTest.scala +++ b/common/src/test/scala/objects/DoorTest.scala @@ -7,13 +7,13 @@ import net.psforever.objects.serverobject.doors.{Door, DoorControl} import net.psforever.objects.serverobject.structures.{Building, StructureType} import net.psforever.objects.zones.Zone import net.psforever.packet.game.{PlanetSideGUID, UseItemMessage} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import org.specs2.mutable.Specification import scala.concurrent.duration.Duration class DoorTest extends Specification { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) "Door" should { "construct" in { @@ -123,6 +123,6 @@ object DoorControlTest { door.Actor = system.actorOf(Props(classOf[DoorControl], door), "door") door.Owner = new Building(0, Zone.Nowhere, StructureType.Building) door.Owner.Faction = faction - (Player(Avatar("test", faction, CharacterGender.Male, 0, 0)), door) + (Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), door) } } diff --git a/common/src/test/scala/objects/IFFLockTest.scala b/common/src/test/scala/objects/IFFLockTest.scala index 5cd66613..9ac7044d 100644 --- a/common/src/test/scala/objects/IFFLockTest.scala +++ b/common/src/test/scala/objects/IFFLockTest.scala @@ -8,7 +8,7 @@ import net.psforever.objects.serverobject.locks.{IFFLock, IFFLockControl} import net.psforever.objects.serverobject.structures.{Building, StructureType} import net.psforever.objects.zones.Zone import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import org.specs2.mutable.Specification class IFFLockTest extends Specification { @@ -69,6 +69,6 @@ object IFFLockControlTest { lock.Actor = system.actorOf(Props(classOf[IFFLockControl], lock), "lock-control") lock.Owner = new Building(0, Zone.Nowhere, StructureType.Building) lock.Owner.Faction = faction - (Player(Avatar("test", faction, CharacterGender.Male, 0, 0)), lock) + (Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), lock) } } diff --git a/common/src/test/scala/objects/LoadoutTest.scala b/common/src/test/scala/objects/LoadoutTest.scala index 5ddb448e..a5b98381 100644 --- a/common/src/test/scala/objects/LoadoutTest.scala +++ b/common/src/test/scala/objects/LoadoutTest.scala @@ -3,12 +3,12 @@ package objects import net.psforever.objects._ import net.psforever.objects.loadouts._ -import net.psforever.types.{CharacterGender, ExoSuitType, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, ExoSuitType, PlanetSideEmpire} import net.psforever.objects.GlobalDefinitions._ import org.specs2.mutable._ class LoadoutTest extends Specification { - val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, 1) + val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) def CreatePlayer() : Player = { new Player(avatar) { diff --git a/common/src/test/scala/objects/MountableTest.scala b/common/src/test/scala/objects/MountableTest.scala index 56fe1f83..841069d6 100644 --- a/common/src/test/scala/objects/MountableTest.scala +++ b/common/src/test/scala/objects/MountableTest.scala @@ -8,7 +8,7 @@ import net.psforever.objects.serverobject.mount.{Mountable, MountableBehavior} import net.psforever.objects.serverobject.PlanetSideServerObject import net.psforever.objects.vehicles.Seat import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import scala.concurrent.duration.Duration @@ -25,7 +25,7 @@ class MountableControl1Test extends ActorTest() { class MountableControl2Test extends ActorTest() { "MountableControl" should { "let a player mount" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = new MountableTest.MountableTestObject obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") val msg = Mountable.TryMount(player, 0) @@ -46,8 +46,8 @@ class MountableControl2Test extends ActorTest() { class MountableControl3Test extends ActorTest() { "MountableControl" should { "block a player from mounting" in { - val player1 = Player(Avatar("test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) - val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player1 = Player(Avatar("test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = new MountableTest.MountableTestObject obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") obj.Actor ! Mountable.TryMount(player1, 0) diff --git a/common/src/test/scala/objects/PlayerTest.scala b/common/src/test/scala/objects/PlayerTest.scala index 416eba4d..4e4d367a 100644 --- a/common/src/test/scala/objects/PlayerTest.scala +++ b/common/src/test/scala/objects/PlayerTest.scala @@ -6,19 +6,19 @@ import net.psforever.objects._ import net.psforever.objects.definition.{ImplantDefinition, SimpleItemDefinition} import net.psforever.objects.equipment.EquipmentSize import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, ExoSuitType, ImplantType, PlanetSideEmpire} +import net.psforever.types._ import org.specs2.mutable._ import scala.util.Success class PlayerTest extends Specification { - def TestPlayer(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : Int) : Player = { + def TestPlayer(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : CharacterVoice.Value) : Player = { new Player(Avatar(name, faction, sex, head, voice)) } "Player" should { "construct" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.isAlive mustEqual false obj.FacingYawUpper mustEqual 0 obj.Jumping mustEqual false @@ -36,27 +36,27 @@ class PlayerTest extends Specification { } "different players" in { - (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual true + (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual true - (TestPlayer("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual false + (TestPlayer("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual false - (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5)) mustEqual false + (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5)) mustEqual false - (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Female, 0, 5)) mustEqual false + (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Female, 0, CharacterVoice.Voice5)) mustEqual false - (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 1, 5)) mustEqual false + (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 1, CharacterVoice.Voice5)) mustEqual false - (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) == - TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 6)) mustEqual false + (TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) == + TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice4)) mustEqual false } "(re)spawn" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.isAlive mustEqual false obj.Health mustEqual 0 obj.Stamina mustEqual 0 @@ -72,7 +72,7 @@ class PlayerTest extends Specification { } "will not (re)spawn if not dead" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Spawn obj.Health mustEqual 100 obj.Armor mustEqual 50 @@ -88,7 +88,7 @@ class PlayerTest extends Specification { } "can die" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Spawn obj.Armor = 35 //50 -> 35 obj.isAlive mustEqual true @@ -103,7 +103,7 @@ class PlayerTest extends Specification { } "can not become a backpack if alive" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Spawn obj.isAlive mustEqual true obj.isBackpack mustEqual false @@ -113,7 +113,7 @@ class PlayerTest extends Specification { } "can become a backpack" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.isAlive mustEqual false obj.isBackpack mustEqual false obj.Release @@ -122,7 +122,7 @@ class PlayerTest extends Specification { } "set new maximum values (health, stamina)" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.MaxHealth mustEqual 100 obj.MaxStamina mustEqual 100 obj.MaxHealth = 123 @@ -133,7 +133,7 @@ class PlayerTest extends Specification { } "set new values (health, armor, stamina) but only when alive" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Health = 23 obj.Armor = 34 obj.Stamina = 45 @@ -154,7 +154,7 @@ class PlayerTest extends Specification { } "has visible slots" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.VisibleSlots mustEqual Set(0,2,4) //Standard obj.ExoSuit = ExoSuitType.Agile obj.VisibleSlots mustEqual Set(0,1,2,4) @@ -167,7 +167,7 @@ class PlayerTest extends Specification { } "init (Standard Exo-Suit)" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.ExoSuit mustEqual ExoSuitType.Standard obj.Slot(0).Size mustEqual EquipmentSize.Pistol obj.Slot(1).Size mustEqual EquipmentSize.Blocked @@ -181,7 +181,7 @@ class PlayerTest extends Specification { "draw equipped holsters only" in { val wep = SimpleItem(SimpleItemDefinition(149)) - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(1).Size = EquipmentSize.Pistol obj.Slot(1).Equipment = wep obj.DrawnSlot mustEqual Player.HandsDownSlot @@ -194,7 +194,7 @@ class PlayerTest extends Specification { "remember the last drawn holster" in { val wep1 = SimpleItem(SimpleItemDefinition(149)) val wep2 = SimpleItem(SimpleItemDefinition(149)) - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(0).Size = EquipmentSize.Pistol obj.Slot(0).Equipment = wep1 obj.Slot(1).Size = EquipmentSize.Pistol @@ -233,7 +233,7 @@ class PlayerTest extends Specification { "hold something in their free hand" in { val wep = SimpleItem(SimpleItemDefinition(149)) - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(Player.FreeHandSlot).Equipment = wep obj.Slot(Player.FreeHandSlot).Equipment.get.Definition.ObjectId mustEqual 149 @@ -241,14 +241,14 @@ class PlayerTest extends Specification { "provide an invalid hand that can not hold anything" in { val wep = SimpleItem(SimpleItemDefinition(149)) - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(-1).Equipment = wep obj.Slot(-1).Equipment mustEqual None } "search for the smallest available slot in which to store equipment" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Inventory.Resize(3,3) //fits one item obj.Fit(Tool(GlobalDefinitions.beamer)) mustEqual Some(0) @@ -266,7 +266,7 @@ class PlayerTest extends Specification { } "can use their free hand to hold things" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val ammo = AmmoBox(GlobalDefinitions.bullet_9mm) obj.FreeHand.Equipment mustEqual None @@ -275,12 +275,12 @@ class PlayerTest extends Specification { } "can access the player's locker-space" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(5).Equipment.get.isInstanceOf[LockerContainer] mustEqual true } "can find equipment" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(0).Equipment = { val item = Tool(beamer) item.GUID = PlanetSideGUID(1) @@ -316,7 +316,7 @@ class PlayerTest extends Specification { } "does equipment collision checking (are we already holding something there?)" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val item1 = Tool(beamer) val item2 = Kit(medkit) val item3 = AmmoBox(GlobalDefinitions.bullet_9mm) @@ -356,7 +356,7 @@ class PlayerTest extends Specification { } "battle experience point values of the avatar" in { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) player.BEP mustEqual avatar.BEP @@ -365,7 +365,7 @@ class PlayerTest extends Specification { } "command experience point values of the avatar" in { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) player.CEP mustEqual avatar.CEP @@ -374,14 +374,14 @@ class PlayerTest extends Specification { } "can get a quick summary of implant slots (default)" in { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) player.Implants mustEqual Array.empty } "can get a quick summary of implant slots (two unlocked, one installed)" in { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) val temp = new ImplantDefinition(1) avatar.Implants(0).Unlocked = true @@ -404,7 +404,7 @@ class PlayerTest extends Specification { } "can get a quick summary of implant slots (all unlocked, first two installed)" in { - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) avatar.Implants(0).Unlocked = true avatar.InstallImplant(new ImplantDefinition(1)) @@ -435,7 +435,7 @@ class PlayerTest extends Specification { } "seat in a vehicle" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.VehicleSeated mustEqual None obj.VehicleSeated = PlanetSideGUID(65) obj.VehicleSeated mustEqual Some(PlanetSideGUID(65)) @@ -444,7 +444,7 @@ class PlayerTest extends Specification { } "own in a vehicle" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.VehicleOwned mustEqual None obj.VehicleOwned = PlanetSideGUID(65) obj.VehicleOwned mustEqual Some(PlanetSideGUID(65)) @@ -453,21 +453,21 @@ class PlayerTest extends Specification { } "remember what zone he is in" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Continent mustEqual "home2" obj.Continent = "ugd01" obj.Continent mustEqual "ugd01" } "special is typically normal and can not be changed from normal" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal } "a TR MAX can change its special to Overdrive or Anchored" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.ExoSuit = ExoSuitType.MAX obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored @@ -482,7 +482,7 @@ class PlayerTest extends Specification { } "an NC MAX can change its special to Shielded" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.ExoSuit = ExoSuitType.MAX obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded @@ -492,13 +492,13 @@ class PlayerTest extends Specification { } "one faction can not use the other's specials" in { - val objtr = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val objtr = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) objtr.ExoSuit = ExoSuitType.MAX objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal objtr.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal - val objnc = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5) + val objnc = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5) objnc.ExoSuit = ExoSuitType.MAX objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal objnc.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive @@ -508,7 +508,7 @@ class PlayerTest extends Specification { } "changing exo-suit type resets the special to Normal (and changing back does not revert it again)" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.ExoSuit = ExoSuitType.MAX obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored @@ -522,7 +522,7 @@ class PlayerTest extends Specification { } "toString" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.toString mustEqual "TR Chord 0/100 0/50" obj.GUID = PlanetSideGUID(455) diff --git a/common/src/test/scala/objects/VehicleSpawnPadTest.scala b/common/src/test/scala/objects/VehicleSpawnPadTest.scala index 8e3f240c..e2693030 100644 --- a/common/src/test/scala/objects/VehicleSpawnPadTest.scala +++ b/common/src/test/scala/objects/VehicleSpawnPadTest.scala @@ -9,7 +9,7 @@ import net.psforever.objects.serverobject.structures.StructureType import net.psforever.objects.{Avatar, GlobalDefinitions, Player, Vehicle} import net.psforever.objects.zones.Zone import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterVoice, PlanetSideEmpire, Vector3} import org.specs2.mutable.Specification import scala.concurrent.duration._ @@ -263,12 +263,12 @@ class VehicleSpawnControl5Test extends ActorTest() { val probe3Msg4 = probe3.receiveOne(3 seconds) assert(probe3Msg4.isInstanceOf[VehicleSpawnPad.DetachFromRails]) - val probe1Msg1 = probe1.receiveOne(1 seconds) - assert(probe1Msg1.isInstanceOf[VehicleSpawnPad.RevealPlayer]) + val probe3Msg5 = probe3.receiveOne(1 seconds) + assert(probe3Msg5.isInstanceOf[VehicleSpawnPad.RevealPlayer]) - val probe1Msg2 = probe1.receiveOne(12 seconds) - assert(probe1Msg2.isInstanceOf[VehicleSpawnPad.PeriodicReminder]) - assert(probe1Msg2.asInstanceOf[VehicleSpawnPad.PeriodicReminder].reason == VehicleSpawnPad.Reminders.Blocked) + val probe1Msg = probe1.receiveOne(12 seconds) + assert(probe1Msg.isInstanceOf[VehicleSpawnPad.PeriodicReminder]) + assert(probe1Msg.asInstanceOf[VehicleSpawnPad.PeriodicReminder].reason == VehicleSpawnPad.Reminders.Blocked) } } } @@ -300,8 +300,8 @@ class VehicleSpawnControl6Test extends ActorTest() { val probe3Msg4 = probe3.receiveOne(3 seconds) assert(probe3Msg4.isInstanceOf[VehicleSpawnPad.DetachFromRails]) - val probe1Msg2 = probe1.receiveOne(3 seconds) - assert(probe1Msg2.isInstanceOf[VehicleSpawnPad.RevealPlayer]) + val probe3Msg5 = probe3.receiveOne(3 seconds) + assert(probe3Msg5.isInstanceOf[VehicleSpawnPad.RevealPlayer]) val probe1Msg3 = probe1.receiveOne(12 seconds) assert(probe1Msg3.isInstanceOf[VehicleSpawnPad.PeriodicReminder]) @@ -340,7 +340,7 @@ object VehicleSpawnPadControlTest { pad.Actor = system.actorOf(Props(classOf[VehicleSpawnControl], pad), s"test-pad-${System.nanoTime()}") pad.Owner = new Building(0, zone, StructureType.Building) pad.Owner.Faction = faction - val player = Player(Avatar("test", faction, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)) player.GUID = PlanetSideGUID(10) player.Continent = zone.Id player.Spawn diff --git a/common/src/test/scala/objects/VehicleTest.scala b/common/src/test/scala/objects/VehicleTest.scala index e0495c4a..1467b4ae 100644 --- a/common/src/test/scala/objects/VehicleTest.scala +++ b/common/src/test/scala/objects/VehicleTest.scala @@ -7,7 +7,7 @@ import net.psforever.objects.definition.{SeatDefinition, VehicleDefinition} import net.psforever.objects.serverobject.mount.Mountable import net.psforever.objects.vehicles._ import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.ExoSuitType +import net.psforever.types.{CharacterVoice, ExoSuitType} import org.specs2.mutable._ import scala.concurrent.duration.Duration @@ -361,6 +361,6 @@ class VehicleControl2Test extends ActorTest { object VehicleTest { import net.psforever.objects.Avatar import net.psforever.types.{CharacterGender, PlanetSideEmpire} - val avatar1 = Avatar("test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) - val avatar2 = Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar1 = Avatar("test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) + val avatar2 = Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) } diff --git a/common/src/test/scala/objects/ZoneTest.scala b/common/src/test/scala/objects/ZoneTest.scala index 70642ee9..3804825d 100644 --- a/common/src/test/scala/objects/ZoneTest.scala +++ b/common/src/test/scala/objects/ZoneTest.scala @@ -12,7 +12,7 @@ import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.serverobject.tube.SpawnTube import net.psforever.objects._ import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType} import net.psforever.objects.zones.{Zone, ZoneActor, ZoneMap} import net.psforever.objects.Vehicle @@ -185,7 +185,7 @@ class ZoneActorTest extends ActorTest { zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-spawn") zone.Actor ! Zone.Init() expectNoMsg(Duration.create(300, "ms")) - val player = Player(Avatar("Chord", PlanetSideEmpire.NEUTRAL, CharacterGender.Male, 0, 5)) + val player = Player(Avatar("Chord", PlanetSideEmpire.NEUTRAL, CharacterGender.Male, 0, CharacterVoice.Voice5)) val bldg1 = zone.Building(1).get val bldg3 = zone.Building(3).get @@ -216,7 +216,7 @@ class ZoneActorTest extends ActorTest { zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-no-spawn") zone.Actor ! Zone.Init() expectNoMsg(Duration.create(300, "ms")) - val player = Player(Avatar("Chord", PlanetSideEmpire.NEUTRAL, CharacterGender.Male, 0, 5)) + val player = Player(Avatar("Chord", PlanetSideEmpire.NEUTRAL, CharacterGender.Male, 0, CharacterVoice.Voice5)) zone.Actor ! Zone.Lattice.RequestSpawnPoint(1, player, 7) val reply = receiveOne(Duration.create(200, "ms")) @@ -234,7 +234,7 @@ class ZonePopulationTest extends ActorTest { "ZonePopulationActor" should { "add new user to zones" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -249,7 +249,7 @@ class ZonePopulationTest extends ActorTest { "remove user from zones" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume zone.Population ! Zone.Population.Join(avatar) @@ -264,7 +264,7 @@ class ZonePopulationTest extends ActorTest { "associate user with a character" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -284,7 +284,7 @@ class ZonePopulationTest extends ActorTest { "disassociate character from a user" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -306,7 +306,7 @@ class ZonePopulationTest extends ActorTest { "user tries to Leave, but still has an associated character" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(500, "ms")) //consume @@ -330,7 +330,7 @@ class ZonePopulationTest extends ActorTest { "user tries to Spawn a character, but an associated character already exists" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player1 = Player(avatar) val player2 = Player(avatar) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" @@ -356,7 +356,7 @@ class ZonePopulationTest extends ActorTest { "user tries to Spawn a character, but did not Join first" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -374,7 +374,7 @@ class ZonePopulationTest extends ActorTest { "user tries to Release a character, but did not Spawn a character first" in { val zone = new Zone("test", new ZoneMap(""), 0) - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume zone.Population ! Zone.Population.Join(avatar) @@ -395,7 +395,7 @@ class ZonePopulationTest extends ActorTest { "user adds character to list of retired characters" in { val zone = new Zone("test", new ZoneMap(""), 0) - val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player.Release system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -409,7 +409,7 @@ class ZonePopulationTest extends ActorTest { "user removes character from the list of retired characters" in { val zone = new Zone("test", new ZoneMap(""), 0) - val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player.Release system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -425,11 +425,11 @@ class ZonePopulationTest extends ActorTest { "user removes THE CORRECT character from the list of retired characters" in { val zone = new Zone("test", new ZoneMap(""), 0) - val player1 = Player(Avatar("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player1 = Player(Avatar("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player1.Release - val player2 = Player(Avatar("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player2 = Player(Avatar("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player2.Release - val player3 = Player(Avatar("Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player3 = Player(Avatar("Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player3.Release system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), TestName) ! "!" receiveOne(Duration.create(200, "ms")) //consume @@ -451,7 +451,7 @@ class ZonePopulationTest extends ActorTest { "user tries to add character to list of retired characters, but is not in correct state" in { val zone = new Zone("test", new ZoneMap(""), 0) - val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) + val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) //player.Release !!important system.actorOf(Props(classOf[ZoneTest.ZoneInitActor], zone), "testC") ! "!" receiveOne(Duration.create(500, "ms")) //consume diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala index 0a19c67d..c18987ef 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister5Test.scala @@ -3,13 +3,13 @@ package objects.guidtask import net.psforever.objects._ import net.psforever.objects.guid.{GUIDTask, TaskResolver} -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest class GUIDTaskRegister5Test extends ActorTest() { "RegisterAvatar" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegister6Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegister6Test.scala index 091ea62f..e6806cbd 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegister6Test.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegister6Test.scala @@ -3,13 +3,13 @@ package objects.guidtask import net.psforever.objects._ import net.psforever.objects.guid.{GUIDTask, TaskResolver} -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest class GUIDTaskRegister6Test extends ActorTest() { "RegisterPlayer" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala index 15cef74e..a9bba717 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister5Test.scala @@ -3,13 +3,13 @@ package objects.guidtask import net.psforever.objects._ import net.psforever.objects.guid.{GUIDTask, TaskResolver} -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest class GUIDTaskUnregister5Test extends ActorTest() { "UnregisterAvatar" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister6Test.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister6Test.scala index 718f460f..26e8ccfb 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregister6Test.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregister6Test.scala @@ -3,13 +3,13 @@ package objects.guidtask import net.psforever.objects._ import net.psforever.objects.guid.{GUIDTask, TaskResolver} -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest class GUIDTaskUnregister6Test extends ActorTest() { "UnregisterPlayer" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) diff --git a/common/src/test/scala/objects/terminal/AirVehicleTerminalTest.scala b/common/src/test/scala/objects/terminal/AirVehicleTerminalTest.scala index b635ad5d..8ea5ae6a 100644 --- a/common/src/test/scala/objects/terminal/AirVehicleTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/AirVehicleTerminalTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class AirVehicleTerminalTest extends Specification { "Air_Vehicle_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.air_vehicle_terminal) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/CertTerminalTest.scala b/common/src/test/scala/objects/terminal/CertTerminalTest.scala index c9791c9e..67682396 100644 --- a/common/src/test/scala/objects/terminal/CertTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/CertTerminalTest.scala @@ -12,7 +12,7 @@ import org.specs2.mutable.Specification class CertTerminalTest extends Specification { "Cert_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.cert_terminal) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/DropshipVehicleTerminalTest.scala b/common/src/test/scala/objects/terminal/DropshipVehicleTerminalTest.scala index ef6c621b..3ad3df33 100644 --- a/common/src/test/scala/objects/terminal/DropshipVehicleTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/DropshipVehicleTerminalTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class DropshipVehicleTerminalTest extends Specification { "Dropship_Vehicle_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.dropship_vehicle_terminal) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/GroundVehicleTerminalTest.scala b/common/src/test/scala/objects/terminal/GroundVehicleTerminalTest.scala index ee88b602..680d4752 100644 --- a/common/src/test/scala/objects/terminal/GroundVehicleTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/GroundVehicleTerminalTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class GroundVehicleTerminalTest extends Specification { "Ground_Vehicle_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.ground_vehicle_terminal) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/ImplantTerminalInterfaceTest.scala b/common/src/test/scala/objects/terminal/ImplantTerminalInterfaceTest.scala index 272815f7..461fef8f 100644 --- a/common/src/test/scala/objects/terminal/ImplantTerminalInterfaceTest.scala +++ b/common/src/test/scala/objects/terminal/ImplantTerminalInterfaceTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class ImplantTerminalInterfaceTest extends Specification { "Implant_Terminal_Interface" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.implant_terminal_interface) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala b/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala index 91993769..6bde119a 100644 --- a/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala +++ b/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala @@ -8,7 +8,7 @@ import net.psforever.objects.serverobject.implantmech.{ImplantTerminalMech, Impl import net.psforever.objects.serverobject.structures.StructureType import net.psforever.objects.vehicles.Seat import net.psforever.objects.{Avatar, GlobalDefinitions, Player} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, Vector3} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import objects.ActorTest import org.specs2.mutable.Specification @@ -45,7 +45,7 @@ class ImplantTerminalMechTest extends Specification { } "get passenger in a seat" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) obj.PassengerInSeat(player) mustEqual None obj.Seats(0).Occupant = player @@ -90,7 +90,7 @@ class ImplantTerminalMechControl3Test extends ActorTest() { "ImplantTerminalMechControl" should { "block a player from mounting" in { val (player1, mech) = ImplantTerminalMechTest.SetUpAgents(PlanetSideEmpire.TR) - val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) mech.Actor ! Mountable.TryMount(player1, 0) receiveOne(Duration.create(100, "ms")) //consume reply @@ -164,6 +164,6 @@ object ImplantTerminalMechTest { terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = faction terminal.GUID = PlanetSideGUID(1) - (Player(Avatar("test", faction, CharacterGender.Male, 0, 0)), terminal) + (Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal) } } diff --git a/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala b/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala index fbbb4d6e..15c3e7e4 100644 --- a/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala @@ -60,7 +60,7 @@ class MatrixTerminalTest extends Specification { } "player can not buy (anything)" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.NoDeal() diff --git a/common/src/test/scala/objects/terminal/MedicalTerminalTest.scala b/common/src/test/scala/objects/terminal/MedicalTerminalTest.scala index 86b39fe3..b27de07b 100644 --- a/common/src/test/scala/objects/terminal/MedicalTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/MedicalTerminalTest.scala @@ -5,7 +5,7 @@ import akka.actor.ActorRef import net.psforever.objects.serverobject.terminals.{MedicalTerminalDefinition, ProximityTerminal, Terminal} import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class MedicalTerminalTest extends Specification { @@ -81,7 +81,7 @@ class MedicalTerminalTest extends Specification { "player can not interact with the proximity terminal normally (buy)" in { val terminal = ProximityTerminal(GlobalDefinitions.medical_terminal) - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.NoDeal() diff --git a/common/src/test/scala/objects/terminal/OrderTerminalABTest.scala b/common/src/test/scala/objects/terminal/OrderTerminalABTest.scala index ee4b4a47..fcdaa498 100644 --- a/common/src/test/scala/objects/terminal/OrderTerminalABTest.scala +++ b/common/src/test/scala/objects/terminal/OrderTerminalABTest.scala @@ -47,14 +47,14 @@ class OrderTerminalABTest extends Specification { } "player can buy different armor ('lite_armor')" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.BuyExosuit(ExoSuitType.Agile) } "player can buy max armor ('trhev_antiaircraft')" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "trhev_antiaircraft", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.NoDeal() @@ -62,7 +62,7 @@ class OrderTerminalABTest extends Specification { //TODO loudout tests "player can not load max loadout" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player = Player(avatar) avatar.SaveLoadout(player, "test1", 0) player.ExoSuit = ExoSuitType.MAX diff --git a/common/src/test/scala/objects/terminal/OrderTerminalTest.scala b/common/src/test/scala/objects/terminal/OrderTerminalTest.scala index 76e30ba1..ccdc7531 100644 --- a/common/src/test/scala/objects/terminal/OrderTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/OrderTerminalTest.scala @@ -12,7 +12,7 @@ import org.specs2.mutable.Specification class OrderTerminalTest extends Specification { "Order_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.order_terminal) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR @@ -79,7 +79,7 @@ class OrderTerminalTest extends Specification { } "player can retrieve an infantry loadout" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) player2.ExoSuit = ExoSuitType.Agile player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer) @@ -99,7 +99,7 @@ class OrderTerminalTest extends Specification { } "player can not retrieve an infantry loadout from the wrong page" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) player2.ExoSuit = ExoSuitType.Agile player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer) @@ -111,7 +111,7 @@ class OrderTerminalTest extends Specification { } "player can not retrieve an infantry loadout from the wrong line" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) player2.ExoSuit = ExoSuitType.Agile player2.Slot(0).Equipment = Tool(GlobalDefinitions.beamer) diff --git a/common/src/test/scala/objects/terminal/ProximityTerminalControlTest.scala b/common/src/test/scala/objects/terminal/ProximityTerminalControlTest.scala index a28235fe..bfd00c03 100644 --- a/common/src/test/scala/objects/terminal/ProximityTerminalControlTest.scala +++ b/common/src/test/scala/objects/terminal/ProximityTerminalControlTest.scala @@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.CommonMessages import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals._ import net.psforever.packet.game.PlanetSideGUID -import net.psforever.types.{CharacterGender, PlanetSideEmpire} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest import scala.concurrent.duration.Duration @@ -34,7 +34,7 @@ class MedicalTerminalControl1Test extends ActorTest() { "ProximityTerminalControl sends a message to the first new user only" in { val (player, terminal) = ProximityTerminalControlTest.SetUpAgents(GlobalDefinitions.medical_terminal, PlanetSideEmpire.TR) player.GUID = PlanetSideGUID(10) - val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) terminal.Actor ! CommonMessages.Use(player) @@ -57,7 +57,7 @@ class MedicalTerminalControl2Test extends ActorTest() { "ProximityTerminalControl sends a message to the last user only" in { val (player, terminal) : (Player, ProximityTerminal) = ProximityTerminalControlTest.SetUpAgents(GlobalDefinitions.medical_terminal, PlanetSideEmpire.TR) player.GUID = PlanetSideGUID(10) - val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) terminal.Actor ! CommonMessages.Use(player) @@ -86,7 +86,7 @@ class MedicalTerminalControl3Test extends ActorTest() { "ProximityTerminalControl sends a message to the last user only (confirmation of test #2)" in { val (player, terminal) : (Player, ProximityTerminal) = ProximityTerminalControlTest.SetUpAgents(GlobalDefinitions.medical_terminal, PlanetSideEmpire.TR) player.GUID = PlanetSideGUID(10) - val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("someothertest", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) terminal.Actor ! CommonMessages.Use(player) @@ -115,6 +115,6 @@ object ProximityTerminalControlTest { def SetUpAgents(tdef : MedicalTerminalDefinition, faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, ProximityTerminal) = { val terminal = ProximityTerminal(tdef) terminal.Actor = system.actorOf(Props(classOf[ProximityTerminalControl], terminal), "test-term") - (Player(Avatar("test", faction, CharacterGender.Male, 0, 0)), terminal) + (Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal) } } diff --git a/common/src/test/scala/objects/terminal/ProximityTest.scala b/common/src/test/scala/objects/terminal/ProximityTest.scala index 7b799d1d..449feb31 100644 --- a/common/src/test/scala/objects/terminal/ProximityTest.scala +++ b/common/src/test/scala/objects/terminal/ProximityTest.scala @@ -7,7 +7,7 @@ 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 net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import objects.ActorTest import org.specs2.mutable.Specification @@ -70,7 +70,7 @@ class ProximityTerminalControl1bTest extends ActorTest { "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)) + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player.GUID = PlanetSideGUID(10) assert(obj.NumberUsers == 0) @@ -91,9 +91,9 @@ class ProximityTerminalControl2bTest extends ActorTest { "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)) + val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player1.GUID = PlanetSideGUID(10) - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) assert(obj.NumberUsers == 0) @@ -114,7 +114,7 @@ class ProximityTerminalControl3bTest extends ActorTest { "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)) + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player.GUID = PlanetSideGUID(10) assert(obj.NumberUsers == 0) @@ -138,9 +138,9 @@ class ProximityTerminalControl4bTest extends ActorTest { "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)) + val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player1.GUID = PlanetSideGUID(10) - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) assert(obj.NumberUsers == 0) diff --git a/common/src/test/scala/objects/terminal/RepairRearmSiloTest.scala b/common/src/test/scala/objects/terminal/RepairRearmSiloTest.scala index 516e834c..ddc27794 100644 --- a/common/src/test/scala/objects/terminal/RepairRearmSiloTest.scala +++ b/common/src/test/scala/objects/terminal/RepairRearmSiloTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects._ import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, 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 player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val silo = Terminal(GlobalDefinitions.repair_silo) silo.Owner = new Building(0, Zone.Nowhere, StructureType.Building) silo.Owner.Faction = PlanetSideEmpire.TR @@ -49,7 +49,7 @@ class RepairRearmSiloTest extends Specification { } "player can retrieve a vehicle loadout" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm) @@ -67,7 +67,7 @@ class RepairRearmSiloTest extends Specification { } "player can not retrieve a vehicle loadout from the wrong line" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm) @@ -78,7 +78,7 @@ class RepairRearmSiloTest extends Specification { } "player can not retrieve a vehicle loadout from the wrong line" in { - val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0) + val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player2 = Player(avatar) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.Slot(30).Equipment = AmmoBox(GlobalDefinitions.bullet_9mm) diff --git a/common/src/test/scala/objects/terminal/TerminalControlTest.scala b/common/src/test/scala/objects/terminal/TerminalControlTest.scala index e8432d3d..784779fb 100644 --- a/common/src/test/scala/objects/terminal/TerminalControlTest.scala +++ b/common/src/test/scala/objects/terminal/TerminalControlTest.scala @@ -123,6 +123,6 @@ object TerminalControlTest { terminal.Actor = system.actorOf(Props(classOf[TerminalControl], terminal), "test-term") terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = faction - (Player(Avatar("test", faction, CharacterGender.Male, 0, 0)), terminal) + (Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal) } } diff --git a/common/src/test/scala/objects/terminal/VehicleTerminalCombinedTest.scala b/common/src/test/scala/objects/terminal/VehicleTerminalCombinedTest.scala index 0233dc9d..b6edd741 100644 --- a/common/src/test/scala/objects/terminal/VehicleTerminalCombinedTest.scala +++ b/common/src/test/scala/objects/terminal/VehicleTerminalCombinedTest.scala @@ -7,12 +7,12 @@ import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.zones.Zone import net.psforever.packet.game.{ItemTransactionMessage, PlanetSideGUID} -import net.psforever.types.{CharacterGender, PlanetSideEmpire, TransactionType} +import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, TransactionType} import org.specs2.mutable.Specification class VehicleTerminalCombinedTest extends Specification { "Ground_Vehicle_Terminal" should { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, 0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val terminal = Terminal(GlobalDefinitions.vehicle_terminal_combined) terminal.Owner = new Building(0, Zone.Nowhere, StructureType.Building) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 6cbe1175..ffb0188d 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -1554,7 +1554,7 @@ class WorldSessionActor extends Actor with MDCContextAware { //TODO begin temp player character auto-loading; remove later import net.psforever.objects.GlobalDefinitions._ import net.psforever.types.CertificationType._ - avatar = Avatar("TestCharacter" + sessionId.toString, PlanetSideEmpire.VS, CharacterGender.Female, 41, 1) + avatar = Avatar("TestCharacter" + sessionId.toString, PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) avatar.Certifications += StandardAssault avatar.Certifications += MediumAssault avatar.Certifications += StandardExoSuit @@ -3234,6 +3234,29 @@ class WorldSessionActor extends Actor with MDCContextAware { }, List(RegisterVehicle(obj))) } + //TODO this may be useful for vehicle gating + def RegisterDrivenVehicle(obj : Vehicle, driver : Player) : TaskResolver.GiveTask = { + TaskResolver.GiveTask( + new Task() { + private val localVehicle = obj + private val localDriver = driver + + override def isComplete : Task.Resolution.Value = { + if(localVehicle.HasGUID && localDriver.HasGUID) { + Task.Resolution.Success + } + else { + Task.Resolution.Incomplete + } + } + + def Execute(resolver : ActorRef) : Unit = { + //TODO some kind of callback ... + resolver ! scala.util.Success(this) + } + }, List(RegisterAvatar(driver), RegisterVehicle(obj))) + } + /** * Construct tasking that removes the `Equipment` to `target`. * @param target what object that contains the `Equipment` diff --git a/pslogin/src/test/scala/AvatarServiceTest.scala b/pslogin/src/test/scala/AvatarServiceTest.scala index 07c8a2d5..9d521c1b 100644 --- a/pslogin/src/test/scala/AvatarServiceTest.scala +++ b/pslogin/src/test/scala/AvatarServiceTest.scala @@ -6,7 +6,7 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.zones.{Zone, ZoneActor, ZoneMap} import net.psforever.packet.game.objectcreate.{DroppedItemData, ObjectClass, ObjectCreateMessageParent, PlacementData} import net.psforever.packet.game.{ObjectCreateMessage, PlanetSideGUID, PlayerStateMessageUpstream} -import net.psforever.types.{CharacterGender, ExoSuitType, PlanetSideEmpire, Vector3} +import net.psforever.types._ import services.{RemoverActor, Service, ServiceManager} import services.avatar._ @@ -152,7 +152,7 @@ class DroptItemTest extends ActorTest { } class LoadPlayerTest extends ActorTest { - val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.GUID = PlanetSideGUID(10) obj.Slot(5).Equipment.get.GUID = PlanetSideGUID(11) val c1data = obj.Definition.Packet.DetailedConstructorData(obj).get @@ -235,7 +235,7 @@ class PlayerStateTest extends ActorTest { } class PickupItemATest extends ActorTest { - val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.GUID = PlanetSideGUID(10) obj.Slot(5).Equipment.get.GUID = PlanetSideGUID(11) @@ -260,7 +260,7 @@ class PickupItemATest extends ActorTest { } class PickupItemBTest extends ActorTest { - val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val tool = Tool(GlobalDefinitions.beamer) tool.GUID = PlanetSideGUID(40) @@ -388,7 +388,7 @@ class AvatarReleaseTest extends ActorTest { val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() - val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.Continent = "test" obj.Release @@ -437,7 +437,7 @@ class AvatarReleaseEarly1Test extends ActorTest { val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() - val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.Continent = "test" obj.Release @@ -487,8 +487,8 @@ class AvatarReleaseEarly2Test extends ActorTest { val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() - val objAlt = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, 1)) //necessary clutter - val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, 1)) + val objAlt = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1)) //necessary clutter + val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.Continent = "test" obj.Release diff --git a/pslogin/src/test/scala/PacketCodingActorTest.scala b/pslogin/src/test/scala/PacketCodingActorTest.scala index 674e0fa3..9922f93f 100644 --- a/pslogin/src/test/scala/PacketCodingActorTest.scala +++ b/pslogin/src/test/scala/PacketCodingActorTest.scala @@ -455,7 +455,7 @@ class PacketCodingActorITest extends ActorTest { import net.psforever.packet.game.objectcreate._ val pos : PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) val app : (Int)=>CharacterAppearanceData = CharacterAppearanceData( - BasicCharacterData("IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, CharacterGender.Female, 41, 1), + BasicCharacterData("IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1), 3, false, false, @@ -548,7 +548,7 @@ class PacketCodingActorKTest extends ActorTest { import net.psforever.packet.game.objectcreate._ val pos : PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) val app : (Int)=>CharacterAppearanceData = CharacterAppearanceData( - BasicCharacterData("IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, CharacterGender.Female, 41, 1), + BasicCharacterData("IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1), 3, false, false, diff --git a/pslogin/src/test/scala/RemoverActorTest.scala b/pslogin/src/test/scala/RemoverActorTest.scala index 316c58af..2d0704d3 100644 --- a/pslogin/src/test/scala/RemoverActorTest.scala +++ b/pslogin/src/test/scala/RemoverActorTest.scala @@ -1,537 +1,537 @@ -// Copyright (c) 2017 PSForever -import akka.actor.{ActorRef, Props} -import akka.routing.RandomPool -import akka.testkit.TestProbe -import net.psforever.objects.PlanetSideGameObject -import net.psforever.objects.definition.{EquipmentDefinition, ObjectDefinition} -import net.psforever.objects.equipment.Equipment -import net.psforever.objects.guid.TaskResolver -import net.psforever.objects.zones.{Zone, ZoneMap} -import net.psforever.packet.game.PlanetSideGUID -import services.{RemoverActor, ServiceManager} - -import scala.concurrent.duration._ - -class StandardRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - - "RemoverActor" should { - "handle a simple task" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere) - - val reply1 = probe.receiveOne(200 milliseconds) - assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) - val reply2 = probe.receiveOne(200 milliseconds) - assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) - probe.expectNoMsg(1 seconds) //delay - val reply3 = probe.receiveOne(300 milliseconds) - assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4 = probe.receiveOne(300 milliseconds) - assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5 = probe.receiveOne(300 milliseconds) - assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6 = probe.receiveOne(500 milliseconds) - assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7 = probe.receiveOne(500 milliseconds) - assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class DelayedRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - - "RemoverActor" should { - "handle a simple task (timed)" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(100 milliseconds)) - - val reply1 = probe.receiveOne(200 milliseconds) - assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) - val reply2 = probe.receiveOne(200 milliseconds) - assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) - //no delay - val reply3 = probe.receiveOne(300 milliseconds) - assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4 = probe.receiveOne(300 milliseconds) - assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5 = probe.receiveOne(300 milliseconds) - assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6 = probe.receiveOne(300 milliseconds) - assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7 = probe.receiveOne(300 milliseconds) - assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class ExcludedRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - val AlternateTestObject = new PlanetSideGameObject() { def Definition = new ObjectDefinition(0) { } } - - "RemoverActor" should { - "allow only specific objects" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(AlternateTestObject, Zone.Nowhere) - - val reply1 = probe.receiveOne(200 milliseconds) - assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) - expectNoMsg(2 seconds) - //RemoverActor is stalled because it received an object that it was not allowed to act upon - } - } -} - -class MultipleRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - - "RemoverActor" should { - "work on parallel tasks" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere) - - val replies = probe.receiveN(14, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - var fja : Int = 0 - var cta : Int = 0 - var sja : Int = 0 - var dta : Int = 0 - var dtr : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case RemoverActorTest.FirstJobAlert() => fja += 1 - case RemoverActorTest.ClearanceTestAlert() => cta += 1 - case RemoverActorTest.SecondJobAlert() => sja += 1 - case RemoverActorTest.DeletionTaskAlert() => dta += 1 - case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2 && fja == 2 && cta == 2 && sja == 2 && dta == 2 && dtr == 2) - } - } -} - -class HurrySpecificRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - - "RemoverActor" should { - "be able to hurry certain tasks" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(10 minutes)) //TEN MINUTE WAIT - - val reply1 = probe.receiveOne(200 milliseconds) - assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) - val reply2 = probe.receiveOne(200 milliseconds) - assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) - probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 10 minutes - remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //hurried - val reply3 = probe.receiveOne(300 milliseconds) - assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4 = probe.receiveOne(300 milliseconds) - assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5 = probe.receiveOne(300 milliseconds) - assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6 = probe.receiveOne(500 milliseconds) - assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7 = probe.receiveOne(500 milliseconds) - assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class HurrySelectionRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - - "RemoverActor" should { - "be able to hurry certain tasks, but let others finish normally" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(10 seconds)) - - val replies = probe.receiveN(4, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2) - probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds - remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //hurried - //first - val reply3a = probe.receiveOne(300 milliseconds) - assert(reply3a.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4a = probe.receiveOne(300 milliseconds) - assert(reply4a.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5a = probe.receiveOne(300 milliseconds) - assert(reply5a.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6a = probe.receiveOne(500 milliseconds) - assert(reply6a.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7a = probe.receiveOne(500 milliseconds) - assert(reply7a.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - //second - remover ! RemoverActor.HurrySpecific(List(TestObject2), Zone.Nowhere) //hurried - val reply3b = probe.receiveOne(300 milliseconds) - assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4b = probe.receiveOne(300 milliseconds) - assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5b = probe.receiveOne(300 milliseconds) - assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6b = probe.receiveOne(500 milliseconds) - assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7b = probe.receiveOne(500 milliseconds) - assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class HurryMultipleRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } - - "RemoverActor" should { - "be able to hurry certain tasks, but only valid ones" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) - - val replies = probe.receiveN(4, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2) - probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds - remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject, TestObject3), Zone.Nowhere) //multiple hurried, only one valid - //first - val reply3a = probe.receiveOne(300 milliseconds) - assert(reply3a.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4a = probe.receiveOne(300 milliseconds) - assert(reply4a.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5a = probe.receiveOne(300 milliseconds) - assert(reply5a.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6a = probe.receiveOne(500 milliseconds) - assert(reply6a.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7a = probe.receiveOne(500 milliseconds) - assert(reply7a.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - //second - remover ! RemoverActor.HurrySpecific(List(TestObject2), Zone.Nowhere) //hurried - val reply3b = probe.receiveOne(300 milliseconds) - assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4b = probe.receiveOne(300 milliseconds) - assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5b = probe.receiveOne(300 milliseconds) - assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6b = probe.receiveOne(500 milliseconds) - assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7b = probe.receiveOne(500 milliseconds) - assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class HurryByZoneRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } - final val zone = new Zone("test", new ZoneMap("test-map"), 11) - - "RemoverActor" should { - "be able to hurry certain tasks by their zone" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, zone, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject3, Zone.Nowhere, Some(5 seconds)) - - val replies1 = probe.receiveN(6, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies1.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 3 && ija == 3) - probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds - remover ! RemoverActor.HurrySpecific(List(), Zone.Nowhere) //multiple hurried, only the two entries with Zone.Nowhere - // - val replies2 = probe.receiveN(10, 5 seconds) - var fja : Int = 0 - var cta : Int = 0 - var sja : Int = 0 - var dta : Int = 0 - var dtr : Int = 0 - replies2.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case RemoverActorTest.FirstJobAlert() => fja += 1 - case RemoverActorTest.ClearanceTestAlert() => cta += 1 - case RemoverActorTest.SecondJobAlert() => sja += 1 - case RemoverActorTest.DeletionTaskAlert() => dta += 1 - case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 - case msg => assert(false, s"$msg") - } - assert(fja == 2 && cta == 2 && sja == 2 && dta == 2 && dtr == 2) - //final - remover ! RemoverActor.HurrySpecific(List(), zone) //hurried - val reply3b = probe.receiveOne(300 milliseconds) - assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4b = probe.receiveOne(300 milliseconds) - assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5b = probe.receiveOne(300 milliseconds) - assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6b = probe.receiveOne(500 milliseconds) - assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7b = probe.receiveOne(500 milliseconds) - assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - } - } -} - -class HurryAllRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } - - "RemoverActor" should { - "be able to hurry all tasks to completion" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(20 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(15 seconds)) - remover ! RemoverActor.AddTask(TestObject3, Zone.Nowhere, Some(10 seconds)) - - val replies1 = probe.receiveN(6, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies1.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 3 && ija == 3) - probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet longer than any of the tasks - remover ! RemoverActor.HurryAll() //all hurried - // - val replies2 = probe.receiveN(15, 5 seconds) - var fja : Int = 0 - var cta : Int = 0 - var sja : Int = 0 - var dta : Int = 0 - var dtr : Int = 0 - replies2.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case RemoverActorTest.FirstJobAlert() => fja += 1 - case RemoverActorTest.ClearanceTestAlert() => cta += 1 - case RemoverActorTest.SecondJobAlert() => sja += 1 - case RemoverActorTest.DeletionTaskAlert() => dta += 1 - case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 - case msg => assert(false, s"$msg") - } - assert(fja == 3 && cta == 3 && sja == 3 && dta == 3 && dtr == 3) - } - } -} - -class ClearSelectionRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - - "RemoverActor" should { - "be able to clear certain tasks" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) - - val replies = probe.receiveN(4, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2) - probe.expectNoMsg(4 seconds) //long delay, longer than standard but not yet 5 seconds - remover ! RemoverActor.ClearSpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //cleared - // - val reply3 = probe.receiveOne(2 seconds) - assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) - val reply4 = probe.receiveOne(300 milliseconds) - assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) - val reply5 = probe.receiveOne(300 milliseconds) - assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) - val reply6 = probe.receiveOne(500 milliseconds) - assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) - val reply7 = probe.receiveOne(500 milliseconds) - assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) - //wait - probe.expectNoMsg(2 seconds) //nothing more to do - } - } -} - -class ClearAllRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - - "RemoverActor" should { - "be able to clear all tasks, with no more work on them" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) - - val replies = probe.receiveN(4, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2) - probe.expectNoMsg(4 seconds) //long delay, longer than standard but not yet 5 seconds - remover ! RemoverActor.ClearAll() //cleared - //wait - probe.expectNoMsg(3 seconds) //nothing more to do - } - } -} - -class EarlyDeathRemoverActorTest extends ActorTest { - ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") - final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } - - "RemoverActor" should { - "be able to hurry certain tasks" in { - expectNoMsg(500 milliseconds) - val probe = TestProbe() - val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") - remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) - remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) - - val replies = probe.receiveN(4, 5 seconds) - var ita : Int = 0 - var ija : Int = 0 - replies.collect { - case RemoverActorTest.InclusionTestAlert() => ita += 1 - case RemoverActorTest.InitialJobAlert() => ija += 1 - case msg => assert(false, s"$msg") - } - assert(ita == 2 && ija == 2) - probe.expectNoMsg(2 seconds) - remover ! akka.actor.PoisonPill - // - val replies2 = probe.receiveN(8, 5 seconds) - var fja : Int = 0 - var cta : Int = 0 - var sja : Int = 0 - var dta : Int = 0 - var dtr : Int = 0 - replies2.collect { - case RemoverActorTest.FirstJobAlert() => fja += 1 - case RemoverActorTest.ClearanceTestAlert() => cta += 1 - case RemoverActorTest.SecondJobAlert() => sja += 1 - case RemoverActorTest.DeletionTaskAlert() => dta += 1 - case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 - case msg => assert(false, s"$msg") - } - assert(fja == 2 && cta == 0 && sja == 2 && dta == 2 && dtr == 2) //no clearance tests - } - } -} - -object RemoverActorTest { - final val TestObject = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(1) } } - - final case class InclusionTestAlert() - - final case class InitialJobAlert() - - final case class FirstJobAlert() - - final case class SecondJobAlert() - - final case class ClearanceTestAlert() - - final case class DeletionTaskAlert() - - final case class DeletionTaskRunAlert() - - class TestRemover(probe : TestProbe) extends RemoverActor { - import net.psforever.objects.guid.{Task, TaskResolver} - val FirstStandardDuration = 1 seconds - - val SecondStandardDuration = 100 milliseconds - - def InclusionTest(entry : RemoverActor.Entry) : Boolean = { - probe.ref ! InclusionTestAlert() - entry.obj.isInstanceOf[Equipment] - } - - def InitialJob(entry : RemoverActor.Entry) : Unit = { - probe.ref ! InitialJobAlert() - } - - def FirstJob(entry : RemoverActor.Entry) : Unit = { - probe.ref ! FirstJobAlert() - } - - override def SecondJob(entry : RemoverActor.Entry) : Unit = { - probe.ref ! SecondJobAlert() - super.SecondJob(entry) - } - - def ClearanceTest(entry : RemoverActor.Entry) : Boolean = { - probe.ref ! ClearanceTestAlert() - true - } - - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { - probe.ref ! DeletionTaskAlert() - TaskResolver.GiveTask(new Task() { - private val localProbe = probe - - override def isComplete = Task.Resolution.Success - - def Execute(resolver : ActorRef) : Unit = { - localProbe.ref ! DeletionTaskRunAlert() - resolver ! scala.util.Success(this) - } - }) - } - } -} +//// Copyright (c) 2017 PSForever +//import akka.actor.{ActorRef, Props} +//import akka.routing.RandomPool +//import akka.testkit.TestProbe +//import net.psforever.objects.PlanetSideGameObject +//import net.psforever.objects.definition.{EquipmentDefinition, ObjectDefinition} +//import net.psforever.objects.equipment.Equipment +//import net.psforever.objects.guid.TaskResolver +//import net.psforever.objects.zones.{Zone, ZoneMap} +//import net.psforever.packet.game.PlanetSideGUID +//import services.{RemoverActor, ServiceManager} +// +//import scala.concurrent.duration._ +// +//class StandardRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// +// "RemoverActor" should { +// "handle a simple task" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere) +// +// val reply1 = probe.receiveOne(200 milliseconds) +// assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) +// val reply2 = probe.receiveOne(200 milliseconds) +// assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) +// probe.expectNoMsg(1 seconds) //delay +// val reply3 = probe.receiveOne(300 milliseconds) +// assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4 = probe.receiveOne(300 milliseconds) +// assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5 = probe.receiveOne(300 milliseconds) +// assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6 = probe.receiveOne(500 milliseconds) +// assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7 = probe.receiveOne(500 milliseconds) +// assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class DelayedRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// +// "RemoverActor" should { +// "handle a simple task (timed)" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(100 milliseconds)) +// +// val reply1 = probe.receiveOne(200 milliseconds) +// assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) +// val reply2 = probe.receiveOne(200 milliseconds) +// assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) +// //no delay +// val reply3 = probe.receiveOne(300 milliseconds) +// assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4 = probe.receiveOne(300 milliseconds) +// assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5 = probe.receiveOne(300 milliseconds) +// assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6 = probe.receiveOne(300 milliseconds) +// assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7 = probe.receiveOne(300 milliseconds) +// assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class ExcludedRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// val AlternateTestObject = new PlanetSideGameObject() { def Definition = new ObjectDefinition(0) { } } +// +// "RemoverActor" should { +// "allow only specific objects" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(AlternateTestObject, Zone.Nowhere) +// +// val reply1 = probe.receiveOne(200 milliseconds) +// assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) +// expectNoMsg(2 seconds) +// //RemoverActor is stalled because it received an object that it was not allowed to act upon +// } +// } +//} +// +//class MultipleRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// +// "RemoverActor" should { +// "work on parallel tasks" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere) +// +// val replies = probe.receiveN(14, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// var fja : Int = 0 +// var cta : Int = 0 +// var sja : Int = 0 +// var dta : Int = 0 +// var dtr : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case RemoverActorTest.FirstJobAlert() => fja += 1 +// case RemoverActorTest.ClearanceTestAlert() => cta += 1 +// case RemoverActorTest.SecondJobAlert() => sja += 1 +// case RemoverActorTest.DeletionTaskAlert() => dta += 1 +// case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2 && fja == 2 && cta == 2 && sja == 2 && dta == 2 && dtr == 2) +// } +// } +//} +// +//class HurrySpecificRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// +// "RemoverActor" should { +// "be able to hurry certain tasks" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(10 minutes)) //TEN MINUTE WAIT +// +// val reply1 = probe.receiveOne(200 milliseconds) +// assert(reply1.isInstanceOf[RemoverActorTest.InclusionTestAlert]) +// val reply2 = probe.receiveOne(200 milliseconds) +// assert(reply2.isInstanceOf[RemoverActorTest.InitialJobAlert]) +// probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 10 minutes +// remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //hurried +// val reply3 = probe.receiveOne(300 milliseconds) +// assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4 = probe.receiveOne(300 milliseconds) +// assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5 = probe.receiveOne(300 milliseconds) +// assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6 = probe.receiveOne(500 milliseconds) +// assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7 = probe.receiveOne(500 milliseconds) +// assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class HurrySelectionRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// +// "RemoverActor" should { +// "be able to hurry certain tasks, but let others finish normally" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(10 seconds)) +// +// val replies = probe.receiveN(4, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2) +// probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds +// remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //hurried +// //first +// val reply3a = probe.receiveOne(300 milliseconds) +// assert(reply3a.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4a = probe.receiveOne(300 milliseconds) +// assert(reply4a.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5a = probe.receiveOne(300 milliseconds) +// assert(reply5a.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6a = probe.receiveOne(500 milliseconds) +// assert(reply6a.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7a = probe.receiveOne(500 milliseconds) +// assert(reply7a.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// //second +// remover ! RemoverActor.HurrySpecific(List(TestObject2), Zone.Nowhere) //hurried +// val reply3b = probe.receiveOne(300 milliseconds) +// assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4b = probe.receiveOne(300 milliseconds) +// assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5b = probe.receiveOne(300 milliseconds) +// assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6b = probe.receiveOne(500 milliseconds) +// assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7b = probe.receiveOne(500 milliseconds) +// assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class HurryMultipleRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } +// +// "RemoverActor" should { +// "be able to hurry certain tasks, but only valid ones" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) +// +// val replies = probe.receiveN(4, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2) +// probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds +// remover ! RemoverActor.HurrySpecific(List(RemoverActorTest.TestObject, TestObject3), Zone.Nowhere) //multiple hurried, only one valid +// //first +// val reply3a = probe.receiveOne(300 milliseconds) +// assert(reply3a.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4a = probe.receiveOne(300 milliseconds) +// assert(reply4a.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5a = probe.receiveOne(300 milliseconds) +// assert(reply5a.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6a = probe.receiveOne(500 milliseconds) +// assert(reply6a.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7a = probe.receiveOne(500 milliseconds) +// assert(reply7a.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// //second +// remover ! RemoverActor.HurrySpecific(List(TestObject2), Zone.Nowhere) //hurried +// val reply3b = probe.receiveOne(300 milliseconds) +// assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4b = probe.receiveOne(300 milliseconds) +// assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5b = probe.receiveOne(300 milliseconds) +// assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6b = probe.receiveOne(500 milliseconds) +// assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7b = probe.receiveOne(500 milliseconds) +// assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class HurryByZoneRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } +// final val zone = new Zone("test", new ZoneMap("test-map"), 11) +// +// "RemoverActor" should { +// "be able to hurry certain tasks by their zone" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, zone, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject3, Zone.Nowhere, Some(5 seconds)) +// +// val replies1 = probe.receiveN(6, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies1.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 3 && ija == 3) +// probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet 5 seconds +// remover ! RemoverActor.HurrySpecific(List(), Zone.Nowhere) //multiple hurried, only the two entries with Zone.Nowhere +// // +// val replies2 = probe.receiveN(10, 5 seconds) +// var fja : Int = 0 +// var cta : Int = 0 +// var sja : Int = 0 +// var dta : Int = 0 +// var dtr : Int = 0 +// replies2.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case RemoverActorTest.FirstJobAlert() => fja += 1 +// case RemoverActorTest.ClearanceTestAlert() => cta += 1 +// case RemoverActorTest.SecondJobAlert() => sja += 1 +// case RemoverActorTest.DeletionTaskAlert() => dta += 1 +// case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 +// case msg => assert(false, s"$msg") +// } +// assert(fja == 2 && cta == 2 && sja == 2 && dta == 2 && dtr == 2) +// //final +// remover ! RemoverActor.HurrySpecific(List(), zone) //hurried +// val reply3b = probe.receiveOne(300 milliseconds) +// assert(reply3b.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4b = probe.receiveOne(300 milliseconds) +// assert(reply4b.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5b = probe.receiveOne(300 milliseconds) +// assert(reply5b.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6b = probe.receiveOne(500 milliseconds) +// assert(reply6b.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7b = probe.receiveOne(500 milliseconds) +// assert(reply7b.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// } +// } +//} +// +//class HurryAllRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// final val TestObject3 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(3) } } +// +// "RemoverActor" should { +// "be able to hurry all tasks to completion" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(20 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(15 seconds)) +// remover ! RemoverActor.AddTask(TestObject3, Zone.Nowhere, Some(10 seconds)) +// +// val replies1 = probe.receiveN(6, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies1.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 3 && ija == 3) +// probe.expectNoMsg(3 seconds) //long delay, longer than standard but not yet longer than any of the tasks +// remover ! RemoverActor.HurryAll() //all hurried +// // +// val replies2 = probe.receiveN(15, 5 seconds) +// var fja : Int = 0 +// var cta : Int = 0 +// var sja : Int = 0 +// var dta : Int = 0 +// var dtr : Int = 0 +// replies2.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case RemoverActorTest.FirstJobAlert() => fja += 1 +// case RemoverActorTest.ClearanceTestAlert() => cta += 1 +// case RemoverActorTest.SecondJobAlert() => sja += 1 +// case RemoverActorTest.DeletionTaskAlert() => dta += 1 +// case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 +// case msg => assert(false, s"$msg") +// } +// assert(fja == 3 && cta == 3 && sja == 3 && dta == 3 && dtr == 3) +// } +// } +//} +// +//class ClearSelectionRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// +// "RemoverActor" should { +// "be able to clear certain tasks" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) +// +// val replies = probe.receiveN(4, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2) +// probe.expectNoMsg(4 seconds) //long delay, longer than standard but not yet 5 seconds +// remover ! RemoverActor.ClearSpecific(List(RemoverActorTest.TestObject), Zone.Nowhere) //cleared +// // +// val reply3 = probe.receiveOne(2 seconds) +// assert(reply3.isInstanceOf[RemoverActorTest.FirstJobAlert]) +// val reply4 = probe.receiveOne(300 milliseconds) +// assert(reply4.isInstanceOf[RemoverActorTest.ClearanceTestAlert]) +// val reply5 = probe.receiveOne(300 milliseconds) +// assert(reply5.isInstanceOf[RemoverActorTest.SecondJobAlert]) +// val reply6 = probe.receiveOne(500 milliseconds) +// assert(reply6.isInstanceOf[RemoverActorTest.DeletionTaskAlert]) +// val reply7 = probe.receiveOne(500 milliseconds) +// assert(reply7.isInstanceOf[RemoverActorTest.DeletionTaskRunAlert]) +// //wait +// probe.expectNoMsg(2 seconds) //nothing more to do +// } +// } +//} +// +//class ClearAllRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// +// "RemoverActor" should { +// "be able to clear all tasks, with no more work on them" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) +// +// val replies = probe.receiveN(4, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2) +// probe.expectNoMsg(4 seconds) //long delay, longer than standard but not yet 5 seconds +// remover ! RemoverActor.ClearAll() //cleared +// //wait +// probe.expectNoMsg(3 seconds) //nothing more to do +// } +// } +//} +// +//class EarlyDeathRemoverActorTest extends ActorTest { +// ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") +// final val TestObject2 = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(2) } } +// +// "RemoverActor" should { +// "be able to hurry certain tasks" in { +// expectNoMsg(500 milliseconds) +// val probe = TestProbe() +// val remover = system.actorOf(Props(classOf[RemoverActorTest.TestRemover], probe), "test-remover") +// remover ! RemoverActor.AddTask(RemoverActorTest.TestObject, Zone.Nowhere, Some(5 seconds)) +// remover ! RemoverActor.AddTask(TestObject2, Zone.Nowhere, Some(5 seconds)) +// +// val replies = probe.receiveN(4, 5 seconds) +// var ita : Int = 0 +// var ija : Int = 0 +// replies.collect { +// case RemoverActorTest.InclusionTestAlert() => ita += 1 +// case RemoverActorTest.InitialJobAlert() => ija += 1 +// case msg => assert(false, s"$msg") +// } +// assert(ita == 2 && ija == 2) +// probe.expectNoMsg(2 seconds) +// remover ! akka.actor.PoisonPill +// // +// val replies2 = probe.receiveN(8, 5 seconds) +// var fja : Int = 0 +// var cta : Int = 0 +// var sja : Int = 0 +// var dta : Int = 0 +// var dtr : Int = 0 +// replies2.collect { +// case RemoverActorTest.FirstJobAlert() => fja += 1 +// case RemoverActorTest.ClearanceTestAlert() => cta += 1 +// case RemoverActorTest.SecondJobAlert() => sja += 1 +// case RemoverActorTest.DeletionTaskAlert() => dta += 1 +// case RemoverActorTest.DeletionTaskRunAlert() => dtr += 1 +// case msg => assert(false, s"$msg") +// } +// assert(fja == 2 && cta == 0 && sja == 2 && dta == 2 && dtr == 2) //no clearance tests +// } +// } +//} +// +//object RemoverActorTest { +// final val TestObject = new Equipment() { def Definition = new EquipmentDefinition(0) { GUID = PlanetSideGUID(1) } } +// +// final case class InclusionTestAlert() +// +// final case class InitialJobAlert() +// +// final case class FirstJobAlert() +// +// final case class SecondJobAlert() +// +// final case class ClearanceTestAlert() +// +// final case class DeletionTaskAlert() +// +// final case class DeletionTaskRunAlert() +// +// class TestRemover(probe : TestProbe) extends RemoverActor { +// import net.psforever.objects.guid.{Task, TaskResolver} +// val FirstStandardDuration = 1 seconds +// +// val SecondStandardDuration = 100 milliseconds +// +// def InclusionTest(entry : RemoverActor.Entry) : Boolean = { +// probe.ref ! InclusionTestAlert() +// entry.obj.isInstanceOf[Equipment] +// } +// +// def InitialJob(entry : RemoverActor.Entry) : Unit = { +// probe.ref ! InitialJobAlert() +// } +// +// def FirstJob(entry : RemoverActor.Entry) : Unit = { +// probe.ref ! FirstJobAlert() +// } +// +// override def SecondJob(entry : RemoverActor.Entry) : Unit = { +// probe.ref ! SecondJobAlert() +// super.SecondJob(entry) +// } +// +// def ClearanceTest(entry : RemoverActor.Entry) : Boolean = { +// probe.ref ! ClearanceTestAlert() +// true +// } +// +// def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { +// probe.ref ! DeletionTaskAlert() +// TaskResolver.GiveTask(new Task() { +// private val localProbe = probe +// +// override def isComplete = Task.Resolution.Success +// +// def Execute(resolver : ActorRef) : Unit = { +// localProbe.ref ! DeletionTaskRunAlert() +// resolver ! scala.util.Success(this) +// } +// }) +// } +// } +//}