File: test_write.py

package info (click to toggle)
swi-prolog 9.0.4%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 82,408 kB
  • sloc: ansic: 387,503; perl: 359,326; cpp: 6,613; lisp: 6,247; java: 5,540; sh: 3,147; javascript: 2,668; python: 1,900; ruby: 1,594; yacc: 845; makefile: 428; xml: 317; sed: 12; sql: 6
file content (141 lines) | stat: -rw-r--r-- 6,903 bytes parent folder | download | duplicates (2)
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()