8000 Test case for issue #63 · fixpoint/python-betterproto@71737cf · GitHub
[go: up one dir, main page]

Skip to content

Commit 71737cf

Browse files
Test case for issue danielgtaylor#63
1 parent 659ddd9 commit 71737cf

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"signal": "PASS"
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"signal": "RESIGN"
3+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"move": {
3+
"x": 2,
4+
"y": 3
5+
}
6+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
syntax = "proto3";
2+
3+
message Test {
4+
oneof action {
5+
Signal signal = 1;
6+
Move move = 2;
7+
}
8+
}
9+
10+
enum Signal {
11+
PASS = 0;
12+
RESIGN = 1;
13+
}
14+
15+
message Move {
16+
int32 x = 1;
17+
int32 y = 2;
18+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import pytest
2+
3+
import betterproto
4+
from betterproto.tests.output_betterproto.oneof_enum.oneof_enum import (
5+
Move,
6+
Signal,
7+
Test,
8+
)
9+
from betterproto.tests.util import get_test_case_json_data
10+
11+
12+
@pytest.mark.xfail
13+
def test_which_one_of_returns_enum_with_default_value():
14+
"""
15+
returns first field when it is enum and set with default value
16+
"""
17+
message = Test()
18+
message.from_json(get_test_case_json_data("oneof_enum", "oneof_enum-enum-0.json"))
19+
assert message.move is None
20+
assert message.signal == Signal.PASS
21+
assert betterproto.which_one_of(message, "action") == ("signal", Signal.PASS)
22+
23+
24+
@pytest.mark.xfail
25+
def test_which_one_of_returns_enum_with_non_default_value():
26+
"""
27+
returns first field when it is enum and set with non default value
28+
"""
29+
message = Test()
30+
message.from_json(get_test_case_json_data("oneof_enum", "oneof_enum-enum-1.json"))
31+
assert message.move is None
32+
assert message.signal == Signal.PASS
33+
assert betterproto.which_one_of(message, "action") == ("signal", Signal.RESIGN)
34+
35+
36+
@pytest.mark.xfail
37+
def test_which_one_of_returns_second_field_when_set():
38+
message = Test()
39+
message.from_json(get_test_case_json_data("oneof_enum"))
40+
assert message.move == Move(x=2, y=3)
41+
assert message.signal == 0
42+
assert betterproto.which_one_of(message, "action") == ("move", Move(x=2, y=3))

0 commit comments

Comments
 (0)
0