Skip to content

Commit f39450a

Browse files
committed
Test multiplatform
1 parent 626e479 commit f39450a

File tree

8 files changed

+720
-136
lines changed

8 files changed

+720
-136
lines changed

annotations/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ plugins {
44

55
kotlin {
66
jvm()
7+
js(IR) {
8+
nodejs()
9+
}
710
}

kotlin-js-store/yarn.lock

Lines changed: 567 additions & 0 deletions
Large diffs are not rendered by default.

processor/src/main/kotlin/GenerateEnumSerializerProcessor.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import kotlinx.serialization.encoding.Encoder
3838

3939
class GenerateEnumSerializerProcessor(environment: SymbolProcessorEnvironment) : SymbolProcessor {
4040
private val codeGenerator = environment.codeGenerator
41-
private val logger = environment.logger
4241

4342
@OptIn(ExperimentalSerializationApi::class, KotlinPoetKspPreview::class, KspExperimental::class)
4443
override fun process(resolver: Resolver): List<KSAnnotated> {

settings.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ pluginManagement {
1818
}
1919

2020
dependencyResolutionManagement {
21-
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
2221
repositories {
2322
mavenCentral()
2423
}

test/build.gradle.kts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,49 @@
11
plugins {
2-
kotlin("jvm")
2+
kotlin("multiplatform")
33
kotlin("plugin.serialization")
44
alias(libs.plugins.ksp)
55
}
66

77
kotlin {
8-
sourceSets.main {
9-
kotlin.srcDir("build/generated/ksp/main/kotlin")
8+
jvm()
9+
js(IR) {
10+
nodejs()
1011
}
11-
sourceSets.test {
12-
kotlin.srcDir("build/generated/ksp/test/kotlin")
12+
13+
sourceSets {
14+
getByName("commonMain") {
15+
dependencies {
16+
compileOnly(projects.annotations)
17+
implementation(libs.kotlinx.serialization)
18+
}
19+
}
20+
21+
getByName("commonTest") {
22+
dependencies {
23+
implementation(kotlin("test"))
24+
implementation(libs.kotlinx.serialization.json)
25+
}
26+
}
27+
28+
getByName("jvmTest") {
29+
dependencies {
30+
implementation(kotlin("test-junit5"))
31+
implementation(libs.junit.jupiter)
32+
}
33+
}
1334
}
14-
target {
35+
36+
targets.all {
1537
compilations.all {
1638
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
1739
}
1840
}
1941
}
2042

2143
dependencies {
22-
compileOnly(projects.annotations)
23-
implementation(libs.kotlinx.serialization)
24-
2544
ksp(projects.processor)
26-
27-
testImplementation(libs.junit.jupiter)
28-
testImplementation(libs.kotlinx.serialization.json)
2945
}
3046

31-
tasks.test {
47+
tasks.named<Test>("jvmTest") {
3248
useJUnitPlatform()
3349
}
File renamed without changes.
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
package com.github.ephemient.kotlinx.serialization.contrib.test
2+
3+
import kotlinx.serialization.decodeFromString
4+
import kotlinx.serialization.encodeToString
5+
import kotlinx.serialization.json.Json
6+
import kotlin.test.Test
7+
import kotlin.test.assertEquals
8+
9+
class ExampleTest {
10+
@Test
11+
fun testDefaultSerialization() {
12+
assertEquals("\"upper_camel_case\"", Json.encodeToString(Example.UpperCamelCase))
13+
assertEquals("\"upper_snake_case\"", Json.encodeToString(Example.UPPER_SNAKE_CASE))
14+
assertEquals("\"FORCE\"", Json.encodeToString(Example.Force))
15+
}
16+
17+
@Test
18+
fun testDefaultDeserialization() {
19+
assertEquals(Json.decodeFromString<Example>("\"upper_camel_case\""), Example.UpperCamelCase)
20+
assertEquals(Json.decodeFromString<Example>("\"upper_snake_case\""), Example.UPPER_SNAKE_CASE)
21+
assertEquals(Json.decodeFromString<Example>("\"FORCE\""), Example.Force)
22+
}
23+
24+
@Test
25+
fun testKebabCaseSerialization() {
26+
assertEquals("\"upper-camel-case\"", Json.encodeToString(ExampleKebabCaseEnumSerializer, Example.UpperCamelCase))
27+
assertEquals("\"upper-snake-case\"", Json.encodeToString(ExampleKebabCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
28+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleKebabCaseEnumSerializer, Example.Force))
29+
}
30+
31+
@Test
32+
fun testKebabCaseDeserialization() {
33+
assertEquals(Json.decodeFromString(ExampleKebabCaseEnumSerializer, "\"upper-camel-case\""), Example.UpperCamelCase)
34+
assertEquals(Json.decodeFromString(ExampleKebabCaseEnumSerializer, "\"upper-snake-case\""), Example.UPPER_SNAKE_CASE)
35+
assertEquals(Json.decodeFromString(ExampleKebabCaseEnumSerializer, "\"FORCE\""), Example.Force)
36+
}
37+
38+
@Test
39+
fun testLowerCamelCaseSerialization() {
40+
assertEquals("\"upperCamelCase\"", Json.encodeToString(ExampleLowerCamelCaseEnumSerializer, Example.UpperCamelCase))
41+
assertEquals("\"upperSnakeCase\"", Json.encodeToString(ExampleLowerCamelCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
42+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleLowerCamelCaseEnumSerializer, Example.Force))
43+
}
44+
45+
@Test
46+
fun testLowerCamelCaseDeserialization() {
47+
assertEquals(Json.decodeFromString(ExampleLowerCamelCaseEnumSerializer, "\"upperCamelCase\""), Example.UpperCamelCase)
48+
assertEquals(Json.decodeFromString(ExampleLowerCamelCaseEnumSerializer, "\"upperSnakeCase\""), Example.UPPER_SNAKE_CASE)
49+
assertEquals(Json.decodeFromString(ExampleLowerCamelCaseEnumSerializer, "\"FORCE\""), Example.Force)
50+
}
51+
52+
@Test
53+
fun testLowerCaseSerialization() {
54+
assertEquals("\"uppercamelcase\"", Json.encodeToString(ExampleLowerCaseEnumSerializer, Example.UpperCamelCase))
55+
assertEquals("\"uppersnakecase\"", Json.encodeToString(ExampleLowerCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
56+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleLowerCaseEnumSerializer, Example.Force))
57+
}
58+
59+
@Test
60+
fun testLowerCaseDeserialization() {
61+
assertEquals(Json.decodeFromString(ExampleLowerCaseEnumSerializer, "\"uppercamelcase\""), Example.UpperCamelCase)
62+
assertEquals(Json.decodeFromString(ExampleLowerCaseEnumSerializer, "\"uppersnakecase\""), Example.UPPER_SNAKE_CASE)
63+
assertEquals(Json.decodeFromString(ExampleLowerCaseEnumSerializer, "\"FORCE\""), Example.Force)
64+
}
65+
66+
@Test
67+
fun testLowerDotCaseSerialization() {
68+
assertEquals("\"upper.camel.case\"", Json.encodeToString(ExampleLowerDotCaseEnumSerializer, Example.UpperCamelCase))
69+
assertEquals("\"upper.snake.case\"", Json.encodeToString(ExampleLowerDotCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
70+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleLowerDotCaseEnumSerializer, Example.Force))
71+
}
72+
73+
@Test
74+
fun testLowerDotCaseDeserialization() {
75+
assertEquals(Json.decodeFromString(ExampleLowerDotCaseEnumSerializer, "\"upper.camel.case\""), Example.UpperCamelCase)
76+
assertEquals(Json.decodeFromString(ExampleLowerDotCaseEnumSerializer, "\"upper.snake.case\""), Example.UPPER_SNAKE_CASE)
77+
assertEquals(Json.decodeFromString(ExampleLowerDotCaseEnumSerializer, "\"FORCE\""), Example.Force)
78+
}
79+
80+
@Test
81+
fun testSnakeCaseSerialization() {
82+
assertEquals("\"upper_camel_case\"", Json.encodeToString(ExampleSnakeCaseEnumSerializer, Example.UpperCamelCase))
83+
assertEquals("\"upper_snake_case\"", Json.encodeToString(ExampleSnakeCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
84+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleSnakeCaseEnumSerializer, Example.Force))
85+
}
86+
87+
@Test
88+
fun testSnakeCaseDeserialization() {
89+
assertEquals(Json.decodeFromString(ExampleSnakeCaseEnumSerializer, "\"upper_camel_case\""), Example.UpperCamelCase)
90+
assertEquals(Json.decodeFromString(ExampleSnakeCaseEnumSerializer, "\"upper_snake_case\""), Example.UPPER_SNAKE_CASE)
91+
assertEquals(Json.decodeFromString(ExampleSnakeCaseEnumSerializer, "\"FORCE\""), Example.Force)
92+
}
93+
94+
@Test
95+
fun testUpperCamelCaseSerialization() {
96+
assertEquals("\"UpperCamelCase\"", Json.encodeToString(ExampleUpperCamelCaseEnumSerializer, Example.UpperCamelCase))
97+
assertEquals("\"UpperSnakeCase\"", Json.encodeToString(ExampleUpperCamelCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
98+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleUpperCamelCaseEnumSerializer, Example.Force))
99+
}
100+
101+
@Test
102+
fun testUpperCamelCaseDeserialization() {
103+
assertEquals(Json.decodeFromString(ExampleUpperCamelCaseEnumSerializer, "\"UpperCamelCase\""), Example.UpperCamelCase)
104+
assertEquals(Json.decodeFromString(ExampleUpperCamelCaseEnumSerializer, "\"UpperSnakeCase\""), Example.UPPER_SNAKE_CASE)
105+
assertEquals(Json.decodeFromString(ExampleUpperCamelCaseEnumSerializer, "\"FORCE\""), Example.Force)
106+
}
107+
108+
@Test
109+
fun testUpperSnakeCaseSerialization() {
110+
assertEquals("\"UPPER_CAMEL_CASE\"", Json.encodeToString(ExampleUpperSnakeCaseEnumSerializer, Example.UpperCamelCase))
111+
assertEquals("\"UPPER_SNAKE_CASE\"", Json.encodeToString(ExampleUpperSnakeCaseEnumSerializer, Example.UPPER_SNAKE_CASE))
112+
assertEquals("\"FORCE\"", Json.encodeToString(ExampleUpperSnakeCaseEnumSerializer, Example.Force))
113+
}
114+
115+
@Test
116+
fun testUpperSnakeCaseDeserialization() {
117+
assertEquals(Json.decodeFromString(ExampleUpperSnakeCaseEnumSerializer, "\"UPPER_CAMEL_CASE\""), Example.UpperCamelCase)
118+
assertEquals(Json.decodeFromString(ExampleUpperSnakeCaseEnumSerializer, "\"UPPER_SNAKE_CASE\""), Example.UPPER_SNAKE_CASE)
119+
assertEquals(Json.decodeFromString(ExampleUpperSnakeCaseEnumSerializer, "\"FORCE\""), Example.Force)
120+
}
121+
}

test/src/test/kotlin/ExampleTest.kt

Lines changed: 0 additions & 121 deletions
This file was deleted.

0 commit comments

Comments
 (0)