diff options
author | Emil Kantis <e.kantis@gmail.com> | 2024-01-24 14:47:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-24 14:47:59 +0100 |
commit | 8a3ed23827c34920f6cd191c1e1806f2128ad50e (patch) | |
tree | fef644526404a16c53dfc858b9d0c5269aadfee4 /formats/json-tests/commonTest/src/kotlinx/serialization | |
parent | b3f6e0f5405ab81c354ccaeeb2cc13ba278e4bfa (diff) | |
download | kotlinx.serialization-8a3ed23827c34920f6cd191c1e1806f2128ad50e.tar.gz |
Add kebab-case naming strategy (#2531)
Diffstat (limited to 'formats/json-tests/commonTest/src/kotlinx/serialization')
-rw-r--r-- | formats/json-tests/commonTest/src/kotlinx/serialization/features/JsonNamingStrategyTest.kt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/features/JsonNamingStrategyTest.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/features/JsonNamingStrategyTest.kt index 28a4d121..9e2cf1d4 100644 --- a/formats/json-tests/commonTest/src/kotlinx/serialization/features/JsonNamingStrategyTest.kt +++ b/formats/json-tests/commonTest/src/kotlinx/serialization/features/JsonNamingStrategyTest.kt @@ -103,6 +103,52 @@ class JsonNamingStrategyTest : JsonTestBase() { } } + @Test + fun testKebabCaseStrategy() { + fun apply(name: String) = + JsonNamingStrategy.KebabCase.serialNameForJson(String.serializer().descriptor, 0, name) + + val cases = mapOf<String, String>( + "" to "", + "_" to "_", + "-" to "-", + "___" to "___", + "---" to "---", + "a" to "a", + "A" to "a", + "-1" to "-1", + "-a" to "-a", + "-A" to "-a", + "property" to "property", + "twoWords" to "two-words", + "threeDistinctWords" to "three-distinct-words", + "ThreeDistinctWords" to "three-distinct-words", + "Oneword" to "oneword", + "camel-Case-WithDashes" to "camel-case-with-dashes", + "_many----dashes--" to "_many----dashes--", + "URLmapping" to "ur-lmapping", + "URLMapping" to "url-mapping", + "IOStream" to "io-stream", + "IOstream" to "i-ostream", + "myIo2Stream" to "my-io2-stream", + "myIO2Stream" to "my-io2-stream", + "myIO2stream" to "my-io2stream", + "myIO2streamMax" to "my-io2stream-max", + "InURLBetween" to "in-url-between", + "myHTTP2APIKey" to "my-http2-api-key", + "myHTTP2fastApiKey" to "my-http2fast-api-key", + "myHTTP23APIKey" to "my-http23-api-key", + "myHttp23ApiKey" to "my-http23-api-key", + "theWWW" to "the-www", + "theWWW-URL-xxx" to "the-www-url-xxx", + "hasDigit123AndPostfix" to "has-digit123-and-postfix" + ) + + cases.forEach { (input, expected) -> + assertEquals(expected, apply(input)) + } + } + @Serializable data class DontUseOriginal(val testCase: String) |