From bb3c0f5d91a5b628395778b0874dfbd1d92dc730 Mon Sep 17 00:00:00 2001 From: FateJH Date: Tue, 25 Aug 2020 15:24:26 -0400 Subject: [PATCH] test repairs --- .../actor/service/AvatarServiceTest.scala | 25 ++++++++++++------ .../vital/damage/DamageModifiers.scala | 2 +- .../net/psforever/objects/zones/Zone.scala | 2 +- src/test/scala/objects/DamageModelTests.scala | 20 +++++++------- src/test/scala/objects/ZoneTest.scala | 26 ++++++++++++++++--- 5 files changed, 51 insertions(+), 24 deletions(-) diff --git a/server/src/test/scala/actor/service/AvatarServiceTest.scala b/server/src/test/scala/actor/service/AvatarServiceTest.scala index f912c0f0..4f9d2365 100644 --- a/server/src/test/scala/actor/service/AvatarServiceTest.scala +++ b/server/src/test/scala/actor/service/AvatarServiceTest.scala @@ -5,7 +5,7 @@ import akka.actor.Props import akka.routing.RandomPool import actor.base.ActorTest import net.psforever.objects._ -import net.psforever.objects.guid.{GUIDTask, TaskResolver} +import net.psforever.objects.guid.{NumberPoolHub, TaskResolver} import net.psforever.objects.zones.{Zone, ZoneMap} import net.psforever.packet.game.objectcreate.{DroppedItemData, ObjectClass, ObjectCreateMessageParent, PlacementData} import net.psforever.packet.game.{ObjectCreateMessage, PlayerStateMessageUpstream} @@ -17,6 +17,7 @@ import scala.concurrent.duration._ import akka.actor.typed.scaladsl.adapter._ import net.psforever.actors.zone.ZoneActor import net.psforever.objects.avatar.Avatar +import net.psforever.objects.guid.source.LimitedNumberSource class AvatarService1Test extends ActorTest { "AvatarService" should { @@ -511,10 +512,13 @@ class AvatarReleaseTest extends ActorTest { val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } + val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100)) + zone.GUID(guid1) val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") - val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + guid1.register(obj) + guid1.register(obj.Slot(5).Equipment.get) obj.Continent = "test" obj.Release @@ -523,7 +527,6 @@ class AvatarReleaseTest extends ActorTest { expectNoMessage(100 milliseconds) //spacer service ! Service.Join("test") - taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID) assert(zone.Corpses.isEmpty) zone.Population ! Zone.Corpse.Add(obj) expectNoMessage(200 milliseconds) //spacer @@ -561,10 +564,13 @@ class AvatarReleaseEarly1Test extends ActorTest { val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } + val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100)) + zone.GUID(guid1) val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") - val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + guid1.register(obj) + guid1.register(obj.Slot(5).Equipment.get) obj.Continent = "test" obj.Release @@ -573,7 +579,6 @@ class AvatarReleaseEarly1Test extends ActorTest { expectNoMessage(100 milliseconds) //spacer service ! Service.Join("test") - taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID) assert(zone.Corpses.isEmpty) zone.Population ! Zone.Corpse.Add(obj) expectNoMessage(200 milliseconds) //spacer @@ -612,14 +617,19 @@ class AvatarReleaseEarly2Test extends ActorTest { val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } + val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100)) + zone.GUID(guid1) val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") - val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") val objAlt = Player( Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1) ) //necessary clutter - val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + objAlt.GUID = PlanetSideGUID(3) + objAlt.Slot(5).Equipment.get.GUID = PlanetSideGUID(4) + val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + guid1.register(obj) + guid1.register(obj.Slot(5).Equipment.get) obj.Continent = "test" obj.Release @@ -628,7 +638,6 @@ class AvatarReleaseEarly2Test extends ActorTest { expectNoMessage(100 milliseconds) //spacer service ! Service.Join("test") - taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID) assert(zone.Corpses.isEmpty) zone.Population ! Zone.Corpse.Add(obj) expectNoMessage(200 milliseconds) //spacer diff --git a/src/main/scala/net/psforever/objects/vital/damage/DamageModifiers.scala b/src/main/scala/net/psforever/objects/vital/damage/DamageModifiers.scala index fff0a754..2b9739d5 100644 --- a/src/main/scala/net/psforever/objects/vital/damage/DamageModifiers.scala +++ b/src/main/scala/net/psforever/objects/vital/damage/DamageModifiers.scala @@ -101,7 +101,7 @@ object DamageModifiers { val distance = Vector3.Distance(data.hit_pos, data.target.Position) val radius = profile.DamageRadius if (distance <= radius) { - damage * (1f - (profile.DamageAtEdge * distance / radius)).toInt + damage - (damage * profile.DamageAtEdge * distance / radius).toInt } else { 0 } diff --git a/src/main/scala/net/psforever/objects/zones/Zone.scala b/src/main/scala/net/psforever/objects/zones/Zone.scala index 5f17e46b..debbf627 100644 --- a/src/main/scala/net/psforever/objects/zones/Zone.scala +++ b/src/main/scala/net/psforever/objects/zones/Zone.scala @@ -451,7 +451,7 @@ class Zone(val id: String, val map: ZoneMap, zoneNumber: Int) { * `false`, if the new pool can not be created because the system has already been started */ def AddPool(name: String, pool: Seq[Int]): Boolean = { - if (accessor == Default.Actor) { + if (accessor == Default.Actor || accessor == null) { guid.AddPool(name, pool.toList) true } else { diff --git a/src/test/scala/objects/DamageModelTests.scala b/src/test/scala/objects/DamageModelTests.scala index 8da2e8fc..656e91fc 100644 --- a/src/test/scala/objects/DamageModelTests.scala +++ b/src/test/scala/objects/DamageModelTests.scala @@ -64,14 +64,7 @@ class DamageCalculationsTests extends Specification { } "degrade over distance damage modifier (no degrade)" in { - val resprojectile2 = ResolvedProjectile( - ProjectileResolution.Splash, - projectile, - SourceEntry(target), - target.DamageModel, - Vector3(10, 0, 0) - ) - DamageModifiers.DistanceDegrade.Calculate(100, resprojectile2) == 100 mustEqual true + DamageModifiers.DistanceDegrade.Calculate(100, resprojectile) == 100 mustEqual true } "degrade over distance damage modifier (some degrade)" in { @@ -109,7 +102,14 @@ class DamageCalculationsTests extends Specification { } "degrade at radial distance damage modifier (some degrade)" in { - val damage = DamageModifiers.RadialDegrade.Calculate(100, resprojectile) + val resprojectile2 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3(12, 0, 0) + ) + val damage = DamageModifiers.RadialDegrade.Calculate(100, resprojectile2) damage < 100 && damage > 0 mustEqual true } @@ -119,7 +119,7 @@ class DamageCalculationsTests extends Specification { projectile, SourceEntry(target), target.DamageModel, - Vector3(1000, 0, 0) + Vector3(100, 0, 0) ) DamageModifiers.RadialDegrade.Calculate(100, resprojectile2) == 0 mustEqual true } diff --git a/src/test/scala/objects/ZoneTest.scala b/src/test/scala/objects/ZoneTest.scala index 520ad0c4..7ac0988e 100644 --- a/src/test/scala/objects/ZoneTest.scala +++ b/src/test/scala/objects/ZoneTest.scala @@ -110,7 +110,8 @@ class ZoneTest extends Specification { zone.AddPool("pool2", (51 to 75).toList) val obj = new TestObject() - guid1.register(obj, "pool2").isSuccess mustEqual true + val registration = guid1.register(obj, "pool2") + registration.isSuccess mustEqual true guid1.WhichPool(obj).contains("pool2") mustEqual true zone.GUID(new NumberPoolHub(new LimitedNumberSource(150))) mustEqual false @@ -214,13 +215,15 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) assert(zone.Players.isEmpty) assert(zone.LivePlayers.isEmpty) zone.Population ! Zone.Population.Join(avatar) - zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) + zone.Population ! Zone.Population.Spawn(avatar, player, null) expectNoMessage(Duration.create(200, "ms")) assert(zone.Players.size == 1) assert(zone.Players.head == avatar) @@ -232,10 +235,12 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val avatar = Avatar(1, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) receiveOne(Duration.create(200, "ms")) //consume zone.Population ! Zone.Population.Join(avatar) - zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) + zone.Population ! Zone.Population.Spawn(avatar, player, null) expectNoMessage(Duration.create(100, "ms")) assert(zone.Players.size == 1) @@ -251,6 +256,7 @@ class ZonePopulationTest extends ActorTest { val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) zone.Population ! Zone.Population.Join(avatar) @@ -271,6 +277,7 @@ class ZonePopulationTest extends ActorTest { val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) zone.Population ! Zone.Population.Join(avatar) @@ -318,7 +325,9 @@ class ZonePopulationTest extends ActorTest { val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player1 = Player(avatar) + player1.GUID = PlanetSideGUID(1) val player2 = Player(avatar) + player2.GUID = PlanetSideGUID(2) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) zone.Population ! Zone.Population.Join(avatar) @@ -344,6 +353,7 @@ class ZonePopulationTest extends ActorTest { val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) @@ -364,10 +374,12 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val avatar = Avatar(2, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val player = Player(avatar) + player.GUID = PlanetSideGUID(1) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) zone.Population ! Zone.Population.Join(avatar) - zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) + zone.Population ! Zone.Population.Spawn(avatar, player, null) expectNoMessage(Duration.create(100, "ms")) assert(zone.Players.size == 1) @@ -388,6 +400,7 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val player = Player(Avatar(3, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player.GUID = PlanetSideGUID(1) player.Release zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) @@ -404,6 +417,7 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val player = Player(Avatar(4, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player.GUID = PlanetSideGUID(1) player.Release zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) @@ -422,10 +436,13 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val player1 = Player(Avatar(5, "Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player1.GUID = PlanetSideGUID(1) player1.Release val player2 = Player(Avatar(6, "Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player2.GUID = PlanetSideGUID(2) player2.Release val player3 = Player(Avatar(7, "Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player3.GUID = PlanetSideGUID(3) player3.Release zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds) @@ -450,6 +467,7 @@ class ZonePopulationTest extends ActorTest { override def SetupNumberPools() = {} } val player = Player(Avatar(8, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) + player.GUID = PlanetSideGUID(1) //player.Release !!important zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) expectNoMessage(200 milliseconds)