31 """Utilities for Python proto2 tests.
33 This is intentionally modeled on C++ code in
34 //google/protobuf/test_util.*.
37 __author__ =
'robinson@google.com (Will Robinson)'
56 return message.DESCRIPTOR.syntax ==
"proto2"
60 """Sets every non-lazy field in the message to a unique value.
63 message: A TestAllTypes instance.
70 message.optional_int32 = 101
71 message.optional_int64 = 102
72 message.optional_uint32 = 103
73 message.optional_uint64 = 104
74 message.optional_sint32 = 105
75 message.optional_sint64 = 106
76 message.optional_fixed32 = 107
77 message.optional_fixed64 = 108
78 message.optional_sfixed32 = 109
79 message.optional_sfixed64 = 110
80 message.optional_float = 111
81 message.optional_double = 112
82 message.optional_bool =
True
83 message.optional_string =
u'115'
84 message.optional_bytes = b
'116'
87 message.optionalgroup.a = 117
88 message.optional_nested_message.bb = 118
89 message.optional_foreign_message.c = 119
90 message.optional_import_message.d = 120
91 message.optional_public_import_message.e = 126
93 message.optional_nested_enum = unittest_pb2.TestAllTypes.BAZ
94 message.optional_foreign_enum = unittest_pb2.FOREIGN_BAZ
96 message.optional_import_enum = unittest_import_pb2.IMPORT_BAZ
98 message.optional_string_piece =
u'124'
99 message.optional_cord =
u'125'
105 message.repeated_int32.append(201)
106 message.repeated_int64.append(202)
107 message.repeated_uint32.append(203)
108 message.repeated_uint64.append(204)
109 message.repeated_sint32.append(205)
110 message.repeated_sint64.append(206)
111 message.repeated_fixed32.append(207)
112 message.repeated_fixed64.append(208)
113 message.repeated_sfixed32.append(209)
114 message.repeated_sfixed64.append(210)
115 message.repeated_float.append(211)
116 message.repeated_double.append(212)
117 message.repeated_bool.append(
True)
118 message.repeated_string.append(
u'215')
119 message.repeated_bytes.append(b
'216')
122 message.repeatedgroup.add().a = 217
123 message.repeated_nested_message.add().bb = 218
124 message.repeated_foreign_message.add().c = 219
125 message.repeated_import_message.add().d = 220
126 message.repeated_lazy_message.add().bb = 227
128 message.repeated_nested_enum.append(unittest_pb2.TestAllTypes.BAR)
129 message.repeated_foreign_enum.append(unittest_pb2.FOREIGN_BAR)
131 message.repeated_import_enum.append(unittest_import_pb2.IMPORT_BAR)
133 message.repeated_string_piece.append(
u'224')
134 message.repeated_cord.append(
u'225')
137 message.repeated_int32.append(0)
138 message.repeated_int64.append(0)
139 message.repeated_uint32.append(0)
140 message.repeated_uint64.append(0)
141 message.repeated_sint32.append(0)
142 message.repeated_sint64.append(0)
143 message.repeated_fixed32.append(0)
144 message.repeated_fixed64.append(0)
145 message.repeated_sfixed32.append(0)
146 message.repeated_sfixed64.append(0)
147 message.repeated_float.append(0)
148 message.repeated_double.append(0)
149 message.repeated_bool.append(
True)
150 message.repeated_string.append(
u'0')
151 message.repeated_bytes.append(b
'0')
152 message.repeated_int32[1] = 301
153 message.repeated_int64[1] = 302
154 message.repeated_uint32[1] = 303
155 message.repeated_uint64[1] = 304
156 message.repeated_sint32[1] = 305
157 message.repeated_sint64[1] = 306
158 message.repeated_fixed32[1] = 307
159 message.repeated_fixed64[1] = 308
160 message.repeated_sfixed32[1] = 309
161 message.repeated_sfixed64[1] = 310
162 message.repeated_float[1] = 311
163 message.repeated_double[1] = 312
164 message.repeated_bool[1] =
False
165 message.repeated_string[1] =
u'315'
166 message.repeated_bytes[1] = b
'316'
169 message.repeatedgroup.add().a = 317
170 message.repeated_nested_message.add().bb = 318
171 message.repeated_foreign_message.add().c = 319
172 message.repeated_import_message.add().d = 320
173 message.repeated_lazy_message.add().bb = 327
175 message.repeated_nested_enum.append(unittest_pb2.TestAllTypes.BAR)
176 message.repeated_nested_enum[1] = unittest_pb2.TestAllTypes.BAZ
177 message.repeated_foreign_enum.append(unittest_pb2.FOREIGN_BAZ)
179 message.repeated_import_enum.append(unittest_import_pb2.IMPORT_BAZ)
181 message.repeated_string_piece.append(
u'324')
182 message.repeated_cord.append(
u'325')
189 message.default_int32 = 401
190 message.default_int64 = 402
191 message.default_uint32 = 403
192 message.default_uint64 = 404
193 message.default_sint32 = 405
194 message.default_sint64 = 406
195 message.default_fixed32 = 407
196 message.default_fixed64 = 408
197 message.default_sfixed32 = 409
198 message.default_sfixed64 = 410
199 message.default_float = 411
200 message.default_double = 412
201 message.default_bool =
False
202 message.default_string =
'415'
203 message.default_bytes = b
'416'
205 message.default_nested_enum = unittest_pb2.TestAllTypes.FOO
206 message.default_foreign_enum = unittest_pb2.FOREIGN_FOO
207 message.default_import_enum = unittest_import_pb2.IMPORT_FOO
209 message.default_string_piece =
'424'
210 message.default_cord =
'425'
212 message.oneof_uint32 = 601
213 message.oneof_nested_message.bb = 602
214 message.oneof_string =
'603'
215 message.oneof_bytes = b
'604'
220 message.optional_lazy_message.bb = 127
224 """Sets every extension in the message to a unique value.
227 message: A unittest_pb2.TestAllExtensions instance.
230 extensions = message.Extensions
232 import_pb2 = unittest_import_pb2
238 extensions[pb2.optional_int32_extension] = 101
239 extensions[pb2.optional_int64_extension] = 102
240 extensions[pb2.optional_uint32_extension] = 103
241 extensions[pb2.optional_uint64_extension] = 104
242 extensions[pb2.optional_sint32_extension] = 105
243 extensions[pb2.optional_sint64_extension] = 106
244 extensions[pb2.optional_fixed32_extension] = 107
245 extensions[pb2.optional_fixed64_extension] = 108
246 extensions[pb2.optional_sfixed32_extension] = 109
247 extensions[pb2.optional_sfixed64_extension] = 110
248 extensions[pb2.optional_float_extension] = 111
249 extensions[pb2.optional_double_extension] = 112
250 extensions[pb2.optional_bool_extension] =
True
251 extensions[pb2.optional_string_extension] =
u'115'
252 extensions[pb2.optional_bytes_extension] = b
'116'
254 extensions[pb2.optionalgroup_extension].a = 117
255 extensions[pb2.optional_nested_message_extension].bb = 118
256 extensions[pb2.optional_foreign_message_extension].c = 119
257 extensions[pb2.optional_import_message_extension].d = 120
258 extensions[pb2.optional_public_import_message_extension].e = 126
259 extensions[pb2.optional_lazy_message_extension].bb = 127
261 extensions[pb2.optional_nested_enum_extension] = pb2.TestAllTypes.BAZ
262 extensions[pb2.optional_nested_enum_extension] = pb2.TestAllTypes.BAZ
263 extensions[pb2.optional_foreign_enum_extension] = pb2.FOREIGN_BAZ
264 extensions[pb2.optional_import_enum_extension] = import_pb2.IMPORT_BAZ
266 extensions[pb2.optional_string_piece_extension] =
u'124'
267 extensions[pb2.optional_cord_extension] =
u'125'
273 extensions[pb2.repeated_int32_extension].append(201)
274 extensions[pb2.repeated_int64_extension].append(202)
275 extensions[pb2.repeated_uint32_extension].append(203)
276 extensions[pb2.repeated_uint64_extension].append(204)
277 extensions[pb2.repeated_sint32_extension].append(205)
278 extensions[pb2.repeated_sint64_extension].append(206)
279 extensions[pb2.repeated_fixed32_extension].append(207)
280 extensions[pb2.repeated_fixed64_extension].append(208)
281 extensions[pb2.repeated_sfixed32_extension].append(209)
282 extensions[pb2.repeated_sfixed64_extension].append(210)
283 extensions[pb2.repeated_float_extension].append(211)
284 extensions[pb2.repeated_double_extension].append(212)
285 extensions[pb2.repeated_bool_extension].append(
True)
286 extensions[pb2.repeated_string_extension].append(
u'215')
287 extensions[pb2.repeated_bytes_extension].append(b
'216')
289 extensions[pb2.repeatedgroup_extension].
add().a = 217
290 extensions[pb2.repeated_nested_message_extension].
add().bb = 218
291 extensions[pb2.repeated_foreign_message_extension].
add().c = 219
292 extensions[pb2.repeated_import_message_extension].
add().d = 220
293 extensions[pb2.repeated_lazy_message_extension].
add().bb = 227
295 extensions[pb2.repeated_nested_enum_extension].append(pb2.TestAllTypes.BAR)
296 extensions[pb2.repeated_foreign_enum_extension].append(pb2.FOREIGN_BAR)
297 extensions[pb2.repeated_import_enum_extension].append(import_pb2.IMPORT_BAR)
299 extensions[pb2.repeated_string_piece_extension].append(
u'224')
300 extensions[pb2.repeated_cord_extension].append(
u'225')
303 extensions[pb2.repeated_int32_extension].append(301)
304 extensions[pb2.repeated_int64_extension].append(302)
305 extensions[pb2.repeated_uint32_extension].append(303)
306 extensions[pb2.repeated_uint64_extension].append(304)
307 extensions[pb2.repeated_sint32_extension].append(305)
308 extensions[pb2.repeated_sint64_extension].append(306)
309 extensions[pb2.repeated_fixed32_extension].append(307)
310 extensions[pb2.repeated_fixed64_extension].append(308)
311 extensions[pb2.repeated_sfixed32_extension].append(309)
312 extensions[pb2.repeated_sfixed64_extension].append(310)
313 extensions[pb2.repeated_float_extension].append(311)
314 extensions[pb2.repeated_double_extension].append(312)
315 extensions[pb2.repeated_bool_extension].append(
False)
316 extensions[pb2.repeated_string_extension].append(
u'315')
317 extensions[pb2.repeated_bytes_extension].append(b
'316')
319 extensions[pb2.repeatedgroup_extension].
add().a = 317
320 extensions[pb2.repeated_nested_message_extension].
add().bb = 318
321 extensions[pb2.repeated_foreign_message_extension].
add().c = 319
322 extensions[pb2.repeated_import_message_extension].
add().d = 320
323 extensions[pb2.repeated_lazy_message_extension].
add().bb = 327
325 extensions[pb2.repeated_nested_enum_extension].append(pb2.TestAllTypes.BAZ)
326 extensions[pb2.repeated_foreign_enum_extension].append(pb2.FOREIGN_BAZ)
327 extensions[pb2.repeated_import_enum_extension].append(import_pb2.IMPORT_BAZ)
329 extensions[pb2.repeated_string_piece_extension].append(
u'324')
330 extensions[pb2.repeated_cord_extension].append(
u'325')
336 extensions[pb2.default_int32_extension] = 401
337 extensions[pb2.default_int64_extension] = 402
338 extensions[pb2.default_uint32_extension] = 403
339 extensions[pb2.default_uint64_extension] = 404
340 extensions[pb2.default_sint32_extension] = 405
341 extensions[pb2.default_sint64_extension] = 406
342 extensions[pb2.default_fixed32_extension] = 407
343 extensions[pb2.default_fixed64_extension] = 408
344 extensions[pb2.default_sfixed32_extension] = 409
345 extensions[pb2.default_sfixed64_extension] = 410
346 extensions[pb2.default_float_extension] = 411
347 extensions[pb2.default_double_extension] = 412
348 extensions[pb2.default_bool_extension] =
False
349 extensions[pb2.default_string_extension] =
u'415'
350 extensions[pb2.default_bytes_extension] = b
'416'
352 extensions[pb2.default_nested_enum_extension] = pb2.TestAllTypes.FOO
353 extensions[pb2.default_foreign_enum_extension] = pb2.FOREIGN_FOO
354 extensions[pb2.default_import_enum_extension] = import_pb2.IMPORT_FOO
356 extensions[pb2.default_string_piece_extension] =
u'424'
357 extensions[pb2.default_cord_extension] =
'425'
359 extensions[pb2.oneof_uint32_extension] = 601
360 extensions[pb2.oneof_nested_message_extension].bb = 602
361 extensions[pb2.oneof_string_extension] =
u'603'
362 extensions[pb2.oneof_bytes_extension] = b
'604'
366 """Sets every field and extension in the message to a unique value.
369 message: A unittest_pb2.TestAllExtensions message.
372 message.my_string =
'foo'
373 message.my_float = 1.0
374 message.Extensions[unittest_pb2.my_extension_int] = 23
375 message.Extensions[unittest_pb2.my_extension_string] =
'bar'
379 """Ensures that serialized is the serialization we expect for a message
380 filled with SetAllFieldsAndExtensions(). (Specifically, ensures that the
381 serialization is in canonical, tag-number order).
383 my_extension_int = unittest_pb2.my_extension_int
384 my_extension_string = unittest_pb2.my_extension_string
385 expected_strings = []
386 message = unittest_pb2.TestFieldOrderings()
388 expected_strings.append(message.SerializeToString())
390 message.Extensions[my_extension_int] = 23
391 expected_strings.append(message.SerializeToString())
393 message.my_string =
'foo'
394 expected_strings.append(message.SerializeToString())
396 message.Extensions[my_extension_string] =
'bar'
397 expected_strings.append(message.SerializeToString())
399 message.my_float = 1.0
400 expected_strings.append(message.SerializeToString())
402 expected = b
''.join(expected_strings)
404 if expected != serialized:
405 raise ValueError(
'Expected %r, found %r' % (expected, serialized))
409 """Check all fields for correct values have after Set*Fields() is called."""
410 test_case.assertTrue(message.HasField(
'optional_int32'))
411 test_case.assertTrue(message.HasField(
'optional_int64'))
412 test_case.assertTrue(message.HasField(
'optional_uint32'))
413 test_case.assertTrue(message.HasField(
'optional_uint64'))
414 test_case.assertTrue(message.HasField(
'optional_sint32'))
415 test_case.assertTrue(message.HasField(
'optional_sint64'))
416 test_case.assertTrue(message.HasField(
'optional_fixed32'))
417 test_case.assertTrue(message.HasField(
'optional_fixed64'))
418 test_case.assertTrue(message.HasField(
'optional_sfixed32'))
419 test_case.assertTrue(message.HasField(
'optional_sfixed64'))
420 test_case.assertTrue(message.HasField(
'optional_float'))
421 test_case.assertTrue(message.HasField(
'optional_double'))
422 test_case.assertTrue(message.HasField(
'optional_bool'))
423 test_case.assertTrue(message.HasField(
'optional_string'))
424 test_case.assertTrue(message.HasField(
'optional_bytes'))
427 test_case.assertTrue(message.HasField(
'optionalgroup'))
428 test_case.assertTrue(message.HasField(
'optional_nested_message'))
429 test_case.assertTrue(message.HasField(
'optional_foreign_message'))
430 test_case.assertTrue(message.HasField(
'optional_import_message'))
432 test_case.assertTrue(message.optionalgroup.HasField(
'a'))
433 test_case.assertTrue(message.optional_nested_message.HasField(
'bb'))
434 test_case.assertTrue(message.optional_foreign_message.HasField(
'c'))
435 test_case.assertTrue(message.optional_import_message.HasField(
'd'))
437 test_case.assertTrue(message.HasField(
'optional_nested_enum'))
438 test_case.assertTrue(message.HasField(
'optional_foreign_enum'))
440 test_case.assertTrue(message.HasField(
'optional_import_enum'))
442 test_case.assertTrue(message.HasField(
'optional_string_piece'))
443 test_case.assertTrue(message.HasField(
'optional_cord'))
445 test_case.assertEqual(101, message.optional_int32)
446 test_case.assertEqual(102, message.optional_int64)
447 test_case.assertEqual(103, message.optional_uint32)
448 test_case.assertEqual(104, message.optional_uint64)
449 test_case.assertEqual(105, message.optional_sint32)
450 test_case.assertEqual(106, message.optional_sint64)
451 test_case.assertEqual(107, message.optional_fixed32)
452 test_case.assertEqual(108, message.optional_fixed64)
453 test_case.assertEqual(109, message.optional_sfixed32)
454 test_case.assertEqual(110, message.optional_sfixed64)
455 test_case.assertEqual(111, message.optional_float)
456 test_case.assertEqual(112, message.optional_double)
457 test_case.assertEqual(
True, message.optional_bool)
458 test_case.assertEqual(
'115', message.optional_string)
459 test_case.assertEqual(b
'116', message.optional_bytes)
462 test_case.assertEqual(117, message.optionalgroup.a)
463 test_case.assertEqual(118, message.optional_nested_message.bb)
464 test_case.assertEqual(119, message.optional_foreign_message.c)
465 test_case.assertEqual(120, message.optional_import_message.d)
466 test_case.assertEqual(126, message.optional_public_import_message.e)
467 test_case.assertEqual(127, message.optional_lazy_message.bb)
469 test_case.assertEqual(unittest_pb2.TestAllTypes.BAZ,
470 message.optional_nested_enum)
471 test_case.assertEqual(unittest_pb2.FOREIGN_BAZ,
472 message.optional_foreign_enum)
474 test_case.assertEqual(unittest_import_pb2.IMPORT_BAZ,
475 message.optional_import_enum)
479 test_case.assertEqual(2,
len(message.repeated_int32))
480 test_case.assertEqual(2,
len(message.repeated_int64))
481 test_case.assertEqual(2,
len(message.repeated_uint32))
482 test_case.assertEqual(2,
len(message.repeated_uint64))
483 test_case.assertEqual(2,
len(message.repeated_sint32))
484 test_case.assertEqual(2,
len(message.repeated_sint64))
485 test_case.assertEqual(2,
len(message.repeated_fixed32))
486 test_case.assertEqual(2,
len(message.repeated_fixed64))
487 test_case.assertEqual(2,
len(message.repeated_sfixed32))
488 test_case.assertEqual(2,
len(message.repeated_sfixed64))
489 test_case.assertEqual(2,
len(message.repeated_float))
490 test_case.assertEqual(2,
len(message.repeated_double))
491 test_case.assertEqual(2,
len(message.repeated_bool))
492 test_case.assertEqual(2,
len(message.repeated_string))
493 test_case.assertEqual(2,
len(message.repeated_bytes))
496 test_case.assertEqual(2,
len(message.repeatedgroup))
497 test_case.assertEqual(2,
len(message.repeated_nested_message))
498 test_case.assertEqual(2,
len(message.repeated_foreign_message))
499 test_case.assertEqual(2,
len(message.repeated_import_message))
500 test_case.assertEqual(2,
len(message.repeated_nested_enum))
501 test_case.assertEqual(2,
len(message.repeated_foreign_enum))
503 test_case.assertEqual(2,
len(message.repeated_import_enum))
505 test_case.assertEqual(2,
len(message.repeated_string_piece))
506 test_case.assertEqual(2,
len(message.repeated_cord))
508 test_case.assertEqual(201, message.repeated_int32[0])
509 test_case.assertEqual(202, message.repeated_int64[0])
510 test_case.assertEqual(203, message.repeated_uint32[0])
511 test_case.assertEqual(204, message.repeated_uint64[0])
512 test_case.assertEqual(205, message.repeated_sint32[0])
513 test_case.assertEqual(206, message.repeated_sint64[0])
514 test_case.assertEqual(207, message.repeated_fixed32[0])
515 test_case.assertEqual(208, message.repeated_fixed64[0])
516 test_case.assertEqual(209, message.repeated_sfixed32[0])
517 test_case.assertEqual(210, message.repeated_sfixed64[0])
518 test_case.assertEqual(211, message.repeated_float[0])
519 test_case.assertEqual(212, message.repeated_double[0])
520 test_case.assertEqual(
True, message.repeated_bool[0])
521 test_case.assertEqual(
'215', message.repeated_string[0])
522 test_case.assertEqual(b
'216', message.repeated_bytes[0])
525 test_case.assertEqual(217, message.repeatedgroup[0].a)
526 test_case.assertEqual(218, message.repeated_nested_message[0].bb)
527 test_case.assertEqual(219, message.repeated_foreign_message[0].c)
528 test_case.assertEqual(220, message.repeated_import_message[0].d)
529 test_case.assertEqual(227, message.repeated_lazy_message[0].bb)
531 test_case.assertEqual(unittest_pb2.TestAllTypes.BAR,
532 message.repeated_nested_enum[0])
533 test_case.assertEqual(unittest_pb2.FOREIGN_BAR,
534 message.repeated_foreign_enum[0])
536 test_case.assertEqual(unittest_import_pb2.IMPORT_BAR,
537 message.repeated_import_enum[0])
539 test_case.assertEqual(301, message.repeated_int32[1])
540 test_case.assertEqual(302, message.repeated_int64[1])
541 test_case.assertEqual(303, message.repeated_uint32[1])
542 test_case.assertEqual(304, message.repeated_uint64[1])
543 test_case.assertEqual(305, message.repeated_sint32[1])
544 test_case.assertEqual(306, message.repeated_sint64[1])
545 test_case.assertEqual(307, message.repeated_fixed32[1])
546 test_case.assertEqual(308, message.repeated_fixed64[1])
547 test_case.assertEqual(309, message.repeated_sfixed32[1])
548 test_case.assertEqual(310, message.repeated_sfixed64[1])
549 test_case.assertEqual(311, message.repeated_float[1])
550 test_case.assertEqual(312, message.repeated_double[1])
551 test_case.assertEqual(
False, message.repeated_bool[1])
552 test_case.assertEqual(
'315', message.repeated_string[1])
553 test_case.assertEqual(b
'316', message.repeated_bytes[1])
556 test_case.assertEqual(317, message.repeatedgroup[1].a)
557 test_case.assertEqual(318, message.repeated_nested_message[1].bb)
558 test_case.assertEqual(319, message.repeated_foreign_message[1].c)
559 test_case.assertEqual(320, message.repeated_import_message[1].d)
560 test_case.assertEqual(327, message.repeated_lazy_message[1].bb)
562 test_case.assertEqual(unittest_pb2.TestAllTypes.BAZ,
563 message.repeated_nested_enum[1])
564 test_case.assertEqual(unittest_pb2.FOREIGN_BAZ,
565 message.repeated_foreign_enum[1])
567 test_case.assertEqual(unittest_import_pb2.IMPORT_BAZ,
568 message.repeated_import_enum[1])
573 test_case.assertTrue(message.HasField(
'default_int32'))
574 test_case.assertTrue(message.HasField(
'default_int64'))
575 test_case.assertTrue(message.HasField(
'default_uint32'))
576 test_case.assertTrue(message.HasField(
'default_uint64'))
577 test_case.assertTrue(message.HasField(
'default_sint32'))
578 test_case.assertTrue(message.HasField(
'default_sint64'))
579 test_case.assertTrue(message.HasField(
'default_fixed32'))
580 test_case.assertTrue(message.HasField(
'default_fixed64'))
581 test_case.assertTrue(message.HasField(
'default_sfixed32'))
582 test_case.assertTrue(message.HasField(
'default_sfixed64'))
583 test_case.assertTrue(message.HasField(
'default_float'))
584 test_case.assertTrue(message.HasField(
'default_double'))
585 test_case.assertTrue(message.HasField(
'default_bool'))
586 test_case.assertTrue(message.HasField(
'default_string'))
587 test_case.assertTrue(message.HasField(
'default_bytes'))
589 test_case.assertTrue(message.HasField(
'default_nested_enum'))
590 test_case.assertTrue(message.HasField(
'default_foreign_enum'))
591 test_case.assertTrue(message.HasField(
'default_import_enum'))
593 test_case.assertEqual(401, message.default_int32)
594 test_case.assertEqual(402, message.default_int64)
595 test_case.assertEqual(403, message.default_uint32)
596 test_case.assertEqual(404, message.default_uint64)
597 test_case.assertEqual(405, message.default_sint32)
598 test_case.assertEqual(406, message.default_sint64)
599 test_case.assertEqual(407, message.default_fixed32)
600 test_case.assertEqual(408, message.default_fixed64)
601 test_case.assertEqual(409, message.default_sfixed32)
602 test_case.assertEqual(410, message.default_sfixed64)
603 test_case.assertEqual(411, message.default_float)
604 test_case.assertEqual(412, message.default_double)
605 test_case.assertEqual(
False, message.default_bool)
606 test_case.assertEqual(
'415', message.default_string)
607 test_case.assertEqual(b
'416', message.default_bytes)
609 test_case.assertEqual(unittest_pb2.TestAllTypes.FOO,
610 message.default_nested_enum)
611 test_case.assertEqual(unittest_pb2.FOREIGN_FOO,
612 message.default_foreign_enum)
613 test_case.assertEqual(unittest_import_pb2.IMPORT_FOO,
614 message.default_import_enum)
618 """Finds the given golden file and returns a file object representing it."""
622 while os.path.exists(path):
623 if os.path.exists(os.path.join(path,
'src/google/protobuf')):
625 full_path = os.path.join(path,
'src/google/protobuf/testdata', filename)
626 return open(full_path,
'rb')
627 path = os.path.join(path,
'..')
631 full_path = os.path.join(path,
'third_party/py/google/protobuf/testdata',
633 if os.path.exists(full_path):
635 return open(full_path,
'rb')
638 'Could not find golden files. This test must be run from within the '
639 'protobuf source package so that it can read test data files from the '
644 """Finds the given golden file and returns its contents."""
650 """Sets every field in the message to a unique value.
653 message: A TestPackedTypes instance.
655 message.packed_int32.extend([601, 701])
656 message.packed_int64.extend([602, 702])
657 message.packed_uint32.extend([603, 703])
658 message.packed_uint64.extend([604, 704])
659 message.packed_sint32.extend([605, 705])
660 message.packed_sint64.extend([606, 706])
661 message.packed_fixed32.extend([607, 707])
662 message.packed_fixed64.extend([608, 708])
663 message.packed_sfixed32.extend([609, 709])
664 message.packed_sfixed64.extend([610, 710])
665 message.packed_float.extend([611.0, 711.0])
666 message.packed_double.extend([612.0, 712.0])
667 message.packed_bool.extend([
True,
False])
668 message.packed_enum.extend([unittest_pb2.FOREIGN_BAR,
669 unittest_pb2.FOREIGN_BAZ])
673 """Sets every extension in the message to a unique value.
676 message: A unittest_pb2.TestPackedExtensions instance.
678 extensions = message.Extensions
681 extensions[pb2.packed_int32_extension].extend([601, 701])
682 extensions[pb2.packed_int64_extension].extend([602, 702])
683 extensions[pb2.packed_uint32_extension].extend([603, 703])
684 extensions[pb2.packed_uint64_extension].extend([604, 704])
685 extensions[pb2.packed_sint32_extension].extend([605, 705])
686 extensions[pb2.packed_sint64_extension].extend([606, 706])
687 extensions[pb2.packed_fixed32_extension].extend([607, 707])
688 extensions[pb2.packed_fixed64_extension].extend([608, 708])
689 extensions[pb2.packed_sfixed32_extension].extend([609, 709])
690 extensions[pb2.packed_sfixed64_extension].extend([610, 710])
691 extensions[pb2.packed_float_extension].extend([611.0, 711.0])
692 extensions[pb2.packed_double_extension].extend([612.0, 712.0])
693 extensions[pb2.packed_bool_extension].extend([
True,
False])
694 extensions[pb2.packed_enum_extension].extend([unittest_pb2.FOREIGN_BAR,
695 unittest_pb2.FOREIGN_BAZ])
699 """Sets every field in the message to a unique value.
702 message: A unittest_pb2.TestUnpackedTypes instance.
704 message.unpacked_int32.extend([601, 701])
705 message.unpacked_int64.extend([602, 702])
706 message.unpacked_uint32.extend([603, 703])
707 message.unpacked_uint64.extend([604, 704])
708 message.unpacked_sint32.extend([605, 705])
709 message.unpacked_sint64.extend([606, 706])
710 message.unpacked_fixed32.extend([607, 707])
711 message.unpacked_fixed64.extend([608, 708])
712 message.unpacked_sfixed32.extend([609, 709])
713 message.unpacked_sfixed64.extend([610, 710])
714 message.unpacked_float.extend([611.0, 711.0])
715 message.unpacked_double.extend([612.0, 712.0])
716 message.unpacked_bool.extend([
True,
False])
717 message.unpacked_enum.extend([unittest_pb2.FOREIGN_BAR,
718 unittest_pb2.FOREIGN_BAZ])
721 class NonStandardInteger(numbers.Integral):
722 """An integer object that does not subclass int.
724 This is used to verify that both C++ and regular proto systems can handle
725 integer others than int and long and that they handle them in predictable
728 NonStandardInteger is the minimal legal specification for a custom Integral.
729 As such, it does not support 0 < x < 5 and it is not hashable.
731 Note: This is added here instead of relying on numpy or a similar library
732 with custom integers to limit dependencies.
735 def __init__(self, val, error_string_on_conversion=None):
736 assert isinstance(val, numbers.Integral)
737 if isinstance(val, NonStandardInteger):
757 return operator.eq(self.
val, y)
820 if isinstance(y, NonStandardInteger):
822 return operator.le(self.
val, y)
825 if isinstance(y, NonStandardInteger):
827 return operator.lt(self.
val, y)
868 return 'NonStandardInteger(%s)' % self.
val