def test_mapping_type():
    # type: () -> None
    s = SimpleProto3()
    s.map_scalar[5] = "abcd"
    assert s.map_scalar[5] == "abcd"

    s.map_message[5].a_bool = True
    assert s.map_message[5] == OuterMessage3(a_bool=True)

    assert s.map_message.get_or_create(6) == OuterMessage3()
    assert s.map_message[6] == OuterMessage3()
    assert s.map_message.get_or_create(6) == OuterMessage3()
Пример #2
0
def test_mapping_type() -> None:
    s = SimpleProto3()
    s.map_scalar[5] = "abcd"
    assert s.map_scalar[5] == "abcd"

    s.map_message[5].a_string = "hi"
    assert s.map_message[5] == OuterMessage3(a_string="hi")

    assert s.map_message.get_or_create(6) == OuterMessage3()
    assert s.map_message[6] == OuterMessage3()
    assert s.map_message.get_or_create(6) == OuterMessage3()

    s2 = SimpleProto3(map_scalar={5: "abcd"},
                      map_message={5: OuterMessage3(a_string="hi")})
Пример #3
0
def test_extensions_proto3() -> None:
    assert (MessageOptionsTestMsg.DESCRIPTOR.GetOptions().
            Extensions[scalar_option] == "Hello world!")
    assert SCALAR_OPTION_FIELD_NUMBER == 51234
    assert MessageOptionsTestMsg.DESCRIPTOR.GetOptions(
    ).Extensions[repeated_scalar_option] == ["A", "B", "C"]
    assert MessageOptionsTestMsg.DESCRIPTOR.GetOptions(
    ).Extensions[enum_option] == FOO3
    assert MessageOptionsTestMsg.DESCRIPTOR.GetOptions(
    ).Extensions[repeated_enum_option] == [FOO3, BAR3]
    assert MessageOptionsTestMsg.DESCRIPTOR.GetOptions(
    ).Extensions[msg_option] == OuterMessage3(a_string="Hello OuterMessage3")
    assert list(MessageOptionsTestMsg.DESCRIPTOR.GetOptions().
                Extensions[repeated_msg_option]) == [
                    OuterMessage3(a_string="Hello OuterMessage3 A"),
                    OuterMessage3(a_string="Hello OuterMessage3 B"),
                ]
Пример #4
0
map_val = 5
map_val = s7.map_scalar.get(0)  # E:2.7 E:3.8
map_val = s7.map_message.get(0)  # E:2.7 E:3.8
# Incorrect constructor type should error
s7 = SimpleProto3(map_scalar={"abcd": 5}, map_message={"abcd":
                                                       "abcd"})  # E:2.7 E:3.8

# Castable types are typed as their cast, not the base type
s8 = Simple1()
s8.user_id = 55  # E:2.7 E:3.8
s8.email = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[55] = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[UserId(55)] = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[55] = Email("*****@*****.**")  # E:2.7 E:3.8
s8 = Simple1(user_id=55,
             email="*****@*****.**",
             email_by_uid={55: "*****@*****.**"})  # E:2.7 E:3.8

# Should not reexport inner.proto, since it doesn't have public tag.
from testproto.reexport_pb2 import Inner  # E:2.7 E:3.8

# In proto2 - you can pass in None for primitive, but not in proto3
Simple2(a_string=None)
OuterMessage3(a_bool=None)  # E:2.7 E:3.8

# Repeated scalar fields are not assignable only extendable
s9 = Simple1()
s10 = Simple1()
s9.a_repeated_string = s10.a_repeated_string  # E:2.7 E:3.8
s9.rep_inner_enum = s10.rep_inner_enum  # E:2.7 E:3.8
Пример #5
0
s8.email = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[55] = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[UserId(55)] = "*****@*****.**"  # E:2.7 E:3.8
s8.email_by_uid[55] = Email("*****@*****.**")  # E:2.7 E:3.8
s8 = Simple1(
    user_id=55,  # E:2.7 E:3.8
    email="*****@*****.**",  # E:2.7 E:3.8
    email_by_uid={55: "*****@*****.**"},  # E:2.7 E:3.8
)

# Should not reexport inner.proto, since it doesn't have public tag.
from testproto.reexport_pb2 import Inner  # E:2.7 E:3.8

# In proto2 - you can pass in None for primitive, but not in proto3
Simple2(a_string=None)
OuterMessage3(a_string=None)  # E:2.7 E:3.8

# Repeated scalar fields are not assignable only extendable
s9 = Simple1()
s10 = Simple1()
s9.a_repeated_string = s10.a_repeated_string  # E:2.7 E:3.8
s9.rep_inner_enum = s10.rep_inner_enum  # E:2.7 E:3.8

# Some reserved keywored testing
# Confirm that messages and enums w/ reserved names type properly
PythonReservedKeywords().none.valid
PythonReservedKeywords().none.invalid  # E:2.7 E:3.8
# Enum should be int, even on enum with invalid name
assert PythonReservedKeywords(
).valid == PythonReservedKeywords.valid_in_finally
a_string = "hi"