Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: third_party/protobuf/python/google/protobuf/internal/well_known_types_test.py

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 # 2 #
3 # Protocol Buffers - Google's data interchange format 3 # Protocol Buffers - Google's data interchange format
4 # Copyright 2008 Google Inc. All rights reserved. 4 # Copyright 2008 Google Inc. All rights reserved.
5 # https://developers.google.com/protocol-buffers/ 5 # https://developers.google.com/protocol-buffers/
6 # 6 #
7 # Redistribution and use in source and binary forms, with or without 7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions are 8 # modification, are permitted provided that the following conditions are
9 # met: 9 # met:
10 # 10 #
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 def testInvalidDuration(self): 296 def testInvalidDuration(self):
297 message = duration_pb2.Duration() 297 message = duration_pb2.Duration()
298 self.assertRaisesRegexp( 298 self.assertRaisesRegexp(
299 well_known_types.ParseError, 299 well_known_types.ParseError,
300 'Duration must end with letter "s": 1.', 300 'Duration must end with letter "s": 1.',
301 message.FromJsonString, '1') 301 message.FromJsonString, '1')
302 self.assertRaisesRegexp( 302 self.assertRaisesRegexp(
303 well_known_types.ParseError, 303 well_known_types.ParseError,
304 'Couldn\'t parse duration: 1...2s.', 304 'Couldn\'t parse duration: 1...2s.',
305 message.FromJsonString, '1...2s') 305 message.FromJsonString, '1...2s')
306 text = '-315576000001.000000000s'
307 self.assertRaisesRegexp(
308 well_known_types.Error,
309 r'Duration is not valid\: Seconds -315576000001 must be in range'
310 r' \[-315576000000\, 315576000000\].',
311 message.FromJsonString, text)
312 text = '315576000001.000000000s'
313 self.assertRaisesRegexp(
314 well_known_types.Error,
315 r'Duration is not valid\: Seconds 315576000001 must be in range'
316 r' \[-315576000000\, 315576000000\].',
317 message.FromJsonString, text)
318 message.seconds = -315576000001
319 message.nanos = 0
320 self.assertRaisesRegexp(
321 well_known_types.Error,
322 r'Duration is not valid\: Seconds -315576000001 must be in range'
323 r' \[-315576000000\, 315576000000\].',
324 message.ToJsonString)
325 306
326 307
327 class FieldMaskTest(unittest.TestCase): 308 class FieldMaskTest(unittest.TestCase):
328 309
329 def testStringFormat(self): 310 def testStringFormat(self):
330 mask = field_mask_pb2.FieldMask() 311 mask = field_mask_pb2.FieldMask()
331 self.assertEqual('', mask.ToJsonString()) 312 self.assertEqual('', mask.ToJsonString())
332 mask.paths.append('foo') 313 mask.paths.append('foo')
333 self.assertEqual('foo', mask.ToJsonString()) 314 self.assertEqual('foo', mask.ToJsonString())
334 mask.paths.append('bar') 315 mask.paths.append('bar')
335 self.assertEqual('foo,bar', mask.ToJsonString()) 316 self.assertEqual('foo,bar', mask.ToJsonString())
336 317
337 mask.FromJsonString('') 318 mask.FromJsonString('')
338 self.assertEqual('', mask.ToJsonString()) 319 self.assertEqual('', mask.ToJsonString())
339 mask.FromJsonString('foo') 320 mask.FromJsonString('foo')
340 self.assertEqual(['foo'], mask.paths) 321 self.assertEqual(['foo'], mask.paths)
341 mask.FromJsonString('foo,bar') 322 mask.FromJsonString('foo,bar')
342 self.assertEqual(['foo', 'bar'], mask.paths) 323 self.assertEqual(['foo', 'bar'], mask.paths)
343 324
344 # Test camel case
345 mask.Clear()
346 mask.paths.append('foo_bar')
347 self.assertEqual('fooBar', mask.ToJsonString())
348 mask.paths.append('bar_quz')
349 self.assertEqual('fooBar,barQuz', mask.ToJsonString())
350
351 mask.FromJsonString('')
352 self.assertEqual('', mask.ToJsonString())
353 mask.FromJsonString('fooBar')
354 self.assertEqual(['foo_bar'], mask.paths)
355 mask.FromJsonString('fooBar,barQuz')
356 self.assertEqual(['foo_bar', 'bar_quz'], mask.paths)
357
358 def testDescriptorToFieldMask(self): 325 def testDescriptorToFieldMask(self):
359 mask = field_mask_pb2.FieldMask() 326 mask = field_mask_pb2.FieldMask()
360 msg_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR 327 msg_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
361 mask.AllFieldsFromDescriptor(msg_descriptor) 328 mask.AllFieldsFromDescriptor(msg_descriptor)
362 self.assertEqual(75, len(mask.paths)) 329 self.assertEqual(75, len(mask.paths))
363 self.assertTrue(mask.IsValidForDescriptor(msg_descriptor)) 330 self.assertTrue(mask.IsValidForDescriptor(msg_descriptor))
364 for field in msg_descriptor.fields: 331 for field in msg_descriptor.fields:
365 self.assertTrue(field.name in mask.paths) 332 self.assertTrue(field.name in mask.paths)
366 mask.paths.append('optional_nested_message.bb') 333 mask.paths.append('optional_nested_message.bb')
367 self.assertTrue(mask.IsValidForDescriptor(msg_descriptor)) 334 self.assertTrue(mask.IsValidForDescriptor(msg_descriptor))
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 # But they are cleared when replacing message fields. 495 # But they are cleared when replacing message fields.
529 nested_dst.Clear() 496 nested_dst.Clear()
530 nested_dst.payload.optional_int32 = 1234 497 nested_dst.payload.optional_int32 = 1234
531 mask.FromJsonString('payload') 498 mask.FromJsonString('payload')
532 mask.MergeMessage(nested_src, nested_dst, True, False) 499 mask.MergeMessage(nested_src, nested_dst, True, False)
533 self.assertFalse(nested_dst.HasField('payload')) 500 self.assertFalse(nested_dst.HasField('payload'))
534 501
535 nested_src.payload.repeated_int32.append(1234) 502 nested_src.payload.repeated_int32.append(1234)
536 nested_dst.payload.repeated_int32.append(5678) 503 nested_dst.payload.repeated_int32.append(5678)
537 # Repeated fields will be appended by default. 504 # Repeated fields will be appended by default.
538 mask.FromJsonString('payload.repeatedInt32') 505 mask.FromJsonString('payload.repeated_int32')
539 mask.MergeMessage(nested_src, nested_dst) 506 mask.MergeMessage(nested_src, nested_dst)
540 self.assertEqual(2, len(nested_dst.payload.repeated_int32)) 507 self.assertEqual(2, len(nested_dst.payload.repeated_int32))
541 self.assertEqual(5678, nested_dst.payload.repeated_int32[0]) 508 self.assertEqual(5678, nested_dst.payload.repeated_int32[0])
542 self.assertEqual(1234, nested_dst.payload.repeated_int32[1]) 509 self.assertEqual(1234, nested_dst.payload.repeated_int32[1])
543 # Change the behavior to replace repeated fields. 510 # Change the behavior to replace repeated fields.
544 mask.FromJsonString('payload.repeatedInt32') 511 mask.FromJsonString('payload.repeated_int32')
545 mask.MergeMessage(nested_src, nested_dst, False, True) 512 mask.MergeMessage(nested_src, nested_dst, False, True)
546 self.assertEqual(1, len(nested_dst.payload.repeated_int32)) 513 self.assertEqual(1, len(nested_dst.payload.repeated_int32))
547 self.assertEqual(1234, nested_dst.payload.repeated_int32[0]) 514 self.assertEqual(1234, nested_dst.payload.repeated_int32[0])
548 515
549 def testSnakeCaseToCamelCase(self):
550 self.assertEqual('fooBar',
551 well_known_types._SnakeCaseToCamelCase('foo_bar'))
552 self.assertEqual('FooBar',
553 well_known_types._SnakeCaseToCamelCase('_foo_bar'))
554 self.assertEqual('foo3Bar',
555 well_known_types._SnakeCaseToCamelCase('foo3_bar'))
556
557 # No uppercase letter is allowed.
558 self.assertRaisesRegexp(
559 well_known_types.Error,
560 'Fail to print FieldMask to Json string: Path name Foo must '
561 'not contain uppercase letters.',
562 well_known_types._SnakeCaseToCamelCase,
563 'Foo')
564 # Any character after a "_" must be a lowercase letter.
565 # 1. "_" cannot be followed by another "_".
566 # 2. "_" cannot be followed by a digit.
567 # 3. "_" cannot appear as the last character.
568 self.assertRaisesRegexp(
569 well_known_types.Error,
570 'Fail to print FieldMask to Json string: The character after a '
571 '"_" must be a lowercase letter in path name foo__bar.',
572 well_known_types._SnakeCaseToCamelCase,
573 'foo__bar')
574 self.assertRaisesRegexp(
575 well_known_types.Error,
576 'Fail to print FieldMask to Json string: The character after a '
577 '"_" must be a lowercase letter in path name foo_3bar.',
578 well_known_types._SnakeCaseToCamelCase,
579 'foo_3bar')
580 self.assertRaisesRegexp(
581 well_known_types.Error,
582 'Fail to print FieldMask to Json string: Trailing "_" in path '
583 'name foo_bar_.',
584 well_known_types._SnakeCaseToCamelCase,
585 'foo_bar_')
586
587 def testCamelCaseToSnakeCase(self):
588 self.assertEqual('foo_bar',
589 well_known_types._CamelCaseToSnakeCase('fooBar'))
590 self.assertEqual('_foo_bar',
591 well_known_types._CamelCaseToSnakeCase('FooBar'))
592 self.assertEqual('foo3_bar',
593 well_known_types._CamelCaseToSnakeCase('foo3Bar'))
594 self.assertRaisesRegexp(
595 well_known_types.ParseError,
596 'Fail to parse FieldMask: Path name foo_bar must not contain "_"s.',
597 well_known_types._CamelCaseToSnakeCase,
598 'foo_bar')
599
600 516
601 class StructTest(unittest.TestCase): 517 class StructTest(unittest.TestCase):
602 518
603 def testStruct(self): 519 def testStruct(self):
604 struct = struct_pb2.Struct() 520 struct = struct_pb2.Struct()
605 struct_class = struct.__class__ 521 struct_class = struct.__class__
606 522
607 struct['key1'] = 5 523 struct['key1'] = 5
608 struct['key2'] = 'abc' 524 struct['key2'] = 'abc'
609 struct['key3'] = True 525 struct['key3'] = True
610 struct.get_or_create_struct('key4')['subkey'] = 11.0 526 struct.get_or_create_struct('key4')['subkey'] = 11.0
611 struct_list = struct.get_or_create_list('key5') 527 struct_list = struct.get_or_create_list('key5')
612 struct_list.extend([6, 'seven', True, False, None]) 528 struct_list.extend([6, 'seven', True, False, None])
613 struct_list.add_struct()['subkey2'] = 9 529 struct_list.add_struct()['subkey2'] = 9
614 530
615 self.assertTrue(isinstance(struct, well_known_types.Struct)) 531 self.assertTrue(isinstance(struct, well_known_types.Struct))
616 self.assertEqual(5, struct['key1']) 532 self.assertEquals(5, struct['key1'])
617 self.assertEqual('abc', struct['key2']) 533 self.assertEquals('abc', struct['key2'])
618 self.assertIs(True, struct['key3']) 534 self.assertIs(True, struct['key3'])
619 self.assertEqual(11, struct['key4']['subkey']) 535 self.assertEquals(11, struct['key4']['subkey'])
620 inner_struct = struct_class() 536 inner_struct = struct_class()
621 inner_struct['subkey2'] = 9 537 inner_struct['subkey2'] = 9
622 self.assertEqual([6, 'seven', True, False, None, inner_struct], 538 self.assertEquals([6, 'seven', True, False, None, inner_struct],
623 list(struct['key5'].items())) 539 list(struct['key5'].items()))
624 540
625 serialized = struct.SerializeToString() 541 serialized = struct.SerializeToString()
626 542
627 struct2 = struct_pb2.Struct() 543 struct2 = struct_pb2.Struct()
628 struct2.ParseFromString(serialized) 544 struct2.ParseFromString(serialized)
629 545
630 self.assertEqual(struct, struct2) 546 self.assertEquals(struct, struct2)
631 547
632 self.assertTrue(isinstance(struct2, well_known_types.Struct)) 548 self.assertTrue(isinstance(struct2, well_known_types.Struct))
633 self.assertEqual(5, struct2['key1']) 549 self.assertEquals(5, struct2['key1'])
634 self.assertEqual('abc', struct2['key2']) 550 self.assertEquals('abc', struct2['key2'])
635 self.assertIs(True, struct2['key3']) 551 self.assertIs(True, struct2['key3'])
636 self.assertEqual(11, struct2['key4']['subkey']) 552 self.assertEquals(11, struct2['key4']['subkey'])
637 self.assertEqual([6, 'seven', True, False, None, inner_struct], 553 self.assertEquals([6, 'seven', True, False, None, inner_struct],
638 list(struct2['key5'].items())) 554 list(struct2['key5'].items()))
639 555
640 struct_list = struct2['key5'] 556 struct_list = struct2['key5']
641 self.assertEqual(6, struct_list[0]) 557 self.assertEquals(6, struct_list[0])
642 self.assertEqual('seven', struct_list[1]) 558 self.assertEquals('seven', struct_list[1])
643 self.assertEqual(True, struct_list[2]) 559 self.assertEquals(True, struct_list[2])
644 self.assertEqual(False, struct_list[3]) 560 self.assertEquals(False, struct_list[3])
645 self.assertEqual(None, struct_list[4]) 561 self.assertEquals(None, struct_list[4])
646 self.assertEqual(inner_struct, struct_list[5]) 562 self.assertEquals(inner_struct, struct_list[5])
647 563
648 struct_list[1] = 7 564 struct_list[1] = 7
649 self.assertEqual(7, struct_list[1]) 565 self.assertEquals(7, struct_list[1])
650 566
651 struct_list.add_list().extend([1, 'two', True, False, None]) 567 struct_list.add_list().extend([1, 'two', True, False, None])
652 self.assertEqual([1, 'two', True, False, None], 568 self.assertEquals([1, 'two', True, False, None],
653 list(struct_list[6].items())) 569 list(struct_list[6].items()))
654 570
655 text_serialized = str(struct) 571 text_serialized = str(struct)
656 struct3 = struct_pb2.Struct() 572 struct3 = struct_pb2.Struct()
657 text_format.Merge(text_serialized, struct3) 573 text_format.Merge(text_serialized, struct3)
658 self.assertEqual(struct, struct3) 574 self.assertEquals(struct, struct3)
659 575
660 struct.get_or_create_struct('key3')['replace'] = 12 576 struct.get_or_create_struct('key3')['replace'] = 12
661 self.assertEqual(12, struct['key3']['replace']) 577 self.assertEquals(12, struct['key3']['replace'])
662 578
663 579
664 class AnyTest(unittest.TestCase): 580 class AnyTest(unittest.TestCase):
665 581
666 def testAnyMessage(self): 582 def testAnyMessage(self):
667 # Creates and sets message. 583 # Creates and sets message.
668 msg = any_test_pb2.TestAny() 584 msg = any_test_pb2.TestAny()
669 msg_descriptor = msg.DESCRIPTOR 585 msg_descriptor = msg.DESCRIPTOR
670 all_types = unittest_pb2.TestAllTypes() 586 all_types = unittest_pb2.TestAllTypes()
671 all_descriptor = all_types.DESCRIPTOR 587 all_descriptor = all_types.DESCRIPTOR
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 self.assertEqual(msg.type_url, 635 self.assertEqual(msg.type_url,
720 '/%s' % submessage.DESCRIPTOR.full_name) 636 '/%s' % submessage.DESCRIPTOR.full_name)
721 # Test unpacking the type. 637 # Test unpacking the type.
722 unpacked_message = any_test_pb2.TestAny() 638 unpacked_message = any_test_pb2.TestAny()
723 self.assertTrue(msg.Unpack(unpacked_message)) 639 self.assertTrue(msg.Unpack(unpacked_message))
724 self.assertEqual(submessage, unpacked_message) 640 self.assertEqual(submessage, unpacked_message)
725 641
726 642
727 if __name__ == '__main__': 643 if __name__ == '__main__':
728 unittest.main() 644 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698