diff options
-rw-r--r-- | core/src/main/kotlin/utilities/json.kt | 1 | ||||
-rw-r--r-- | core/src/test/kotlin/utilities/JsonKtTest.kt | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/core/src/main/kotlin/utilities/json.kt b/core/src/main/kotlin/utilities/json.kt index eb666d31..c082de2c 100644 --- a/core/src/main/kotlin/utilities/json.kt +++ b/core/src/main/kotlin/utilities/json.kt @@ -13,6 +13,7 @@ import com.fasterxml.jackson.core.type.TypeReference as JacksonTypeReference private val objectMapper = run { val module = SimpleModule().apply { addSerializer(FileSerializer) + addAbstractTypeMapping(Set::class.java, LinkedHashSet::class.java) } jacksonObjectMapper() .registerModule(module) diff --git a/core/src/test/kotlin/utilities/JsonKtTest.kt b/core/src/test/kotlin/utilities/JsonKtTest.kt index 301f4f5d..a1d432d9 100644 --- a/core/src/test/kotlin/utilities/JsonKtTest.kt +++ b/core/src/test/kotlin/utilities/JsonKtTest.kt @@ -1,5 +1,6 @@ package utilities +import org.jetbrains.dokka.utilities.parseJson import org.jetbrains.dokka.utilities.serializeAsCompactJson import org.jetbrains.dokka.utilities.serializeAsPrettyJson import kotlin.test.Test @@ -42,6 +43,20 @@ class JsonTest { assertEquals(expected, actual) } + @Test + fun `should keep order of Set after serialize and deserialize`() { + val testObject = SimpleTestSetDataClass( + someStringSet = setOf("Foo", "Bar", "ABC") + ) + val expected = testObject.someStringSet.toList() // ["Foo", "Bar", "ABC"] + + val jsonString = serializeAsCompactJson(testObject) + val parsedClass: SimpleTestSetDataClass = parseJson(jsonString) + val actual = parsedClass.someStringSet.toList() + + assertEquals(expected, actual) + } + /** * If the expected output was generated on Linux, but the tests are run under Windows, * the test might fail when comparing the strings due to different separators. @@ -55,3 +70,7 @@ data class SimpleTestDataClass( val someIntWithDefaultValue: Int = 42, val someDouble: Double ) + +data class SimpleTestSetDataClass( + val someStringSet: Set<String> +) |