mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-03-02 11:43:39 +00:00
Refine VNL multi-world with new vector codec
This commit is contained in:
parent
37ad423820
commit
a54ee2f0b7
5 changed files with 103 additions and 24 deletions
|
|
@ -16,9 +16,12 @@ class VNLWorldStatusMessageTest extends Specification {
|
|||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case VNLWorldStatusMessage(message, _, world, extra_worlds) =>
|
||||
extra_worlds.length mustEqual 0
|
||||
case VNLWorldStatusMessage(message, worlds) =>
|
||||
message mustEqual "Welcome to PlanetSide! "
|
||||
|
||||
worlds.length mustEqual 1
|
||||
|
||||
val world = worlds(0)
|
||||
world.name mustEqual "gemini"
|
||||
world.empireNeed mustEqual PlanetSideEmpire.NC
|
||||
world.status mustEqual WorldStatus.Up
|
||||
|
|
@ -36,13 +39,14 @@ class VNLWorldStatusMessageTest extends Specification {
|
|||
}
|
||||
|
||||
"encode" in {
|
||||
val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", 1,
|
||||
WorldInformation("gemini", WorldStatus.Up, ServerType.Released,
|
||||
val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ",
|
||||
Vector(WorldInformation("gemini", WorldStatus.Up, ServerType.Released,
|
||||
Vector(
|
||||
WorldConnectionInfo(new InetSocketAddress(InetAddress.getByName("64.37.158.69"), 30007))
|
||||
), PlanetSideEmpire.NC
|
||||
)
|
||||
))
|
||||
)
|
||||
|
||||
//0100 04 00 01459e2540377540
|
||||
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
|
@ -50,18 +54,56 @@ class VNLWorldStatusMessageTest extends Specification {
|
|||
pkt mustEqual string
|
||||
}
|
||||
|
||||
"encode and decode empty messages" in {
|
||||
val string = hex"0584410041004100410000"
|
||||
val empty_msg = VNLWorldStatusMessage("AAAA", Vector())
|
||||
val empty_pkt = PacketCoding.EncodePacket(empty_msg).require.toByteVector
|
||||
|
||||
empty_pkt mustEqual string
|
||||
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case VNLWorldStatusMessage(message, worlds) =>
|
||||
message mustEqual "AAAA"
|
||||
worlds.length mustEqual 0
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode and decode multiple worlds" in {
|
||||
val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", 2,
|
||||
WorldInformation("ABCDABCD1", WorldStatus.Up, ServerType.Released, Vector(), PlanetSideEmpire.NC),
|
||||
var string = hex" 0597570065006c0063006f006d006500200074006f00200050006c0061006e0065007400530069006400650021002000028941424344414243443101000300006240414243444142434432000002020000"
|
||||
|
||||
val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ",
|
||||
Vector(
|
||||
WorldInformation("ABCDABCD1", WorldStatus.Up, ServerType.Released, Vector(), PlanetSideEmpire.NC),
|
||||
WorldInformation("ABCDABCD2", WorldStatus.Down, ServerType.Beta, Vector(), PlanetSideEmpire.TR)
|
||||
))
|
||||
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
||||
println(pkt)
|
||||
pkt mustEqual string
|
||||
|
||||
// TODO: actually test something
|
||||
ok
|
||||
string = hex" 0597570065006c0063006f006d006500200074006f00200050006c0061006e0065007400530069006400650021002000028941424344414243443101000300006240414243444142434432000002020000"
|
||||
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case VNLWorldStatusMessage(message, worlds) =>
|
||||
message mustEqual "Welcome to PlanetSide! "
|
||||
|
||||
worlds.length mustEqual 2
|
||||
|
||||
worlds(0).name mustEqual "ABCDABCD1"
|
||||
worlds(0).empireNeed mustEqual PlanetSideEmpire.NC
|
||||
worlds(0).status mustEqual WorldStatus.Up
|
||||
worlds(0).serverType mustEqual ServerType.Released
|
||||
worlds(0).connections.length mustEqual 0
|
||||
|
||||
worlds(1).name mustEqual "ABCDABCD2"
|
||||
worlds(1).empireNeed mustEqual PlanetSideEmpire.TR
|
||||
worlds(1).status mustEqual WorldStatus.Down
|
||||
worlds(1).serverType mustEqual ServerType.Beta
|
||||
worlds(1).connections.length mustEqual 0
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue