more name feature tests

This commit is contained in:
Moritz Zwerger 2023-11-07 10:11:29 +01:00
parent 3b418312d6
commit 82ee6b270c
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -14,6 +14,7 @@
package de.bixilon.minosoft.gui.rendering.entities.feature.text.name package de.bixilon.minosoft.gui.rendering.entities.feature.text.name
import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kotlinglm.vec3.Vec3d
import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.observer.DataObserver
import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
import de.bixilon.minosoft.camera.target.targets.EntityTarget import de.bixilon.minosoft.camera.target.targets.EntityTarget
@ -22,9 +23,12 @@ import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.data.entities.entities.animal.Pig import de.bixilon.minosoft.data.entities.entities.animal.Pig
import de.bixilon.minosoft.data.entities.entities.player.RemotePlayerEntity import de.bixilon.minosoft.data.entities.entities.player.RemotePlayerEntity
import de.bixilon.minosoft.data.registries.entities.EntityFactory import de.bixilon.minosoft.data.registries.entities.EntityFactory
import de.bixilon.minosoft.data.text.TextComponent
import de.bixilon.minosoft.gui.rendering.entities.EntityRendererTestUtil.create import de.bixilon.minosoft.gui.rendering.entities.EntityRendererTestUtil.create
import de.bixilon.minosoft.gui.rendering.entities.feature.text.BillbaordTextTestUtil.assertEmpty import de.bixilon.minosoft.gui.rendering.entities.feature.text.BillbaordTextTestUtil.assertEmpty
import de.bixilon.minosoft.gui.rendering.entities.feature.text.BillbaordTextTestUtil.assertText import de.bixilon.minosoft.gui.rendering.entities.feature.text.BillbaordTextTestUtil.assertText
import org.testng.Assert.assertNotEquals
import org.testng.Assert.assertSame
import org.testng.annotations.Test import org.testng.annotations.Test
@Test(groups = ["entities", "rendering"]) @Test(groups = ["entities", "rendering"])
@ -39,7 +43,7 @@ class EntityNameFeatureTest {
} }
private fun EntityNameFeature.customName(name: Any?) { private fun EntityNameFeature.customName(name: Any?) {
renderer.entity.data[Entity.CUSTOM_NAME_VISIBLE_DATA] = name renderer.entity.data[Entity.CUSTOM_NAME_DATA] = name
} }
private fun EntityNameFeature.isNameVisible(visible: Boolean) { private fun EntityNameFeature.isNameVisible(visible: Boolean) {
@ -58,7 +62,7 @@ class EntityNameFeatureTest {
private fun EntityNameFeature.setTargeted(target: Boolean = true, distance: Double = 1.0) { private fun EntityNameFeature.setTargeted(target: Boolean = true, distance: Double = 1.0) {
val target = if (target) EntityTarget(Vec3d(0, 0, 0), distance, Directions.DOWN, renderer.entity) else null val target = if (target) EntityTarget(Vec3d(0, 0, 0), distance, Directions.DOWN, renderer.entity) else null
renderer.renderer.connection.camera.target::target.forceSet(DataObserver(target))) renderer.renderer.connection.camera.target::target.forceSet(DataObserver(target))
} }
private fun EntityNameFeature.updateName() { private fun EntityNameFeature.updateName() {
@ -74,39 +78,64 @@ class EntityNameFeatureTest {
fun `animal with custom name set`() { fun `animal with custom name set`() {
val name = create(Pig) val name = create(Pig)
name.updateName()
name.customName("Pepper") name.customName("Pepper")
name.updateName()
name.assertEmpty() name.assertEmpty()
} }
fun `correct animal name`() {
val name = create(Pig)
val text = TextComponent("Pepper:")
name.customName(text)
name.updateName()
assertSame(name.text, text) // TODO: verify visibility
}
fun `animal with custom name visible`() { fun `animal with custom name visible`() {
val name = create(Pig) val name = create(Pig)
name.updateName()
name.customName("Pepper") name.customName("Pepper")
name.isNameVisible(true) name.isNameVisible(true)
name.updateName()
name.assertText() // TODO: verify name.assertText() // TODO: verify
} }
fun `targeted animal without custom name visible`() { fun `targeted animal without custom name visible`() {
val name = create(Pig) val name = create(Pig)
name.updateName()
name.customName("Pepper") name.customName("Pepper")
name.setTargeted() name.setTargeted()
name.updateName()
name.assertText() // TODO: verify name.assertText() // TODO: verify
} }
fun `targeted but oor animal without custom name visible`() { fun `targeted but oor animal without custom name visible`() {
val name = create(Pig) val name = create(Pig)
name.updateName()
name.customName("Pepper") name.customName("Pepper")
name.setTargeted(distance = 10.0) name.setTargeted(distance = 10.0)
name.updateName()
name.assertText() // TODO: verify name.assertText() // TODO: verify
} }
fun `remote player entity`() { fun `remote player entity`() {
val name = create(RemotePlayerEntity) val name = create(RemotePlayerEntity)
name.updateName() name.updateName()
name.assertEmpty() name.assertText()
}
fun `remote player not using custom name`() {
val name = create(RemotePlayerEntity)
val text = TextComponent("Me")
name.customName(text)
name.updateName()
assertNotEquals(name.text, text)
}
fun `remote player using tab name`() {
val name = create(RemotePlayerEntity)
val additional = name.renderer.entity.unsafeCast<RemotePlayerEntity>().additional
val text = TextComponent("Me")
additional.displayName = text
name.updateName()
assertSame(name.text, text)
} }