Skip to content

Commit ca70149

Browse files
committed
grpc-pb: Add test for enum in oneOf
Signed-off-by: Johannes Zottele <[email protected]>
1 parent 5f48bfb commit ca70149

File tree

3 files changed

+31
-17
lines changed

3 files changed

+31
-17
lines changed

grpc/grpc-core/src/commonTest/kotlin/kotlinx/rpc/grpc/pb/ProtosTest.kt

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -141,26 +141,40 @@ class ProtosTest {
141141

142142
@Test
143143
fun testOneOf() {
144-
val msg1 = OneOfMsg {
145-
field = OneOfMsg.Field.Sint(23)
144+
run {
145+
val msg = OneOfMsg {
146+
field = OneOfMsg.Field.Sint(23)
147+
}
148+
val decoded = encodeDecode(msg, OneOfMsgInternal.CODEC)
149+
assertEquals(OneOfMsg.Field.Sint(23), decoded.field)
150+
}
151+
152+
run {
153+
val msg = OneOfMsg {
154+
field = OneOfMsg.Field.Fixed(21u)
155+
}
156+
val decoded = encodeDecode(msg, OneOfMsgInternal.CODEC)
157+
assertEquals(OneOfMsg.Field.Fixed(21u), decoded.field)
146158
}
147-
val decoded1 = encodeDecode(msg1, OneOfMsgInternal.CODEC)
148-
assertEquals(OneOfMsg.Field.Sint(23), decoded1.field)
149159

150-
val msg2 = OneOfMsg {
151-
field = OneOfMsg.Field.Fixed(21u)
160+
run {
161+
val msg = OneOfMsg {
162+
field = OneOfMsg.Field.Other(Other { arg2 = "test" })
163+
}
164+
val decoded = encodeDecode(msg, OneOfMsgInternal.CODEC)
165+
assertIs<OneOfMsg.Field.Other>(decoded.field)
166+
assertNull((decoded.field as OneOfMsg.Field.Other).value.arg1)
167+
assertEquals("test", (decoded.field as OneOfMsg.Field.Other).value.arg2)
168+
assertNull((decoded.field as OneOfMsg.Field.Other).value.arg3)
152169
}
153-
val decoded2 = encodeDecode(msg2, OneOfMsgInternal.CODEC)
154-
assertEquals(OneOfMsg.Field.Fixed(21u), decoded2.field)
155170

156-
val msg3 = OneOfMsg {
157-
field = OneOfMsg.Field.Other(Other { arg2 = "test" })
171+
run {
172+
val msg = OneOfMsg {
173+
field = OneOfMsg.Field.Enum(MyEnum.ONE_SECOND)
174+
}
175+
val decoded = encodeDecode(msg, OneOfMsgInternal.CODEC)
176+
assertEquals(MyEnum.ONE, (decoded.field as OneOfMsg.Field.Enum).value)
158177
}
159-
val decoded3 = encodeDecode(msg3, OneOfMsgInternal.CODEC)
160-
assertIs<OneOfMsg.Field.Other>(decoded3.field)
161-
assertNull((decoded3.field as OneOfMsg.Field.Other).value.arg1)
162-
assertEquals("test", (decoded3.field as OneOfMsg.Field.Other).value.arg2)
163-
assertNull((decoded3.field as OneOfMsg.Field.Other).value.arg3)
164178
}
165179

166180
@Test
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import "sub_message.proto";
2+
import "enum.proto";
23

34
message OneOfMsg {
45
oneof field {
56
int32 sint = 2;
67
fixed64 fixed = 3;
78
test.submsg.Other other = 4;
9+
kotlinx.rpc.grpc.test.MyEnum enum = 5;
810
}
911
}

protoc-gen/src/main/kotlin/kotlinx/rpc/protobuf/ModelToKotlinCommonGenerator.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,6 @@ class ModelToKotlinCommonGenerator(
220220

221221
private fun CodeGenerator.generateCodecObject(declaration: MessageDeclaration) {
222222
val msgFqName = declaration.name.safeFullName()
223-
val downCastErrorStr =
224-
"\${value::class.simpleName} implements ${msgFqName}, which is prohibited."
225223
val sourceFqName = "kotlinx.io.Source"
226224
val bufferFqName = "kotlinx.io.Buffer"
227225
scope("val CODEC = object : kotlinx.rpc.grpc.internal.MessageCodec<$msgFqName>") {

0 commit comments

Comments
 (0)