comments in class; added a match case in WSA; short test, to at least show a full working sample

This commit is contained in:
FateJH 2017-05-02 00:51:54 -04:00
parent 3a2d8062bf
commit 5ceded71c1
3 changed files with 42 additions and 5 deletions

View file

@ -5,9 +5,20 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacke
import scodec.Codec
import scodec.codecs._
/**
* An entry regarding a specific target.
* @param target_guid the target
* @param unk na
*/
final case class TargetRequest(target_guid : PlanetSideGUID,
unk : Boolean)
/**
* Dispatched by the client when the advanced targeting implant activates to collect status information from the server.<br>
* <br>
* This packet is answered by a `TargetingInfoMessage` with `List` entries of thed corresponding UIDs.
* @param target_list a `List` of targets
*/
final case class TargetingImplantRequest(target_list : List[TargetRequest])
extends PlanetSideGamePacket {
type Packet = TargetingImplantRequest

View file

@ -7,10 +7,23 @@ import net.psforever.packet.game._
import scodec.bits._
class TargetingImplantRequestTest extends Specification {
val string = hex"b5 41edeb12d4409f0144053f8010541ba91d03df376831b1e26000611041e1107c0209c0"//0510085013d9ffb6720d5b132900003770?
val string_single = hex"b5 061016"
val string_long = hex"b5 41edeb12d4409f0144053f8010541ba91d03df376831b1e26000611041e1107c0209c0"//0510085013d9ffb6720d5b132900003770?
"decode" in {
PacketCoding.DecodePacket(string).require match {
"decode (single)" in {
PacketCoding.DecodePacket(string_single).require match {
case TargetingImplantRequest(target_list) =>
target_list.length mustEqual 1
//0
target_list.head.target_guid mustEqual PlanetSideGUID(1412)
target_list.head.unk mustEqual true
case _ =>
ko
}
}
"decode (long)" in {
PacketCoding.DecodePacket(string_long).require match {
case TargetingImplantRequest(target_list) =>
target_list.length mustEqual 16
//0
@ -66,7 +79,17 @@ class TargetingImplantRequestTest extends Specification {
}
}
"encode" in {
"encode (single)" in {
val msg = TargetingImplantRequest(
TargetRequest(PlanetSideGUID(1412), true) ::
Nil
)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string_single
}
"encode (long)" in {
val msg = TargetingImplantRequest(
TargetRequest(PlanetSideGUID(31355), true) ::
TargetRequest(PlanetSideGUID(27273), false) ::
@ -88,6 +111,6 @@ class TargetingImplantRequestTest extends Specification {
)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
pkt mustEqual string_long
}
}