diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/entities/feature/text/name/EntityNameFeatureTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/entities/feature/text/name/EntityNameFeatureTest.kt index af0d66f8d..5dca80191 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/entities/feature/text/name/EntityNameFeatureTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/entities/feature/text/name/EntityNameFeatureTest.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.gui.rendering.entities.feature.text.name import de.bixilon.kotlinglm.vec3.Vec3d +import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.reflection.ReflectionUtil.forceSet 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.player.RemotePlayerEntity 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.feature.text.BillbaordTextTestUtil.assertEmpty 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 @Test(groups = ["entities", "rendering"]) @@ -39,7 +43,7 @@ class EntityNameFeatureTest { } 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) { @@ -58,7 +62,7 @@ class EntityNameFeatureTest { 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 - renderer.renderer.connection.camera.target::target.forceSet(DataObserver(target))) + renderer.renderer.connection.camera.target::target.forceSet(DataObserver(target)) } private fun EntityNameFeature.updateName() { @@ -74,39 +78,64 @@ class EntityNameFeatureTest { fun `animal with custom name set`() { val name = create(Pig) - name.updateName() name.customName("Pepper") + name.updateName() 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`() { val name = create(Pig) - name.updateName() name.customName("Pepper") name.isNameVisible(true) + name.updateName() name.assertText() // TODO: verify } fun `targeted animal without custom name visible`() { val name = create(Pig) - name.updateName() name.customName("Pepper") name.setTargeted() + name.updateName() name.assertText() // TODO: verify } fun `targeted but oor animal without custom name visible`() { val name = create(Pig) - name.updateName() name.customName("Pepper") name.setTargeted(distance = 10.0) + name.updateName() name.assertText() // TODO: verify } fun `remote player entity`() { val name = create(RemotePlayerEntity) 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().additional + val text = TextComponent("Me") + additional.displayName = text + name.updateName() + assertSame(name.text, text) }