mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-01-20 02:54:46 +00:00
149 lines
4 KiB
Scala
149 lines
4 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package objects
|
|
|
|
import net.psforever.objects.{EquipmentSlot, OffhandEquipmentSlot, Tool}
|
|
import net.psforever.objects.equipment.EquipmentSize
|
|
import net.psforever.objects.GlobalDefinitions.{beamer, repeater, suppressor}
|
|
import org.specs2.mutable._
|
|
|
|
class EquipmentSlotTest extends Specification {
|
|
"EquipmentSlot" should {
|
|
"construct" in {
|
|
val obj = new EquipmentSlot()
|
|
obj.Size mustEqual EquipmentSize.Blocked
|
|
obj.Equipment mustEqual None
|
|
}
|
|
|
|
"construct with a default size" in {
|
|
val obj = EquipmentSlot(EquipmentSize.Pistol)
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
}
|
|
|
|
"change size" in {
|
|
val obj = new EquipmentSlot()
|
|
obj.Size mustEqual EquipmentSize.Blocked
|
|
obj.Size = EquipmentSize.Pistol
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
}
|
|
|
|
"hold equipment" in {
|
|
val obj = new EquipmentSlot()
|
|
val equipment = Tool(beamer)
|
|
obj.Equipment = None
|
|
|
|
beamer.Size mustEqual EquipmentSize.Pistol
|
|
obj.Size = EquipmentSize.Pistol
|
|
obj.Equipment = equipment
|
|
obj.Equipment match {
|
|
case Some(item) =>
|
|
item.Definition mustEqual beamer
|
|
case None =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"put down previously held equipment" in {
|
|
val obj = EquipmentSlot(EquipmentSize.Pistol)
|
|
obj.Equipment = Tool(beamer)
|
|
|
|
obj.Equipment match {
|
|
case Some(item) =>
|
|
item.Definition mustEqual beamer
|
|
case None =>
|
|
ko
|
|
}
|
|
obj.Equipment = None
|
|
obj.Equipment match {
|
|
case Some(_) =>
|
|
ko
|
|
case None =>
|
|
ok
|
|
}
|
|
}
|
|
|
|
"not change size when holding equipment" in {
|
|
val obj = new EquipmentSlot()
|
|
obj.Size mustEqual EquipmentSize.Blocked
|
|
obj.Size = EquipmentSize.Pistol
|
|
obj.Equipment = Tool(beamer)
|
|
obj.Equipment match {
|
|
case Some(_) => ;
|
|
case None => ko
|
|
}
|
|
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
obj.Size = EquipmentSize.Rifle
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
}
|
|
|
|
"not hold wrong-sized equipment" in {
|
|
val obj = new EquipmentSlot()
|
|
val equipment = Tool(suppressor)
|
|
obj.Equipment = None
|
|
|
|
beamer.Size mustEqual EquipmentSize.Pistol
|
|
obj.Size = EquipmentSize.Pistol
|
|
obj.Equipment = equipment
|
|
obj.Equipment mustEqual None
|
|
}
|
|
|
|
"not switch to holding a second item in place of a first one" in {
|
|
val obj = EquipmentSlot(EquipmentSize.Pistol)
|
|
obj.Equipment = Tool(beamer)
|
|
|
|
obj.Equipment match {
|
|
case Some(item) =>
|
|
item.Definition mustEqual beamer
|
|
case None =>
|
|
ko
|
|
}
|
|
repeater.Size mustEqual EquipmentSize.Pistol
|
|
obj.Equipment = Tool(repeater) //also a pistol
|
|
obj.Equipment match {
|
|
case Some(item) =>
|
|
item.Definition mustEqual beamer
|
|
case None =>
|
|
ko
|
|
}
|
|
}
|
|
}
|
|
|
|
"OffhandEquipmentSLot" should {
|
|
"construct" in {
|
|
val obj = new OffhandEquipmentSlot(EquipmentSize.Pistol)
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
obj.Equipment mustEqual None
|
|
}
|
|
|
|
"hold equipment" in {
|
|
val obj = new OffhandEquipmentSlot(EquipmentSize.Pistol)
|
|
val equipment = Tool(beamer)
|
|
obj.Equipment = None
|
|
|
|
beamer.Size mustEqual EquipmentSize.Pistol
|
|
obj.Equipment = equipment
|
|
obj.Equipment match {
|
|
case Some(item) =>
|
|
item.Definition mustEqual beamer
|
|
case None =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"not change size after being constructed" in {
|
|
//see above test "EquipmentSlot should/not change size when holding equipment"
|
|
val obj = new OffhandEquipmentSlot(EquipmentSize.Pistol)
|
|
obj.Equipment mustEqual None
|
|
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
obj.Size = EquipmentSize.Rifle
|
|
obj.Size mustEqual EquipmentSize.Pistol
|
|
}
|
|
|
|
"special Blocked size default" in {
|
|
OffhandEquipmentSlot.BlockedSlot.Size mustEqual EquipmentSize.Blocked
|
|
OffhandEquipmentSlot.BlockedSlot.Equipment mustEqual None
|
|
}
|
|
}
|
|
}
|