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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#!/usr/bin/env python3
"""Test of test.proto, test.pl"""
# Assumes that swipl is on the execution path
import os
from test_pb2 import Scalars1, Repeated1, Packed1, MyEnum, KeyValue
from test2_pb2 import OneofMessage, MapMessage
scalars1a = Scalars1(
v_double = 1.5,
v_float = 2.5,
v_int32 = 3,
v_int64 = 4,
v_uint32 = 5,
v_uint64 = 6,
v_sint32 = 7,
v_sint64 = 8,
v_fixed32 = 9,
v_fixed64 = 10,
v_sfixed32 = 11,
v_sfixed64 = 12,
v_bool = False,
v_string = "écran 網目錦蛇",
v_bytes = b"\xc3\x28", # See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
v_enum = MyEnum.E1, # crashes with 3.6.1 -- needs 3.8.0 or later
v_utf8_codes = "écran 網目錦蛇",
v_key_value = KeyValue(key="reticulated python", value="網目錦蛇"),
)
# Test negative values - unsigned are caught by the Python runtime,
# so they get the values "10000000+..."
scalars1b = Scalars1(
v_double = -1.5,
v_float = -2.5,
v_int32 = -3,
v_int64 = -4,
v_uint32 = 5+10000000,
v_uint64 = 6+10000000,
v_sint32 = -7,
v_sint64 = -8,
v_fixed32 = 9+1000,
v_fixed64 = 10+1000,
v_sfixed32 = -11,
v_sfixed64 = -12,
v_bool = True,
v_string = "[àmímé níshíkíhéꜜbì] reticulated python",
v_bytes = b"\xf0\x28\x8c\x28", # See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
v_enum = MyEnum.AnotherEnum,
v_utf8_codes = "[àmímé níshíkíhéꜜbì] reticulated python",
v_key_value = KeyValue(key="foo", value=""),
)
# Default values for everything
scalars1c = Scalars1()
# Similar to Scalars1, but with additional values from Sclars2; and one test of empty list
repeated1a = Repeated1(
v_double = [ 1.5, 0.0, -1.5],
v_float = [ 2.5, 0.0, -2.5],
v_int32 = [ 3, -3, 555, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_int64 = [ 4, -4, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_uint32 = [ 5, 0, 4294967295], # out of range: 4294967296
v_uint64 = [ 6, 7, 8, 9, 0, 18446744073709551615], # out of range: 18446744073709551616
v_sint32 = [ 7, -7, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_sint64 = [ -8, 8, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_fixed32 = [ 9, 0, 4294967295], # out of range: 4294967296
v_fixed64 = [10, 0, 18446744073709551615], # out of range: 18446744073709551616,
v_sfixed32 = [-11, 11, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_sfixed64 = [-12, 12, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_bool = [False, True],
v_string = ["écran 網目錦蛇", "Hello world"],
v_bytes = [b"\xc3\x28", b"\x00\x01\x02"], # See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
v_enum = [MyEnum.E1, MyEnum.Enum2, MyEnum.E1], # TODO: MyEnum.NegEnum],
v_utf8_codes = ["écran 網目錦蛇", "Hello world"],
v_key_value = [KeyValue(key="foo", value=""),
KeyValue(key="àmímé níshíkíhéꜜbì", value="reticulated python")],
)
# Same values as Repeated1
packed1a = Packed1(
v_double = [ 1.5, 0.0, -1.5],
v_float = [ 2.5, 0.0, -2.5],
v_int32 = [ 3, -3, 555, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_int64 = [ 4, -4, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_uint32 = [ 5, 0, 4294967295], # out of range: 4294967296
v_uint64 = [ 6, 7, 8, 9, 0, 18446744073709551615], # out of range: 18446744073709551616
v_sint32 = [ 7, -7, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_sint64 = [ -8, 8, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_fixed32 = [ 9, 0, 4294967295], # out of range: 4294967296
v_fixed64 = [10, 0, 18446744073709551615], # out of range: 18446744073709551616,
v_sfixed32 = [-11, 11, 0, 2147483647, -2147483648], # out of range: 2147483648, -2147483649
v_sfixed64 = [-12, 12, 0, 9223372036854775807, -9223372036854775808], # out of range: 9223372036854775808, -9223372036854775809
v_bool = [False, True],
v_string = ["écran 網目錦蛇", "Hello world"],
v_bytes = [b"\xc3\x28", b"\x00\x01\x02"], # See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
v_enum = [MyEnum.E1, MyEnum.Enum2, MyEnum.E1], # TODO: MyEnum.NegEnum],
v_utf8_codes = ["écran 網目錦蛇", "Hello world"],
v_key_value = [KeyValue(key="foo", value=""),
KeyValue(key="àmímé níshíkíhéꜜbì", value="reticulated python")],
)
# decode=OneofMessage
# foo: "FOO"
# number: 666
oneof1 = OneofMessage(number=666, foo="FOO")
# decode=MapMessage
# number_ints { key: "one" value: 1 }
# number_ints { key: "two" value: 2 }
map1 = MapMessage(number_ints = {"one":1, "two":2})
def main():
dir = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(dir, "scalars1a_from_python.wire"), "wb") as f:
f.write(scalars1a.SerializeToString())
with open(os.path.join(dir, "scalars1b_from_python.wire"), "wb") as f:
f.write(scalars1b.SerializeToString())
with open(os.path.join(dir, "scalars1c_from_python.wire"), "wb") as f:
f.write(scalars1c.SerializeToString())
with open(os.path.join(dir, "repeated1a_from_python.wire"), "wb") as f:
f.write(repeated1a.SerializeToString())
with open(os.path.join(dir, "packed1a_from_python.wire"), "wb") as f:
f.write(packed1a.SerializeToString())
with open(os.path.join(dir, "oneof1_from_python.wire"), "wb") as f:
f.write(oneof1.SerializeToString())
with open(os.path.join(dir, "map1_from_python.wire"), "wb") as f:
f.write(map1.SerializeToString())
# For debugging, create specific ".wire" files, e.g.:
if False:
with open(os.path.join(dir, "packed_sfixed32_from_python.wire"), "wb") as f:
f.write(Packed1(v_sfixed32=[-1]).SerializeToString())
with open(os.path.join(dir, "scalar_sfixed32_from_python.wire"), "wb") as f:
f.write(Scalars1(v_sfixed32=-1).SerializeToString())
with open(os.path.join(dir, "repeated_enum_from_python.wire"), "wb") as f:
f.write(Repeated1(v_enum=[MyEnum.NegEnum]).SerializeToString())
if __name__ == "__main__":
main()
|