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
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<RemotePlayerEntity>().additional
val text = TextComponent("Me")
additional.displayName = text
name.updateName()
assertSame(name.text, text)
}