Skip to content

Commit eb832f1

Browse files
lion7gklijs
authored andcommitted
Add tests for more formats
1 parent 9cf371f commit eb832f1

File tree

6 files changed

+149
-27
lines changed

6 files changed

+149
-27
lines changed

kotlin/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@
5959
<groupId>org.jetbrains.kotlin</groupId>
6060
<artifactId>kotlin-maven-plugin</artifactId>
6161
</plugin>
62+
<plugin>
63+
<groupId>org.apache.maven.plugins</groupId>
64+
<artifactId>maven-compiler-plugin</artifactId>
65+
<configuration>
66+
<source>17</source>
67+
<target>17</target>
68+
</configuration>
69+
</plugin>
6270
</plugins>
6371
</build>
6472

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.axonframework.extensions.kotlin.serializer
2+
3+
import kotlinx.serialization.ExperimentalSerializationApi
4+
import kotlinx.serialization.cbor.Cbor
5+
import org.axonframework.extensions.kotlin.serialization.KotlinSerializer
6+
import org.junit.jupiter.api.Assertions.assertEquals
7+
import org.junit.jupiter.api.Test
8+
import java.util.HexFormat
9+
10+
class KotlinSerializerCborTest {
11+
@OptIn(ExperimentalSerializationApi::class)
12+
private val sut = KotlinSerializer(Cbor)
13+
private val format = HexFormat.of()
14+
15+
@Test
16+
fun testStandardList() {
17+
val items = listOf(
18+
TypeOne("a", 1),
19+
TypeOne("b", 2),
20+
)
21+
val actual = sut.serialize(items, ByteArray::class.java)
22+
val expected = "9fbf646e616d65616163666f6f01ffbf646e616d65616263666f6f02ffff"
23+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.TypeOne", actual.type.name)
24+
assertEquals(expected, format.formatHex(actual.data))
25+
}
26+
27+
@Test
28+
fun testPolymorphicList() {
29+
val items = listOf(
30+
TypeOne("a", 1),
31+
TypeOne("b", 2),
32+
TypeTwo("c", listOf(3, 4)),
33+
TypeOne("d", 5),
34+
)
35+
val actual = sut.serialize(items, ByteArray::class.java)
36+
val expected = "9f9f636f6e65bf646e616d65616163666f6f01ffff9f636f6e65bf646e616d65616263666f6f02ffff9f6374776fbf646e616d656163636261729f0304ffffff9f636f6e65bf646e616d65616463666f6f05ffffff"
37+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.SuperType", actual.type.name)
38+
assertEquals(expected, format.formatHex(actual.data))
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package org.axonframework.extensions.kotlin.serializer
22

3-
import kotlinx.serialization.SerialName
4-
import kotlinx.serialization.Serializable
53
import kotlinx.serialization.json.Json
64
import org.axonframework.extensions.kotlin.serialization.KotlinSerializer
75
import org.junit.jupiter.api.Assertions.assertEquals
86
import org.junit.jupiter.api.Test
97

10-
class KotlinSerializerTest {
8+
class KotlinSerializerJsonTest {
119
private val sut = KotlinSerializer(Json)
1210

1311
@Test
@@ -18,7 +16,7 @@ class KotlinSerializerTest {
1816
)
1917
val actual = sut.serialize(items, String::class.java)
2018
val expected = """[{"name":"a","foo":1},{"name":"b","foo":2}]"""
21-
assertEquals("List:org.axonframework.extensions.kotlin.serializer.KotlinSerializerTest\$TypeOne", actual.type.name)
19+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.TypeOne", actual.type.name)
2220
assertEquals(expected, actual.data)
2321
}
2422

@@ -32,27 +30,7 @@ class KotlinSerializerTest {
3230
)
3331
val actual = sut.serialize(items, String::class.java)
3432
val expected = """[{"type":"one","name":"a","foo":1},{"type":"one","name":"b","foo":2},{"type":"two","name":"c","bar":[3,4]},{"type":"one","name":"d","foo":5}]"""
35-
assertEquals("List:org.axonframework.extensions.kotlin.serializer.KotlinSerializerTest\$SuperType", actual.type.name)
33+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.SuperType", actual.type.name)
3634
assertEquals(expected, actual.data)
3735
}
38-
39-
@Serializable
40-
sealed interface SuperType {
41-
val name: String
42-
}
43-
44-
@Serializable
45-
@SerialName("one")
46-
data class TypeOne(
47-
override val name: String,
48-
val foo: Int,
49-
) : SuperType
50-
51-
@Serializable
52-
@SerialName("two")
53-
data class TypeTwo(
54-
override val name: String,
55-
val bar: List<Int>,
56-
) : SuperType
57-
5836
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.axonframework.extensions.kotlin.serializer
2+
3+
import kotlinx.serialization.ExperimentalSerializationApi
4+
import kotlinx.serialization.protobuf.ProtoBuf
5+
import org.axonframework.extensions.kotlin.serialization.KotlinSerializer
6+
import org.junit.jupiter.api.Assertions.assertEquals
7+
import org.junit.jupiter.api.Test
8+
import java.util.HexFormat
9+
10+
class KotlinSerializerProtobufTest {
11+
@OptIn(ExperimentalSerializationApi::class)
12+
private val sut = KotlinSerializer(ProtoBuf)
13+
private val format = HexFormat.of()
14+
15+
@Test
16+
fun testStandardList() {
17+
val items = listOf(
18+
TypeOne("a", 1),
19+
TypeOne("b", 2),
20+
)
21+
val actual = sut.serialize(items, ByteArray::class.java)
22+
val expected = "02050a01611001050a01621002"
23+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.TypeOne", actual.type.name)
24+
assertEquals(expected, format.formatHex(actual.data))
25+
}
26+
27+
@Test
28+
fun testPolymorphicList() {
29+
val items = listOf(
30+
TypeOne("a", 1),
31+
TypeOne("b", 2),
32+
TypeTwo("c", listOf(3, 4)),
33+
TypeOne("d", 5),
34+
)
35+
val actual = sut.serialize(items, ByteArray::class.java)
36+
val expected = "040c0a036f6e6512050a016110010c0a036f6e6512050a016210020e0a0374776f12070a0163100310040c0a036f6e6512050a01641005"
37+
assertEquals("List:org.axonframework.extensions.kotlin.serializer.SuperType", actual.type.name)
38+
assertEquals(expected, format.formatHex(actual.data))
39+
}
40+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.axonframework.extensions.kotlin.serializer
2+
3+
import kotlinx.serialization.SerialName
4+
import kotlinx.serialization.Serializable
5+
6+
@Serializable
7+
sealed interface SuperType {
8+
val name: String
9+
}
10+
11+
@Serializable
12+
@SerialName("one")
13+
data class TypeOne(
14+
override val name: String,
15+
val foo: Int,
16+
) : SuperType
17+
18+
@Serializable
19+
@SerialName("two")
20+
data class TypeTwo(
21+
override val name: String,
22+
val bar: List<Int>,
23+
) : SuperType

pom.xml

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
</dependency>
119119
<dependency>
120120
<groupId>org.jetbrains.kotlinx</groupId>
121-
<artifactId>kotlinx-serialization-json</artifactId>
121+
<artifactId>kotlinx-serialization-core</artifactId>
122122
<version>${kotlin-serialization.version}</version>
123123
</dependency>
124124
<!-- Testing -->
@@ -145,6 +145,24 @@
145145
<version>${slf4j.version}</version>
146146
<scope>test</scope>
147147
</dependency>
148+
<dependency>
149+
<groupId>org.jetbrains.kotlinx</groupId>
150+
<artifactId>kotlinx-serialization-json</artifactId>
151+
<version>${kotlin-serialization.version}</version>
152+
<scope>test</scope>
153+
</dependency>
154+
<dependency>
155+
<groupId>org.jetbrains.kotlinx</groupId>
156+
<artifactId>kotlinx-serialization-cbor</artifactId>
157+
<version>${kotlin-serialization.version}</version>
158+
<scope>test</scope>
159+
</dependency>
160+
<dependency>
161+
<groupId>org.jetbrains.kotlinx</groupId>
162+
<artifactId>kotlinx-serialization-protobuf</artifactId>
163+
<version>${kotlin-serialization.version}</version>
164+
<scope>test</scope>
165+
</dependency>
148166
</dependencies>
149167
</dependencyManagement>
150168

@@ -165,7 +183,7 @@
165183
</dependency>
166184
<dependency>
167185
<groupId>org.jetbrains.kotlinx</groupId>
168-
<artifactId>kotlinx-serialization-json</artifactId>
186+
<artifactId>kotlinx-serialization-core</artifactId>
169187
</dependency>
170188
<!-- Testing -->
171189
<dependency>
@@ -188,6 +206,21 @@
188206
<artifactId>slf4j-simple</artifactId>
189207
<scope>test</scope>
190208
</dependency>
209+
<dependency>
210+
<groupId>org.jetbrains.kotlinx</groupId>
211+
<artifactId>kotlinx-serialization-json</artifactId>
212+
<scope>test</scope>
213+
</dependency>
214+
<dependency>
215+
<groupId>org.jetbrains.kotlinx</groupId>
216+
<artifactId>kotlinx-serialization-cbor</artifactId>
217+
<scope>test</scope>
218+
</dependency>
219+
<dependency>
220+
<groupId>org.jetbrains.kotlinx</groupId>
221+
<artifactId>kotlinx-serialization-protobuf</artifactId>
222+
<scope>test</scope>
223+
</dependency>
191224
<dependency>
192225
<!-- Not part of Java 8 by default. Adding it as a dependency makes it compatible with Java 8 -->
193226
<groupId>javax.xml.bind</groupId>

0 commit comments

Comments
 (0)