chat component test: proper error messages

This commit is contained in:
Bixilon 2023-02-27 09:25:22 +01:00
parent 2bcc7d4fb1
commit eef7d6ce1d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 41 additions and 29 deletions

View File

@ -199,6 +199,8 @@ open class TextComponent(
color?.let { json["color"] = ChatColors.NAME_MAP.getKey(it) ?: it.toString() } color?.let { json["color"] = ChatColors.NAME_MAP.getKey(it) ?: it.toString() }
// TODO: hover, click event
return json return json
} }

View File

@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.text.events.hover.TextHoverEvent
import de.bixilon.minosoft.data.text.formatting.color.ChatColors import de.bixilon.minosoft.data.text.formatting.color.ChatColors
import de.bixilon.minosoft.data.text.formatting.color.RGBColor.Companion.asColor import de.bixilon.minosoft.data.text.formatting.color.RGBColor.Companion.asColor
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.opentest4j.AssertionFailedError
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertSame import kotlin.test.assertSame
@ -124,59 +125,35 @@ internal class ChatComponentTest {
@Test @Test
fun testSimpleJsonReading() { fun testSimpleJsonReading() {
val expected = BaseComponent( val expected = TextComponent("Test")
parts = arrayOf(
TextComponent("Test"),
)
)
val actual = """{"text":"Test"}""".chat() val actual = """{"text":"Test"}""".chat()
assertEquals(expected, actual) assertEquals(expected, actual)
} }
@Test @Test
fun testColorJsonReading() { fun testColorJsonReading() {
val expected = BaseComponent( val expected = TextComponent("Test").color(ChatColors.YELLOW)
parts = arrayOf(
TextComponent("Test").color(ChatColors.YELLOW),
)
)
val actual = """{"text":"Test", "color": "yellow"}""".chat() val actual = """{"text":"Test", "color": "yellow"}""".chat()
assertEquals(expected, actual) assertEquals(expected, actual)
} }
@Test @Test
fun testHexColor() { fun testHexColor() {
val expected = BaseComponent( val expected = TextComponent("Test").color("#123456".asColor())
parts = arrayOf(
TextComponent("Test").color("#123456".asColor()),
)
)
val actual = """{"text":"Test", "color": "#123456"}""".chat() val actual = """{"text":"Test", "color": "#123456"}""".chat()
assertEquals(expected, actual) assertEquals(expected, actual)
} }
@Test @Test
fun testJsonArray() { fun testJsonArray() {
val expected = BaseComponent( val expected = TextComponent("Test")
parts = arrayOf(
BaseComponent(
parts = arrayOf(
TextComponent("Test"),
)
)
)
)
val actual = """[{"text":"Test"}]""".chat() val actual = """[{"text":"Test"}]""".chat()
assertEquals(expected, actual) assertEquals(expected, actual)
} }
@Test @Test
fun testJsonWithWhitespaces() { fun testJsonWithWhitespaces() {
val expected = BaseComponent( val expected = TextComponent("Test")
parts = arrayOf(
TextComponent("Test"),
)
)
val actual = """ {"text":"Test"}""".chat() val actual = """ {"text":"Test"}""".chat()
assertEquals(expected, actual) assertEquals(expected, actual)
} }
@ -250,4 +227,37 @@ internal class ChatComponentTest {
assertEquals(expected, component) assertEquals(expected, component)
} }
private fun assertEquals(expected: ChatComponent, actual: ChatComponent) {
when (expected) {
is BaseComponent -> {
if (actual !is BaseComponent) throw AssertionFailedError("Type mismatch", "BaseComponent", actual::class.java.name)
if (expected.parts.size != actual.parts.size) throw AssertionFailedError("Count of parts does not match", expected.parts, actual.parts)
for (index in expected.parts.indices) {
val first = expected.parts[index]
val second = actual.parts[index]
assertEquals(first, second)
}
}
is TextComponent -> {
if (actual !is TextComponent) throw AssertionFailedError("Type mismatch", "TextComponent", actual::class.java.name)
if (expected.message != actual.message) {
throw AssertionFailedError("Message mismatch", expected.message, actual.message)
}
if (expected.clickEvent != actual.clickEvent) {
throw AssertionFailedError("Click event mismatch: $expected", expected.clickEvent, actual.clickEvent)
}
if (expected.hoverEvent != actual.hoverEvent) {
throw AssertionFailedError("Click event mismatch: $expected", expected.hoverEvent, actual.hoverEvent)
}
assertEquals(expected as Any, actual)
}
else -> assertEquals(expected as Any, actual)
}
}
} }