blob: c369d6ebbcfc884ea7c2f1c82654022c4b326d4f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/*
* Copyright 2017-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
package kotlinx.serialization.protobuf.conformance
import com.google.protobuf_test_messages.proto3.*
import kotlinx.serialization.*
import kotlinx.serialization.protobuf.*
import kotlin.test.*
@Serializable
data class KTestMessagesProto3Message(
@ProtoNumber(18) val optionalNestedMessage: KNestedMessage? = null,
@ProtoNumber(19) val optionalForeignMessage: KForeignMessage? = null,
) {
@Serializable
data class KNestedMessage(
@ProtoNumber(1) val a: Int = 0,
@ProtoNumber(2) val corecursive: KTestMessagesProto3Message? = null,
) {
fun toProto(): TestMessagesProto3.TestAllTypesProto3.NestedMessage =
TestMessagesProto3.TestAllTypesProto3.NestedMessage.parseFrom(
ProtoBuf.encodeToByteArray(this)
)
}
}
@Serializable
data class KForeignMessage(
@ProtoNumber(1) val c: Int = 0,
) {
fun toProto(): TestMessagesProto3.ForeignMessage =
TestMessagesProto3.ForeignMessage.parseFrom(
ProtoBuf.encodeToByteArray(this)
)
}
class Proto3MessageTest {
@Test
fun default() {
val message = KTestMessagesProto3Message(
optionalNestedMessage = KTestMessagesProto3Message.KNestedMessage(
a = 150,
corecursive = KTestMessagesProto3Message(
optionalNestedMessage = KTestMessagesProto3Message.KNestedMessage(
a = 42,
)
)
),
optionalForeignMessage = KForeignMessage(
c = 150,
)
)
val bytes = ProtoBuf.encodeToByteArray(message)
val restored = TestMessagesProto3.TestAllTypesProto3.parseFrom(bytes)
assertEquals(message.optionalNestedMessage?.a, restored.optionalNestedMessage.a)
assertEquals(
message.optionalNestedMessage?.corecursive?.optionalNestedMessage?.a,
restored.optionalNestedMessage.corecursive.optionalNestedMessage.a
)
assertEquals(message.optionalForeignMessage?.c, restored.optionalForeignMessage.c)
}
}
|