parent
8b5dd6c1f8
commit
61d192e207
@ -2,6 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
package oneof;
|
package oneof;
|
||||||
|
|
||||||
|
message MixedDrink {
|
||||||
|
int32 shots = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message Test {
|
message Test {
|
||||||
oneof foo {
|
oneof foo {
|
||||||
int32 pitied = 1;
|
int32 pitied = 1;
|
||||||
@ -13,6 +17,7 @@ message Test {
|
|||||||
oneof bar {
|
oneof bar {
|
||||||
int32 drinks = 11;
|
int32 drinks = 11;
|
||||||
string bar_name = 12;
|
string bar_name = 12;
|
||||||
|
MixedDrink mixed_drink = 13;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
import betterproto
|
import betterproto
|
||||||
from tests.output_betterproto.oneof import Test
|
from tests.output_betterproto.oneof import (
|
||||||
|
MixedDrink,
|
||||||
|
Test,
|
||||||
|
)
|
||||||
from tests.output_betterproto_pydantic.oneof import Test as TestPyd
|
from tests.output_betterproto_pydantic.oneof import Test as TestPyd
|
||||||
from tests.util import get_test_case_json_data
|
from tests.util import get_test_case_json_data
|
||||||
|
|
||||||
@ -19,3 +24,20 @@ def test_which_name():
|
|||||||
def test_which_count_pyd():
|
def test_which_count_pyd():
|
||||||
message = TestPyd(pitier="Mr. T", just_a_regular_field=2, bar_name="a_bar")
|
message = TestPyd(pitier="Mr. T", just_a_regular_field=2, bar_name="a_bar")
|
||||||
assert betterproto.which_one_of(message, "foo") == ("pitier", "Mr. T")
|
assert betterproto.which_one_of(message, "foo") == ("pitier", "Mr. T")
|
||||||
|
|
||||||
|
|
||||||
|
def test_oneof_constructor_assign():
|
||||||
|
message = Test(mixed_drink=MixedDrink(shots=42))
|
||||||
|
field, value = betterproto.which_one_of(message, "bar")
|
||||||
|
assert field == "mixed_drink"
|
||||||
|
assert value.shots == 42
|
||||||
|
|
||||||
|
|
||||||
|
# Issue #305:
|
||||||
|
@pytest.mark.xfail
|
||||||
|
def test_oneof_nested_assign():
|
||||||
|
message = Test()
|
||||||
|
message.mixed_drink.shots = 42
|
||||||
|
field, value = betterproto.which_one_of(message, "bar")
|
||||||
|
assert field == "mixed_drink"
|
||||||
|
assert value.shots == 42
|
||||||
|
Loading…
x
Reference in New Issue
Block a user