--- /dev/null
+package net.pterodactylus.rhynodge.states
+
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.spotify.hamcrest.jackson.JsonMatchers.jsonObject
+import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Test
+import java.io.StringWriter
+
+class JsonStateTest {
+
+ @Test
+ fun `json state can be serialized`() {
+ val jsonState = JsonState(jsonObject)
+ StringWriter().use { stringWriter ->
+ objectMapper.writeValue(stringWriter, jsonState)
+ val deserializedState = objectMapper.readValue(stringWriter.toString(), AbstractState::class.java) as JsonState
+ assertThat(deserializedState.jsonNode, jsonObject(jsonObject))
+ }
+ }
+
+ private val jsonObject = objectMapper.createObjectNode()
+ .put("state", "foo")
+ .also {
+ it.putArray("list")
+ .add("value1")
+ .add("value2")
+ }.also {
+ it.putObject("object")
+ .put("foo", true)
+ .put("bar", "yes")
+ .put("baz", 1.5)
+ .putNull("qux")
+ }
+
+}
+
+private val objectMapper = jacksonObjectMapper()