protoc 2.6.1.1 → 2.6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. checksums.yaml +4 -4
  2. data/ext/protoc/Makefile.in +10 -13
  3. data/ext/protoc/extconf.rb +0 -1
  4. data/ext/protoc/protobuf/CHANGES.txt +593 -0
  5. data/ext/protoc/protobuf/CONTRIBUTORS.txt +93 -0
  6. data/ext/protoc/protobuf/INSTALL.txt +237 -0
  7. data/ext/protoc/protobuf/LICENSE +33 -0
  8. data/ext/protoc/protobuf/Makefile.am +267 -0
  9. data/ext/protoc/protobuf/README.md +167 -0
  10. data/ext/protoc/protobuf/autogen.sh +41 -0
  11. data/ext/protoc/protobuf/benchmarks/ProtoBench.java +203 -0
  12. data/ext/protoc/protobuf/benchmarks/google_message1.dat +0 -0
  13. data/ext/protoc/protobuf/benchmarks/google_message2.dat +0 -0
  14. data/ext/protoc/protobuf/benchmarks/google_size.proto +136 -0
  15. data/ext/protoc/protobuf/benchmarks/google_speed.proto +136 -0
  16. data/ext/protoc/protobuf/benchmarks/readme.txt +50 -0
  17. data/ext/protoc/protobuf/configure.ac +159 -0
  18. data/ext/protoc/protobuf/editors/README.txt +5 -0
  19. data/ext/protoc/protobuf/editors/proto.vim +105 -0
  20. data/ext/protoc/protobuf/editors/protobuf-mode.el +220 -0
  21. data/ext/protoc/protobuf/examples/AddPerson.java +95 -0
  22. data/ext/protoc/protobuf/examples/ListPeople.java +50 -0
  23. data/ext/protoc/protobuf/examples/Makefile +58 -0
  24. data/ext/protoc/protobuf/examples/README.txt +29 -0
  25. data/ext/protoc/protobuf/examples/add_person.cc +95 -0
  26. data/ext/protoc/protobuf/examples/add_person.py +58 -0
  27. data/ext/protoc/protobuf/examples/addressbook.proto +30 -0
  28. data/ext/protoc/protobuf/examples/list_people.cc +68 -0
  29. data/ext/protoc/protobuf/examples/list_people.py +38 -0
  30. data/ext/protoc/protobuf/generate_descriptor_proto.sh +33 -0
  31. data/ext/protoc/protobuf/java/README.txt +96 -0
  32. data/ext/protoc/protobuf/java/pom.xml +217 -0
  33. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessage.java +466 -0
  34. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessageLite.java +355 -0
  35. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractParser.java +253 -0
  36. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java +51 -0
  37. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingService.java +64 -0
  38. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BoundedByteString.java +163 -0
  39. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ByteString.java +1022 -0
  40. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedInputStream.java +1311 -0
  41. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedOutputStream.java +1297 -0
  42. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Descriptors.java +2238 -0
  43. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/DynamicMessage.java +622 -0
  44. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Extension.java +96 -0
  45. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistry.java +392 -0
  46. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java +185 -0
  47. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/FieldSet.java +907 -0
  48. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessage.java +2213 -0
  49. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java +949 -0
  50. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Internal.java +391 -0
  51. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java +122 -0
  52. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyField.java +154 -0
  53. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyFieldLite.java +176 -0
  54. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringArrayList.java +367 -0
  55. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringList.java +163 -0
  56. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LiteralByteString.java +362 -0
  57. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Message.java +244 -0
  58. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLite.java +320 -0
  59. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java +60 -0
  60. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageOrBuilder.java +143 -0
  61. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageReflection.java +931 -0
  62. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Parser.java +261 -0
  63. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java +58 -0
  64. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolStringList.java +48 -0
  65. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java +696 -0
  66. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RopeByteString.java +957 -0
  67. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcCallback.java +47 -0
  68. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcChannel.java +71 -0
  69. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcController.java +118 -0
  70. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcUtil.java +134 -0
  71. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Service.java +117 -0
  72. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ServiceException.java +52 -0
  73. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java +241 -0
  74. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SmallSortedMap.java +618 -0
  75. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/TextFormat.java +1984 -0
  76. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UninitializedMessageException.java +99 -0
  77. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnknownFieldSet.java +995 -0
  78. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java +205 -0
  79. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Utf8.java +349 -0
  80. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/WireFormat.java +163 -0
  81. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java +527 -0
  82. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java +68 -0
  83. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ByteStringTest.java +759 -0
  84. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CheckUtf8Test.java +141 -0
  85. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java +769 -0
  86. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java +401 -0
  87. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java +80 -0
  88. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DescriptorsTest.java +735 -0
  89. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java +326 -0
  90. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java +48 -0
  91. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java +1515 -0
  92. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java +180 -0
  93. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java +421 -0
  94. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java +134 -0
  95. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldTest.java +121 -0
  96. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java +319 -0
  97. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java +174 -0
  98. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java +143 -0
  99. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java +85 -0
  100. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteTest.java +148 -0
  101. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java +396 -0
  102. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/MessageTest.java +353 -0
  103. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/NestedBuildersTest.java +185 -0
  104. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ParserTest.java +381 -0
  105. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java +190 -0
  106. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java +97 -0
  107. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringTest.java +115 -0
  108. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ServiceTest.java +320 -0
  109. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java +155 -0
  110. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java +420 -0
  111. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java +96 -0
  112. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestUtil.java +4124 -0
  113. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TextFormatTest.java +994 -0
  114. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java +653 -0
  115. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java +227 -0
  116. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/WireFormatTest.java +606 -0
  117. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto +61 -0
  118. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto +55 -0
  119. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/multiple_files_test.proto +77 -0
  120. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_builders_test.proto +53 -0
  121. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension.proto +46 -0
  122. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension_lite.proto +48 -0
  123. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension.proto +49 -0
  124. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto +50 -0
  125. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test.proto +38 -0
  126. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto +42 -0
  127. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto +43 -0
  128. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto +157 -0
  129. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8.proto +50 -0
  130. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto +51 -0
  131. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_custom_options.proto +43 -0
  132. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto +60 -0
  133. data/ext/protoc/protobuf/m4/ac_system_extensions.m4 +37 -0
  134. data/ext/protoc/protobuf/m4/acx_check_suncc.m4 +75 -0
  135. data/ext/protoc/protobuf/m4/acx_pthread.m4 +397 -0
  136. data/ext/protoc/protobuf/m4/stl_hash.m4 +72 -0
  137. data/ext/protoc/protobuf/more_tests/Makefile +41 -0
  138. data/ext/protoc/protobuf/post_process_dist.sh +60 -0
  139. data/ext/protoc/protobuf/protobuf-lite.pc.in +13 -0
  140. data/ext/protoc/protobuf/protobuf.pc.in +14 -0
  141. data/ext/protoc/protobuf/python/README.txt +105 -0
  142. data/ext/protoc/protobuf/python/ez_setup.py +284 -0
  143. data/ext/protoc/protobuf/python/google/__init__.py +1 -0
  144. data/ext/protoc/protobuf/python/google/protobuf/__init__.py +0 -0
  145. data/ext/protoc/protobuf/python/google/protobuf/descriptor.py +849 -0
  146. data/ext/protoc/protobuf/python/google/protobuf/descriptor_database.py +137 -0
  147. data/ext/protoc/protobuf/python/google/protobuf/descriptor_pool.py +643 -0
  148. data/ext/protoc/protobuf/python/google/protobuf/internal/__init__.py +0 -0
  149. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.cc +139 -0
  150. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.py +89 -0
  151. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation_default_test.py +63 -0
  152. data/ext/protoc/protobuf/python/google/protobuf/internal/containers.py +269 -0
  153. data/ext/protoc/protobuf/python/google/protobuf/internal/cpp_message.py +663 -0
  154. data/ext/protoc/protobuf/python/google/protobuf/internal/decoder.py +831 -0
  155. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_database_test.py +63 -0
  156. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test.py +564 -0
  157. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test1.proto +94 -0
  158. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test2.proto +70 -0
  159. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_python_test.py +54 -0
  160. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_test.py +669 -0
  161. data/ext/protoc/protobuf/python/google/protobuf/internal/encoder.py +788 -0
  162. data/ext/protoc/protobuf/python/google/protobuf/internal/enum_type_wrapper.py +89 -0
  163. data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test1.proto +57 -0
  164. data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test2.proto +92 -0
  165. data/ext/protoc/protobuf/python/google/protobuf/internal/generator_test.py +343 -0
  166. data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_python_test.py +54 -0
  167. data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_test.py +131 -0
  168. data/ext/protoc/protobuf/python/google/protobuf/internal/message_listener.py +78 -0
  169. data/ext/protoc/protobuf/python/google/protobuf/internal/message_python_test.py +54 -0
  170. data/ext/protoc/protobuf/python/google/protobuf/internal/message_test.py +681 -0
  171. data/ext/protoc/protobuf/python/google/protobuf/internal/missing_enum_values.proto +50 -0
  172. data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions.proto +58 -0
  173. data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto +49 -0
  174. data/ext/protoc/protobuf/python/google/protobuf/internal/more_messages.proto +51 -0
  175. data/ext/protoc/protobuf/python/google/protobuf/internal/python_message.py +1251 -0
  176. data/ext/protoc/protobuf/python/google/protobuf/internal/reflection_test.py +2934 -0
  177. data/ext/protoc/protobuf/python/google/protobuf/internal/service_reflection_test.py +136 -0
  178. data/ext/protoc/protobuf/python/google/protobuf/internal/symbol_database_test.py +120 -0
  179. data/ext/protoc/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto +52 -0
  180. data/ext/protoc/protobuf/python/google/protobuf/internal/test_util.py +662 -0
  181. data/ext/protoc/protobuf/python/google/protobuf/internal/text_encoding_test.py +68 -0
  182. data/ext/protoc/protobuf/python/google/protobuf/internal/text_format_test.py +743 -0
  183. data/ext/protoc/protobuf/python/google/protobuf/internal/type_checkers.py +328 -0
  184. data/ext/protoc/protobuf/python/google/protobuf/internal/unknown_fields_test.py +231 -0
  185. data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format.py +268 -0
  186. data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format_test.py +253 -0
  187. data/ext/protoc/protobuf/python/google/protobuf/message.py +284 -0
  188. data/ext/protoc/protobuf/python/google/protobuf/message_factory.py +155 -0
  189. data/ext/protoc/protobuf/python/google/protobuf/pyext/README +6 -0
  190. data/ext/protoc/protobuf/python/google/protobuf/pyext/__init__.py +0 -0
  191. data/ext/protoc/protobuf/python/google/protobuf/pyext/cpp_message.py +61 -0
  192. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.cc +357 -0
  193. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.h +96 -0
  194. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor_cpp2_test.py +58 -0
  195. data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.cc +338 -0
  196. data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.h +123 -0
  197. data/ext/protoc/protobuf/python/google/protobuf/pyext/message.cc +2561 -0
  198. data/ext/protoc/protobuf/python/google/protobuf/pyext/message.h +305 -0
  199. data/ext/protoc/protobuf/python/google/protobuf/pyext/message_factory_cpp2_test.py +56 -0
  200. data/ext/protoc/protobuf/python/google/protobuf/pyext/proto2_api_test.proto +38 -0
  201. data/ext/protoc/protobuf/python/google/protobuf/pyext/python.proto +66 -0
  202. data/ext/protoc/protobuf/python/google/protobuf/pyext/python_protobuf.h +57 -0
  203. data/ext/protoc/protobuf/python/google/protobuf/pyext/reflection_cpp2_generated_test.py +94 -0
  204. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc +763 -0
  205. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.h +172 -0
  206. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.cc +825 -0
  207. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.h +112 -0
  208. data/ext/protoc/protobuf/python/google/protobuf/pyext/scoped_pyobject_ptr.h +95 -0
  209. data/ext/protoc/protobuf/python/google/protobuf/reflection.py +205 -0
  210. data/ext/protoc/protobuf/python/google/protobuf/service.py +226 -0
  211. data/ext/protoc/protobuf/python/google/protobuf/service_reflection.py +284 -0
  212. data/ext/protoc/protobuf/python/google/protobuf/symbol_database.py +185 -0
  213. data/ext/protoc/protobuf/python/google/protobuf/text_encoding.py +110 -0
  214. data/ext/protoc/protobuf/python/google/protobuf/text_format.py +873 -0
  215. data/ext/protoc/protobuf/python/mox.py +1401 -0
  216. data/ext/protoc/protobuf/python/setup.py +201 -0
  217. data/ext/protoc/protobuf/python/stubout.py +140 -0
  218. data/ext/protoc/protobuf/src/Makefile.am +418 -0
  219. data/ext/protoc/protobuf/src/google/protobuf/SEBS +240 -0
  220. data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.cc +84 -0
  221. data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.h +145 -0
  222. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.cc +1603 -0
  223. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.h +378 -0
  224. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface_unittest.cc +1654 -0
  225. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc +158 -0
  226. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc +288 -0
  227. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.h +103 -0
  228. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc +431 -0
  229. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.h +122 -0
  230. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc +210 -0
  231. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.h +86 -0
  232. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc +166 -0
  233. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.h +185 -0
  234. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc +665 -0
  235. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h +99 -0
  236. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc +125 -0
  237. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
  238. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc +494 -0
  239. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h +206 -0
  240. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc +2645 -0
  241. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.h +175 -0
  242. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc +375 -0
  243. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.h +121 -0
  244. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_options.h +58 -0
  245. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc +123 -0
  246. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc +451 -0
  247. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +123 -0
  248. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc +334 -0
  249. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
  250. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc +642 -0
  251. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.h +127 -0
  252. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto +132 -0
  253. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.cc +2074 -0
  254. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.h +51 -0
  255. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.cc +480 -0
  256. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.h +317 -0
  257. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer_unittest.cc +617 -0
  258. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.cc +195 -0
  259. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.h +95 -0
  260. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc +233 -0
  261. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.h +69 -0
  262. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc +67 -0
  263. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.cc +333 -0
  264. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.h +99 -0
  265. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc +778 -0
  266. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.h +158 -0
  267. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.cc +207 -0
  268. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.h +109 -0
  269. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.cc +213 -0
  270. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.h +162 -0
  271. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.cc +534 -0
  272. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.h +115 -0
  273. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.cc +158 -0
  274. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.h +72 -0
  275. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc +77 -0
  276. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.h +101 -0
  277. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.cc +737 -0
  278. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.h +322 -0
  279. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.cc +826 -0
  280. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.h +121 -0
  281. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.cc +1666 -0
  282. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.h +140 -0
  283. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.cc +1343 -0
  284. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.h +173 -0
  285. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc +266 -0
  286. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.h +124 -0
  287. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_plugin_unittest.cc +124 -0
  288. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc +877 -0
  289. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.h +160 -0
  290. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.cc +473 -0
  291. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.h +135 -0
  292. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc +201 -0
  293. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.h +90 -0
  294. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.cc +1056 -0
  295. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.h +160 -0
  296. data/ext/protoc/protobuf/src/google/protobuf/compiler/main.cc +61 -0
  297. data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.cc +240 -0
  298. data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.h +117 -0
  299. data/ext/protoc/protobuf/src/google/protobuf/compiler/package_info.h +64 -0
  300. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.cc +1750 -0
  301. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.h +522 -0
  302. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser_unittest.cc +2612 -0
  303. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.cc +163 -0
  304. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.h +72 -0
  305. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.cc +1148 -0
  306. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.h +897 -0
  307. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.proto +147 -0
  308. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.cc +1262 -0
  309. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.h +166 -0
  310. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_plugin_unittest.cc +118 -0
  311. data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.cc +463 -0
  312. data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.h +108 -0
  313. data/ext/protoc/protobuf/src/google/protobuf/compiler/test_plugin.cc +51 -0
  314. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_output_unittest.sh +91 -0
  315. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.cc +218 -0
  316. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.h +93 -0
  317. data/ext/protoc/protobuf/src/google/protobuf/descriptor.cc +5420 -0
  318. data/ext/protoc/protobuf/src/google/protobuf/descriptor.h +1691 -0
  319. data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.cc +9135 -0
  320. data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.h +6761 -0
  321. data/ext/protoc/protobuf/src/google/protobuf/descriptor.proto +687 -0
  322. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.cc +543 -0
  323. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.h +369 -0
  324. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database_unittest.cc +748 -0
  325. data/ext/protoc/protobuf/src/google/protobuf/descriptor_pb2_test.py +54 -0
  326. data/ext/protoc/protobuf/src/google/protobuf/descriptor_unittest.cc +5501 -0
  327. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.cc +764 -0
  328. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.h +148 -0
  329. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message_unittest.cc +230 -0
  330. data/ext/protoc/protobuf/src/google/protobuf/extension_set.cc +1663 -0
  331. data/ext/protoc/protobuf/src/google/protobuf/extension_set.h +1234 -0
  332. data/ext/protoc/protobuf/src/google/protobuf/extension_set_heavy.cc +734 -0
  333. data/ext/protoc/protobuf/src/google/protobuf/extension_set_unittest.cc +1095 -0
  334. data/ext/protoc/protobuf/src/google/protobuf/generated_enum_reflection.h +91 -0
  335. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.cc +1683 -0
  336. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.h +504 -0
  337. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection_unittest.cc +795 -0
  338. data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.cc +65 -0
  339. data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.h +113 -0
  340. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.cc +914 -0
  341. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.h +1220 -0
  342. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_inl.h +69 -0
  343. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_unittest.cc +1378 -0
  344. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.cc +326 -0
  345. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.h +209 -0
  346. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream_unittest.sh +44 -0
  347. data/ext/protoc/protobuf/src/google/protobuf/io/package_info.h +54 -0
  348. data/ext/protoc/protobuf/src/google/protobuf/io/printer.cc +198 -0
  349. data/ext/protoc/protobuf/src/google/protobuf/io/printer.h +136 -0
  350. data/ext/protoc/protobuf/src/google/protobuf/io/printer_unittest.cc +285 -0
  351. data/ext/protoc/protobuf/src/google/protobuf/io/strtod.cc +113 -0
  352. data/ext/protoc/protobuf/src/google/protobuf/io/strtod.h +50 -0
  353. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.cc +1127 -0
  354. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.h +402 -0
  355. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer_unittest.cc +999 -0
  356. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.cc +57 -0
  357. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.h +248 -0
  358. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +473 -0
  359. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +358 -0
  360. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +405 -0
  361. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +354 -0
  362. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_unittest.cc +965 -0
  363. data/ext/protoc/protobuf/src/google/protobuf/lite_unittest.cc +350 -0
  364. data/ext/protoc/protobuf/src/google/protobuf/message.cc +358 -0
  365. data/ext/protoc/protobuf/src/google/protobuf/message.h +866 -0
  366. data/ext/protoc/protobuf/src/google/protobuf/message_lite.cc +335 -0
  367. data/ext/protoc/protobuf/src/google/protobuf/message_lite.h +247 -0
  368. data/ext/protoc/protobuf/src/google/protobuf/message_unittest.cc +427 -0
  369. data/ext/protoc/protobuf/src/google/protobuf/package_info.h +64 -0
  370. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.cc +269 -0
  371. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.h +81 -0
  372. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops_unittest.cc +475 -0
  373. data/ext/protoc/protobuf/src/google/protobuf/repeated_field.cc +87 -0
  374. data/ext/protoc/protobuf/src/google/protobuf/repeated_field.h +1603 -0
  375. data/ext/protoc/protobuf/src/google/protobuf/repeated_field_reflection_unittest.cc +195 -0
  376. data/ext/protoc/protobuf/src/google/protobuf/repeated_field_unittest.cc +1442 -0
  377. data/ext/protoc/protobuf/src/google/protobuf/service.cc +46 -0
  378. data/ext/protoc/protobuf/src/google/protobuf/service.h +291 -0
  379. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops.h +227 -0
  380. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm64_gcc.h +325 -0
  381. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h +151 -0
  382. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h +146 -0
  383. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h +122 -0
  384. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h +137 -0
  385. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h +225 -0
  386. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h +313 -0
  387. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_pnacl.h +73 -0
  388. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_solaris.h +188 -0
  389. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_tsan.h +219 -0
  390. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc +137 -0
  391. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h +293 -0
  392. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc +112 -0
  393. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h +150 -0
  394. data/ext/protoc/protobuf/src/google/protobuf/stubs/common.cc +395 -0
  395. data/ext/protoc/protobuf/src/google/protobuf/stubs/common.h +1226 -0
  396. data/ext/protoc/protobuf/src/google/protobuf/stubs/common_unittest.cc +357 -0
  397. data/ext/protoc/protobuf/src/google/protobuf/stubs/hash.h +232 -0
  398. data/ext/protoc/protobuf/src/google/protobuf/stubs/map_util.h +771 -0
  399. data/ext/protoc/protobuf/src/google/protobuf/stubs/once.cc +99 -0
  400. data/ext/protoc/protobuf/src/google/protobuf/stubs/once.h +166 -0
  401. data/ext/protoc/protobuf/src/google/protobuf/stubs/once_unittest.cc +253 -0
  402. data/ext/protoc/protobuf/src/google/protobuf/stubs/platform_macros.h +103 -0
  403. data/ext/protoc/protobuf/src/google/protobuf/stubs/shared_ptr.h +470 -0
  404. data/ext/protoc/protobuf/src/google/protobuf/stubs/stl_util.h +121 -0
  405. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.cc +175 -0
  406. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.h +76 -0
  407. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf_unittest.cc +152 -0
  408. data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid.cc +536 -0
  409. data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid_unittest.cc +40 -0
  410. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.cc +1279 -0
  411. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.h +562 -0
  412. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil_unittest.cc +73 -0
  413. data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.cc +134 -0
  414. data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.h +170 -0
  415. data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util.h +138 -0
  416. data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util_unittest.cc +130 -0
  417. data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits.h +336 -0
  418. data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits_unittest.cc +628 -0
  419. data/ext/protoc/protobuf/src/google/protobuf/test_util.cc +3345 -0
  420. data/ext/protoc/protobuf/src/google/protobuf/test_util.h +215 -0
  421. data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.cc +1585 -0
  422. data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.h +101 -0
  423. data/ext/protoc/protobuf/src/google/protobuf/testdata/bad_utf8_string +1 -0
  424. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message +0 -0
  425. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message_oneof_implemented +0 -0
  426. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_packed_fields_message +0 -0
  427. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data.txt +134 -0
  428. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt +129 -0
  429. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy.txt +134 -0
  430. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt +129 -0
  431. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt +134 -0
  432. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt +134 -0
  433. data/ext/protoc/protobuf/src/google/protobuf/testing/file.cc +194 -0
  434. data/ext/protoc/protobuf/src/google/protobuf/testing/file.h +97 -0
  435. data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.cc +255 -0
  436. data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.h +102 -0
  437. data/ext/protoc/protobuf/src/google/protobuf/testing/zcgunzip.cc +73 -0
  438. data/ext/protoc/protobuf/src/google/protobuf/testing/zcgzip.cc +79 -0
  439. data/ext/protoc/protobuf/src/google/protobuf/text_format.cc +1746 -0
  440. data/ext/protoc/protobuf/src/google/protobuf/text_format.h +473 -0
  441. data/ext/protoc/protobuf/src/google/protobuf/text_format_unittest.cc +1479 -0
  442. data/ext/protoc/protobuf/src/google/protobuf/unittest.proto +861 -0
  443. data/ext/protoc/protobuf/src/google/protobuf/unittest_custom_options.proto +393 -0
  444. data/ext/protoc/protobuf/src/google/protobuf/unittest_embed_optimize_for.proto +50 -0
  445. data/ext/protoc/protobuf/src/google/protobuf/unittest_empty.proto +37 -0
  446. data/ext/protoc/protobuf/src/google/protobuf/unittest_enormous_descriptor.proto +1046 -0
  447. data/ext/protoc/protobuf/src/google/protobuf/unittest_import.proto +64 -0
  448. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_lite.proto +51 -0
  449. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public.proto +40 -0
  450. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public_lite.proto +42 -0
  451. data/ext/protoc/protobuf/src/google/protobuf/unittest_lite.proto +384 -0
  452. data/ext/protoc/protobuf/src/google/protobuf/unittest_lite_imports_nonlite.proto +43 -0
  453. data/ext/protoc/protobuf/src/google/protobuf/unittest_mset.proto +83 -0
  454. data/ext/protoc/protobuf/src/google/protobuf/unittest_no_generic_services.proto +53 -0
  455. data/ext/protoc/protobuf/src/google/protobuf/unittest_optimize_for.proto +66 -0
  456. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.cc +265 -0
  457. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.h +318 -0
  458. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set_unittest.cc +599 -0
  459. data/ext/protoc/protobuf/src/google/protobuf/wire_format.cc +1101 -0
  460. data/ext/protoc/protobuf/src/google/protobuf/wire_format.h +336 -0
  461. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.cc +471 -0
  462. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.h +661 -0
  463. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite_inl.h +860 -0
  464. data/ext/protoc/protobuf/src/google/protobuf/wire_format_unittest.cc +1120 -0
  465. data/ext/protoc/protobuf/src/solaris/libstdc++.la +51 -0
  466. data/ext/protoc/protobuf/vsprojects/config.h +29 -0
  467. data/ext/protoc/protobuf/vsprojects/convert2008to2005.sh +20 -0
  468. data/ext/protoc/protobuf/vsprojects/extract_includes.bat +50 -0
  469. data/ext/protoc/protobuf/vsprojects/libprotobuf-lite.vcproj +302 -0
  470. data/ext/protoc/protobuf/vsprojects/libprotobuf.vcproj +470 -0
  471. data/ext/protoc/protobuf/vsprojects/libprotoc.vcproj +466 -0
  472. data/ext/protoc/protobuf/vsprojects/lite-test.vcproj +305 -0
  473. data/ext/protoc/protobuf/vsprojects/protobuf.sln +92 -0
  474. data/ext/protoc/protobuf/vsprojects/protoc.vcproj +192 -0
  475. data/ext/protoc/protobuf/vsprojects/readme.txt +114 -0
  476. data/ext/protoc/protobuf/vsprojects/test_plugin.vcproj +209 -0
  477. data/ext/protoc/protobuf/vsprojects/tests.vcproj +681 -0
  478. data/lib/protoc/version.rb +1 -1
  479. metadata +480 -3
@@ -0,0 +1,54 @@
1
+ #! /usr/bin/python
2
+ #
3
+ # Protocol Buffers - Google's data interchange format
4
+ # Copyright 2008 Google Inc. All rights reserved.
5
+ # https://developers.google.com/protocol-buffers/
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are
9
+ # met:
10
+ #
11
+ # * Redistributions of source code must retain the above copyright
12
+ # notice, this list of conditions and the following disclaimer.
13
+ # * Redistributions in binary form must reproduce the above
14
+ # copyright notice, this list of conditions and the following disclaimer
15
+ # in the documentation and/or other materials provided with the
16
+ # distribution.
17
+ # * Neither the name of Google Inc. nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ """Tests for ..public.message_factory for the pure Python implementation."""
34
+
35
+ import os
36
+ os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'python'
37
+
38
+ # We must set the implementation version above before the google3 imports.
39
+ # pylint: disable=g-import-not-at-top
40
+ from google.apputils import basetest
41
+ from google.protobuf.internal import api_implementation
42
+ # Run all tests from the original module by putting them in our namespace.
43
+ # pylint: disable=wildcard-import
44
+ from google.protobuf.internal.message_factory_test import *
45
+
46
+
47
+ class ConfirmPurePythonTest(basetest.TestCase):
48
+
49
+ def testImplementationSetting(self):
50
+ self.assertEqual('python', api_implementation.Type())
51
+
52
+
53
+ if __name__ == '__main__':
54
+ basetest.main()
@@ -0,0 +1,131 @@
1
+ #! /usr/bin/python
2
+ #
3
+ # Protocol Buffers - Google's data interchange format
4
+ # Copyright 2008 Google Inc. All rights reserved.
5
+ # https://developers.google.com/protocol-buffers/
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are
9
+ # met:
10
+ #
11
+ # * Redistributions of source code must retain the above copyright
12
+ # notice, this list of conditions and the following disclaimer.
13
+ # * Redistributions in binary form must reproduce the above
14
+ # copyright notice, this list of conditions and the following disclaimer
15
+ # in the documentation and/or other materials provided with the
16
+ # distribution.
17
+ # * Neither the name of Google Inc. nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ """Tests for google.protobuf.message_factory."""
34
+
35
+ __author__ = 'matthewtoia@google.com (Matt Toia)'
36
+
37
+ from google.apputils import basetest
38
+ from google.protobuf import descriptor_pb2
39
+ from google.protobuf.internal import factory_test1_pb2
40
+ from google.protobuf.internal import factory_test2_pb2
41
+ from google.protobuf import descriptor_database
42
+ from google.protobuf import descriptor_pool
43
+ from google.protobuf import message_factory
44
+
45
+
46
+ class MessageFactoryTest(basetest.TestCase):
47
+
48
+ def setUp(self):
49
+ self.factory_test1_fd = descriptor_pb2.FileDescriptorProto.FromString(
50
+ factory_test1_pb2.DESCRIPTOR.serialized_pb)
51
+ self.factory_test2_fd = descriptor_pb2.FileDescriptorProto.FromString(
52
+ factory_test2_pb2.DESCRIPTOR.serialized_pb)
53
+
54
+ def _ExerciseDynamicClass(self, cls):
55
+ msg = cls()
56
+ msg.mandatory = 42
57
+ msg.nested_factory_2_enum = 0
58
+ msg.nested_factory_2_message.value = 'nested message value'
59
+ msg.factory_1_message.factory_1_enum = 1
60
+ msg.factory_1_message.nested_factory_1_enum = 0
61
+ msg.factory_1_message.nested_factory_1_message.value = (
62
+ 'nested message value')
63
+ msg.factory_1_message.scalar_value = 22
64
+ msg.factory_1_message.list_value.extend([u'one', u'two', u'three'])
65
+ msg.factory_1_message.list_value.append(u'four')
66
+ msg.factory_1_enum = 1
67
+ msg.nested_factory_1_enum = 0
68
+ msg.nested_factory_1_message.value = 'nested message value'
69
+ msg.circular_message.mandatory = 1
70
+ msg.circular_message.circular_message.mandatory = 2
71
+ msg.circular_message.scalar_value = 'one deep'
72
+ msg.scalar_value = 'zero deep'
73
+ msg.list_value.extend([u'four', u'three', u'two'])
74
+ msg.list_value.append(u'one')
75
+ msg.grouped.add()
76
+ msg.grouped[0].part_1 = 'hello'
77
+ msg.grouped[0].part_2 = 'world'
78
+ msg.grouped.add(part_1='testing', part_2='123')
79
+ msg.loop.loop.mandatory = 2
80
+ msg.loop.loop.loop.loop.mandatory = 4
81
+ serialized = msg.SerializeToString()
82
+ converted = factory_test2_pb2.Factory2Message.FromString(serialized)
83
+ reserialized = converted.SerializeToString()
84
+ self.assertEquals(serialized, reserialized)
85
+ result = cls.FromString(reserialized)
86
+ self.assertEquals(msg, result)
87
+
88
+ def testGetPrototype(self):
89
+ db = descriptor_database.DescriptorDatabase()
90
+ pool = descriptor_pool.DescriptorPool(db)
91
+ db.Add(self.factory_test1_fd)
92
+ db.Add(self.factory_test2_fd)
93
+ factory = message_factory.MessageFactory()
94
+ cls = factory.GetPrototype(pool.FindMessageTypeByName(
95
+ 'google.protobuf.python.internal.Factory2Message'))
96
+ self.assertIsNot(cls, factory_test2_pb2.Factory2Message)
97
+ self._ExerciseDynamicClass(cls)
98
+ cls2 = factory.GetPrototype(pool.FindMessageTypeByName(
99
+ 'google.protobuf.python.internal.Factory2Message'))
100
+ self.assertIs(cls, cls2)
101
+
102
+ def testGetMessages(self):
103
+ # performed twice because multiple calls with the same input must be allowed
104
+ for _ in range(2):
105
+ messages = message_factory.GetMessages([self.factory_test2_fd,
106
+ self.factory_test1_fd])
107
+ self.assertContainsSubset(
108
+ ['google.protobuf.python.internal.Factory2Message',
109
+ 'google.protobuf.python.internal.Factory1Message'],
110
+ messages.keys())
111
+ self._ExerciseDynamicClass(
112
+ messages['google.protobuf.python.internal.Factory2Message'])
113
+ self.assertContainsSubset(
114
+ ['google.protobuf.python.internal.Factory2Message.one_more_field',
115
+ 'google.protobuf.python.internal.another_field'],
116
+ (messages['google.protobuf.python.internal.Factory1Message']
117
+ ._extensions_by_name.keys()))
118
+ factory_msg1 = messages['google.protobuf.python.internal.Factory1Message']
119
+ msg1 = messages['google.protobuf.python.internal.Factory1Message']()
120
+ ext1 = factory_msg1._extensions_by_name[
121
+ 'google.protobuf.python.internal.Factory2Message.one_more_field']
122
+ ext2 = factory_msg1._extensions_by_name[
123
+ 'google.protobuf.python.internal.another_field']
124
+ msg1.Extensions[ext1] = 'test1'
125
+ msg1.Extensions[ext2] = 'test2'
126
+ self.assertEquals('test1', msg1.Extensions[ext1])
127
+ self.assertEquals('test2', msg1.Extensions[ext2])
128
+
129
+
130
+ if __name__ == '__main__':
131
+ basetest.main()
@@ -0,0 +1,78 @@
1
+ # Protocol Buffers - Google's data interchange format
2
+ # Copyright 2008 Google Inc. All rights reserved.
3
+ # https://developers.google.com/protocol-buffers/
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are
7
+ # met:
8
+ #
9
+ # * Redistributions of source code must retain the above copyright
10
+ # notice, this list of conditions and the following disclaimer.
11
+ # * Redistributions in binary form must reproduce the above
12
+ # copyright notice, this list of conditions and the following disclaimer
13
+ # in the documentation and/or other materials provided with the
14
+ # distribution.
15
+ # * Neither the name of Google Inc. nor the names of its
16
+ # contributors may be used to endorse or promote products derived from
17
+ # this software without specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ """Defines a listener interface for observing certain
32
+ state transitions on Message objects.
33
+
34
+ Also defines a null implementation of this interface.
35
+ """
36
+
37
+ __author__ = 'robinson@google.com (Will Robinson)'
38
+
39
+
40
+ class MessageListener(object):
41
+
42
+ """Listens for modifications made to a message. Meant to be registered via
43
+ Message._SetListener().
44
+
45
+ Attributes:
46
+ dirty: If True, then calling Modified() would be a no-op. This can be
47
+ used to avoid these calls entirely in the common case.
48
+ """
49
+
50
+ def Modified(self):
51
+ """Called every time the message is modified in such a way that the parent
52
+ message may need to be updated. This currently means either:
53
+ (a) The message was modified for the first time, so the parent message
54
+ should henceforth mark the message as present.
55
+ (b) The message's cached byte size became dirty -- i.e. the message was
56
+ modified for the first time after a previous call to ByteSize().
57
+ Therefore the parent should also mark its byte size as dirty.
58
+ Note that (a) implies (b), since new objects start out with a client cached
59
+ size (zero). However, we document (a) explicitly because it is important.
60
+
61
+ Modified() will *only* be called in response to one of these two events --
62
+ not every time the sub-message is modified.
63
+
64
+ Note that if the listener's |dirty| attribute is true, then calling
65
+ Modified at the moment would be a no-op, so it can be skipped. Performance-
66
+ sensitive callers should check this attribute directly before calling since
67
+ it will be true most of the time.
68
+ """
69
+
70
+ raise NotImplementedError
71
+
72
+
73
+ class NullMessageListener(object):
74
+
75
+ """No-op MessageListener implementation."""
76
+
77
+ def Modified(self):
78
+ pass
@@ -0,0 +1,54 @@
1
+ #! /usr/bin/python
2
+ #
3
+ # Protocol Buffers - Google's data interchange format
4
+ # Copyright 2008 Google Inc. All rights reserved.
5
+ # https://developers.google.com/protocol-buffers/
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are
9
+ # met:
10
+ #
11
+ # * Redistributions of source code must retain the above copyright
12
+ # notice, this list of conditions and the following disclaimer.
13
+ # * Redistributions in binary form must reproduce the above
14
+ # copyright notice, this list of conditions and the following disclaimer
15
+ # in the documentation and/or other materials provided with the
16
+ # distribution.
17
+ # * Neither the name of Google Inc. nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ """Tests for ..public.message for the pure Python implementation."""
34
+
35
+ import os
36
+ os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'python'
37
+
38
+ # We must set the implementation version above before the google3 imports.
39
+ # pylint: disable=g-import-not-at-top
40
+ from google.apputils import basetest
41
+ from google.protobuf.internal import api_implementation
42
+ # Run all tests from the original module by putting them in our namespace.
43
+ # pylint: disable=wildcard-import
44
+ from google.protobuf.internal.message_test import *
45
+
46
+
47
+ class ConfirmPurePythonTest(basetest.TestCase):
48
+
49
+ def testImplementationSetting(self):
50
+ self.assertEqual('python', api_implementation.Type())
51
+
52
+
53
+ if __name__ == '__main__':
54
+ basetest.main()
@@ -0,0 +1,681 @@
1
+ #! /usr/bin/python
2
+ #
3
+ # Protocol Buffers - Google's data interchange format
4
+ # Copyright 2008 Google Inc. All rights reserved.
5
+ # https://developers.google.com/protocol-buffers/
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are
9
+ # met:
10
+ #
11
+ # * Redistributions of source code must retain the above copyright
12
+ # notice, this list of conditions and the following disclaimer.
13
+ # * Redistributions in binary form must reproduce the above
14
+ # copyright notice, this list of conditions and the following disclaimer
15
+ # in the documentation and/or other materials provided with the
16
+ # distribution.
17
+ # * Neither the name of Google Inc. nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ """Tests python protocol buffers against the golden message.
34
+
35
+ Note that the golden messages exercise every known field type, thus this
36
+ test ends up exercising and verifying nearly all of the parsing and
37
+ serialization code in the whole library.
38
+
39
+ TODO(kenton): Merge with wire_format_test? It doesn't make a whole lot of
40
+ sense to call this a test of the "message" module, which only declares an
41
+ abstract interface.
42
+ """
43
+
44
+ __author__ = 'gps@google.com (Gregory P. Smith)'
45
+
46
+ import copy
47
+ import math
48
+ import operator
49
+ import pickle
50
+ import sys
51
+
52
+ from google.apputils import basetest
53
+ from google.protobuf import unittest_pb2
54
+ from google.protobuf.internal import api_implementation
55
+ from google.protobuf.internal import test_util
56
+ from google.protobuf import message
57
+
58
+ # Python pre-2.6 does not have isinf() or isnan() functions, so we have
59
+ # to provide our own.
60
+ def isnan(val):
61
+ # NaN is never equal to itself.
62
+ return val != val
63
+ def isinf(val):
64
+ # Infinity times zero equals NaN.
65
+ return not isnan(val) and isnan(val * 0)
66
+ def IsPosInf(val):
67
+ return isinf(val) and (val > 0)
68
+ def IsNegInf(val):
69
+ return isinf(val) and (val < 0)
70
+
71
+
72
+ class MessageTest(basetest.TestCase):
73
+
74
+ def testBadUtf8String(self):
75
+ if api_implementation.Type() != 'python':
76
+ self.skipTest("Skipping testBadUtf8String, currently only the python "
77
+ "api implementation raises UnicodeDecodeError when a "
78
+ "string field contains bad utf-8.")
79
+ bad_utf8_data = test_util.GoldenFileData('bad_utf8_string')
80
+ with self.assertRaises(UnicodeDecodeError) as context:
81
+ unittest_pb2.TestAllTypes.FromString(bad_utf8_data)
82
+ self.assertIn('field: protobuf_unittest.TestAllTypes.optional_string',
83
+ str(context.exception))
84
+
85
+ def testGoldenMessage(self):
86
+ golden_data = test_util.GoldenFileData(
87
+ 'golden_message_oneof_implemented')
88
+ golden_message = unittest_pb2.TestAllTypes()
89
+ golden_message.ParseFromString(golden_data)
90
+ test_util.ExpectAllFieldsSet(self, golden_message)
91
+ self.assertEqual(golden_data, golden_message.SerializeToString())
92
+ golden_copy = copy.deepcopy(golden_message)
93
+ self.assertEqual(golden_data, golden_copy.SerializeToString())
94
+
95
+ def testGoldenExtensions(self):
96
+ golden_data = test_util.GoldenFileData('golden_message')
97
+ golden_message = unittest_pb2.TestAllExtensions()
98
+ golden_message.ParseFromString(golden_data)
99
+ all_set = unittest_pb2.TestAllExtensions()
100
+ test_util.SetAllExtensions(all_set)
101
+ self.assertEquals(all_set, golden_message)
102
+ self.assertEqual(golden_data, golden_message.SerializeToString())
103
+ golden_copy = copy.deepcopy(golden_message)
104
+ self.assertEqual(golden_data, golden_copy.SerializeToString())
105
+
106
+ def testGoldenPackedMessage(self):
107
+ golden_data = test_util.GoldenFileData('golden_packed_fields_message')
108
+ golden_message = unittest_pb2.TestPackedTypes()
109
+ golden_message.ParseFromString(golden_data)
110
+ all_set = unittest_pb2.TestPackedTypes()
111
+ test_util.SetAllPackedFields(all_set)
112
+ self.assertEquals(all_set, golden_message)
113
+ self.assertEqual(golden_data, all_set.SerializeToString())
114
+ golden_copy = copy.deepcopy(golden_message)
115
+ self.assertEqual(golden_data, golden_copy.SerializeToString())
116
+
117
+ def testGoldenPackedExtensions(self):
118
+ golden_data = test_util.GoldenFileData('golden_packed_fields_message')
119
+ golden_message = unittest_pb2.TestPackedExtensions()
120
+ golden_message.ParseFromString(golden_data)
121
+ all_set = unittest_pb2.TestPackedExtensions()
122
+ test_util.SetAllPackedExtensions(all_set)
123
+ self.assertEquals(all_set, golden_message)
124
+ self.assertEqual(golden_data, all_set.SerializeToString())
125
+ golden_copy = copy.deepcopy(golden_message)
126
+ self.assertEqual(golden_data, golden_copy.SerializeToString())
127
+
128
+ def testPickleSupport(self):
129
+ golden_data = test_util.GoldenFileData('golden_message')
130
+ golden_message = unittest_pb2.TestAllTypes()
131
+ golden_message.ParseFromString(golden_data)
132
+ pickled_message = pickle.dumps(golden_message)
133
+
134
+ unpickled_message = pickle.loads(pickled_message)
135
+ self.assertEquals(unpickled_message, golden_message)
136
+
137
+
138
+ def testPickleIncompleteProto(self):
139
+ golden_message = unittest_pb2.TestRequired(a=1)
140
+ pickled_message = pickle.dumps(golden_message)
141
+
142
+ unpickled_message = pickle.loads(pickled_message)
143
+ self.assertEquals(unpickled_message, golden_message)
144
+ self.assertEquals(unpickled_message.a, 1)
145
+ # This is still an incomplete proto - so serializing should fail
146
+ self.assertRaises(message.EncodeError, unpickled_message.SerializeToString)
147
+
148
+ def testPositiveInfinity(self):
149
+ golden_data = (b'\x5D\x00\x00\x80\x7F'
150
+ b'\x61\x00\x00\x00\x00\x00\x00\xF0\x7F'
151
+ b'\xCD\x02\x00\x00\x80\x7F'
152
+ b'\xD1\x02\x00\x00\x00\x00\x00\x00\xF0\x7F')
153
+ golden_message = unittest_pb2.TestAllTypes()
154
+ golden_message.ParseFromString(golden_data)
155
+ self.assertTrue(IsPosInf(golden_message.optional_float))
156
+ self.assertTrue(IsPosInf(golden_message.optional_double))
157
+ self.assertTrue(IsPosInf(golden_message.repeated_float[0]))
158
+ self.assertTrue(IsPosInf(golden_message.repeated_double[0]))
159
+ self.assertEqual(golden_data, golden_message.SerializeToString())
160
+
161
+ def testNegativeInfinity(self):
162
+ golden_data = (b'\x5D\x00\x00\x80\xFF'
163
+ b'\x61\x00\x00\x00\x00\x00\x00\xF0\xFF'
164
+ b'\xCD\x02\x00\x00\x80\xFF'
165
+ b'\xD1\x02\x00\x00\x00\x00\x00\x00\xF0\xFF')
166
+ golden_message = unittest_pb2.TestAllTypes()
167
+ golden_message.ParseFromString(golden_data)
168
+ self.assertTrue(IsNegInf(golden_message.optional_float))
169
+ self.assertTrue(IsNegInf(golden_message.optional_double))
170
+ self.assertTrue(IsNegInf(golden_message.repeated_float[0]))
171
+ self.assertTrue(IsNegInf(golden_message.repeated_double[0]))
172
+ self.assertEqual(golden_data, golden_message.SerializeToString())
173
+
174
+ def testNotANumber(self):
175
+ golden_data = (b'\x5D\x00\x00\xC0\x7F'
176
+ b'\x61\x00\x00\x00\x00\x00\x00\xF8\x7F'
177
+ b'\xCD\x02\x00\x00\xC0\x7F'
178
+ b'\xD1\x02\x00\x00\x00\x00\x00\x00\xF8\x7F')
179
+ golden_message = unittest_pb2.TestAllTypes()
180
+ golden_message.ParseFromString(golden_data)
181
+ self.assertTrue(isnan(golden_message.optional_float))
182
+ self.assertTrue(isnan(golden_message.optional_double))
183
+ self.assertTrue(isnan(golden_message.repeated_float[0]))
184
+ self.assertTrue(isnan(golden_message.repeated_double[0]))
185
+
186
+ # The protocol buffer may serialize to any one of multiple different
187
+ # representations of a NaN. Rather than verify a specific representation,
188
+ # verify the serialized string can be converted into a correctly
189
+ # behaving protocol buffer.
190
+ serialized = golden_message.SerializeToString()
191
+ message = unittest_pb2.TestAllTypes()
192
+ message.ParseFromString(serialized)
193
+ self.assertTrue(isnan(message.optional_float))
194
+ self.assertTrue(isnan(message.optional_double))
195
+ self.assertTrue(isnan(message.repeated_float[0]))
196
+ self.assertTrue(isnan(message.repeated_double[0]))
197
+
198
+ def testPositiveInfinityPacked(self):
199
+ golden_data = (b'\xA2\x06\x04\x00\x00\x80\x7F'
200
+ b'\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF0\x7F')
201
+ golden_message = unittest_pb2.TestPackedTypes()
202
+ golden_message.ParseFromString(golden_data)
203
+ self.assertTrue(IsPosInf(golden_message.packed_float[0]))
204
+ self.assertTrue(IsPosInf(golden_message.packed_double[0]))
205
+ self.assertEqual(golden_data, golden_message.SerializeToString())
206
+
207
+ def testNegativeInfinityPacked(self):
208
+ golden_data = (b'\xA2\x06\x04\x00\x00\x80\xFF'
209
+ b'\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF0\xFF')
210
+ golden_message = unittest_pb2.TestPackedTypes()
211
+ golden_message.ParseFromString(golden_data)
212
+ self.assertTrue(IsNegInf(golden_message.packed_float[0]))
213
+ self.assertTrue(IsNegInf(golden_message.packed_double[0]))
214
+ self.assertEqual(golden_data, golden_message.SerializeToString())
215
+
216
+ def testNotANumberPacked(self):
217
+ golden_data = (b'\xA2\x06\x04\x00\x00\xC0\x7F'
218
+ b'\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF8\x7F')
219
+ golden_message = unittest_pb2.TestPackedTypes()
220
+ golden_message.ParseFromString(golden_data)
221
+ self.assertTrue(isnan(golden_message.packed_float[0]))
222
+ self.assertTrue(isnan(golden_message.packed_double[0]))
223
+
224
+ serialized = golden_message.SerializeToString()
225
+ message = unittest_pb2.TestPackedTypes()
226
+ message.ParseFromString(serialized)
227
+ self.assertTrue(isnan(message.packed_float[0]))
228
+ self.assertTrue(isnan(message.packed_double[0]))
229
+
230
+ def testExtremeFloatValues(self):
231
+ message = unittest_pb2.TestAllTypes()
232
+
233
+ # Most positive exponent, no significand bits set.
234
+ kMostPosExponentNoSigBits = math.pow(2, 127)
235
+ message.optional_float = kMostPosExponentNoSigBits
236
+ message.ParseFromString(message.SerializeToString())
237
+ self.assertTrue(message.optional_float == kMostPosExponentNoSigBits)
238
+
239
+ # Most positive exponent, one significand bit set.
240
+ kMostPosExponentOneSigBit = 1.5 * math.pow(2, 127)
241
+ message.optional_float = kMostPosExponentOneSigBit
242
+ message.ParseFromString(message.SerializeToString())
243
+ self.assertTrue(message.optional_float == kMostPosExponentOneSigBit)
244
+
245
+ # Repeat last two cases with values of same magnitude, but negative.
246
+ message.optional_float = -kMostPosExponentNoSigBits
247
+ message.ParseFromString(message.SerializeToString())
248
+ self.assertTrue(message.optional_float == -kMostPosExponentNoSigBits)
249
+
250
+ message.optional_float = -kMostPosExponentOneSigBit
251
+ message.ParseFromString(message.SerializeToString())
252
+ self.assertTrue(message.optional_float == -kMostPosExponentOneSigBit)
253
+
254
+ # Most negative exponent, no significand bits set.
255
+ kMostNegExponentNoSigBits = math.pow(2, -127)
256
+ message.optional_float = kMostNegExponentNoSigBits
257
+ message.ParseFromString(message.SerializeToString())
258
+ self.assertTrue(message.optional_float == kMostNegExponentNoSigBits)
259
+
260
+ # Most negative exponent, one significand bit set.
261
+ kMostNegExponentOneSigBit = 1.5 * math.pow(2, -127)
262
+ message.optional_float = kMostNegExponentOneSigBit
263
+ message.ParseFromString(message.SerializeToString())
264
+ self.assertTrue(message.optional_float == kMostNegExponentOneSigBit)
265
+
266
+ # Repeat last two cases with values of the same magnitude, but negative.
267
+ message.optional_float = -kMostNegExponentNoSigBits
268
+ message.ParseFromString(message.SerializeToString())
269
+ self.assertTrue(message.optional_float == -kMostNegExponentNoSigBits)
270
+
271
+ message.optional_float = -kMostNegExponentOneSigBit
272
+ message.ParseFromString(message.SerializeToString())
273
+ self.assertTrue(message.optional_float == -kMostNegExponentOneSigBit)
274
+
275
+ def testExtremeDoubleValues(self):
276
+ message = unittest_pb2.TestAllTypes()
277
+
278
+ # Most positive exponent, no significand bits set.
279
+ kMostPosExponentNoSigBits = math.pow(2, 1023)
280
+ message.optional_double = kMostPosExponentNoSigBits
281
+ message.ParseFromString(message.SerializeToString())
282
+ self.assertTrue(message.optional_double == kMostPosExponentNoSigBits)
283
+
284
+ # Most positive exponent, one significand bit set.
285
+ kMostPosExponentOneSigBit = 1.5 * math.pow(2, 1023)
286
+ message.optional_double = kMostPosExponentOneSigBit
287
+ message.ParseFromString(message.SerializeToString())
288
+ self.assertTrue(message.optional_double == kMostPosExponentOneSigBit)
289
+
290
+ # Repeat last two cases with values of same magnitude, but negative.
291
+ message.optional_double = -kMostPosExponentNoSigBits
292
+ message.ParseFromString(message.SerializeToString())
293
+ self.assertTrue(message.optional_double == -kMostPosExponentNoSigBits)
294
+
295
+ message.optional_double = -kMostPosExponentOneSigBit
296
+ message.ParseFromString(message.SerializeToString())
297
+ self.assertTrue(message.optional_double == -kMostPosExponentOneSigBit)
298
+
299
+ # Most negative exponent, no significand bits set.
300
+ kMostNegExponentNoSigBits = math.pow(2, -1023)
301
+ message.optional_double = kMostNegExponentNoSigBits
302
+ message.ParseFromString(message.SerializeToString())
303
+ self.assertTrue(message.optional_double == kMostNegExponentNoSigBits)
304
+
305
+ # Most negative exponent, one significand bit set.
306
+ kMostNegExponentOneSigBit = 1.5 * math.pow(2, -1023)
307
+ message.optional_double = kMostNegExponentOneSigBit
308
+ message.ParseFromString(message.SerializeToString())
309
+ self.assertTrue(message.optional_double == kMostNegExponentOneSigBit)
310
+
311
+ # Repeat last two cases with values of the same magnitude, but negative.
312
+ message.optional_double = -kMostNegExponentNoSigBits
313
+ message.ParseFromString(message.SerializeToString())
314
+ self.assertTrue(message.optional_double == -kMostNegExponentNoSigBits)
315
+
316
+ message.optional_double = -kMostNegExponentOneSigBit
317
+ message.ParseFromString(message.SerializeToString())
318
+ self.assertTrue(message.optional_double == -kMostNegExponentOneSigBit)
319
+
320
+ def testFloatPrinting(self):
321
+ message = unittest_pb2.TestAllTypes()
322
+ message.optional_float = 2.0
323
+ self.assertEqual(str(message), 'optional_float: 2.0\n')
324
+
325
+ def testHighPrecisionFloatPrinting(self):
326
+ message = unittest_pb2.TestAllTypes()
327
+ message.optional_double = 0.12345678912345678
328
+ if sys.version_info.major >= 3:
329
+ self.assertEqual(str(message), 'optional_double: 0.12345678912345678\n')
330
+ else:
331
+ self.assertEqual(str(message), 'optional_double: 0.123456789123\n')
332
+
333
+ def testUnknownFieldPrinting(self):
334
+ populated = unittest_pb2.TestAllTypes()
335
+ test_util.SetAllNonLazyFields(populated)
336
+ empty = unittest_pb2.TestEmptyMessage()
337
+ empty.ParseFromString(populated.SerializeToString())
338
+ self.assertEqual(str(empty), '')
339
+
340
+ def testSortingRepeatedScalarFieldsDefaultComparator(self):
341
+ """Check some different types with the default comparator."""
342
+ message = unittest_pb2.TestAllTypes()
343
+
344
+ # TODO(mattp): would testing more scalar types strengthen test?
345
+ message.repeated_int32.append(1)
346
+ message.repeated_int32.append(3)
347
+ message.repeated_int32.append(2)
348
+ message.repeated_int32.sort()
349
+ self.assertEqual(message.repeated_int32[0], 1)
350
+ self.assertEqual(message.repeated_int32[1], 2)
351
+ self.assertEqual(message.repeated_int32[2], 3)
352
+
353
+ message.repeated_float.append(1.1)
354
+ message.repeated_float.append(1.3)
355
+ message.repeated_float.append(1.2)
356
+ message.repeated_float.sort()
357
+ self.assertAlmostEqual(message.repeated_float[0], 1.1)
358
+ self.assertAlmostEqual(message.repeated_float[1], 1.2)
359
+ self.assertAlmostEqual(message.repeated_float[2], 1.3)
360
+
361
+ message.repeated_string.append('a')
362
+ message.repeated_string.append('c')
363
+ message.repeated_string.append('b')
364
+ message.repeated_string.sort()
365
+ self.assertEqual(message.repeated_string[0], 'a')
366
+ self.assertEqual(message.repeated_string[1], 'b')
367
+ self.assertEqual(message.repeated_string[2], 'c')
368
+
369
+ message.repeated_bytes.append(b'a')
370
+ message.repeated_bytes.append(b'c')
371
+ message.repeated_bytes.append(b'b')
372
+ message.repeated_bytes.sort()
373
+ self.assertEqual(message.repeated_bytes[0], b'a')
374
+ self.assertEqual(message.repeated_bytes[1], b'b')
375
+ self.assertEqual(message.repeated_bytes[2], b'c')
376
+
377
+ def testSortingRepeatedScalarFieldsCustomComparator(self):
378
+ """Check some different types with custom comparator."""
379
+ message = unittest_pb2.TestAllTypes()
380
+
381
+ message.repeated_int32.append(-3)
382
+ message.repeated_int32.append(-2)
383
+ message.repeated_int32.append(-1)
384
+ message.repeated_int32.sort(key=abs)
385
+ self.assertEqual(message.repeated_int32[0], -1)
386
+ self.assertEqual(message.repeated_int32[1], -2)
387
+ self.assertEqual(message.repeated_int32[2], -3)
388
+
389
+ message.repeated_string.append('aaa')
390
+ message.repeated_string.append('bb')
391
+ message.repeated_string.append('c')
392
+ message.repeated_string.sort(key=len)
393
+ self.assertEqual(message.repeated_string[0], 'c')
394
+ self.assertEqual(message.repeated_string[1], 'bb')
395
+ self.assertEqual(message.repeated_string[2], 'aaa')
396
+
397
+ def testSortingRepeatedCompositeFieldsCustomComparator(self):
398
+ """Check passing a custom comparator to sort a repeated composite field."""
399
+ message = unittest_pb2.TestAllTypes()
400
+
401
+ message.repeated_nested_message.add().bb = 1
402
+ message.repeated_nested_message.add().bb = 3
403
+ message.repeated_nested_message.add().bb = 2
404
+ message.repeated_nested_message.add().bb = 6
405
+ message.repeated_nested_message.add().bb = 5
406
+ message.repeated_nested_message.add().bb = 4
407
+ message.repeated_nested_message.sort(key=operator.attrgetter('bb'))
408
+ self.assertEqual(message.repeated_nested_message[0].bb, 1)
409
+ self.assertEqual(message.repeated_nested_message[1].bb, 2)
410
+ self.assertEqual(message.repeated_nested_message[2].bb, 3)
411
+ self.assertEqual(message.repeated_nested_message[3].bb, 4)
412
+ self.assertEqual(message.repeated_nested_message[4].bb, 5)
413
+ self.assertEqual(message.repeated_nested_message[5].bb, 6)
414
+
415
+ def testRepeatedCompositeFieldSortArguments(self):
416
+ """Check sorting a repeated composite field using list.sort() arguments."""
417
+ message = unittest_pb2.TestAllTypes()
418
+
419
+ get_bb = operator.attrgetter('bb')
420
+ cmp_bb = lambda a, b: cmp(a.bb, b.bb)
421
+ message.repeated_nested_message.add().bb = 1
422
+ message.repeated_nested_message.add().bb = 3
423
+ message.repeated_nested_message.add().bb = 2
424
+ message.repeated_nested_message.add().bb = 6
425
+ message.repeated_nested_message.add().bb = 5
426
+ message.repeated_nested_message.add().bb = 4
427
+ message.repeated_nested_message.sort(key=get_bb)
428
+ self.assertEqual([k.bb for k in message.repeated_nested_message],
429
+ [1, 2, 3, 4, 5, 6])
430
+ message.repeated_nested_message.sort(key=get_bb, reverse=True)
431
+ self.assertEqual([k.bb for k in message.repeated_nested_message],
432
+ [6, 5, 4, 3, 2, 1])
433
+ if sys.version_info.major >= 3: return # No cmp sorting in PY3.
434
+ message.repeated_nested_message.sort(sort_function=cmp_bb)
435
+ self.assertEqual([k.bb for k in message.repeated_nested_message],
436
+ [1, 2, 3, 4, 5, 6])
437
+ message.repeated_nested_message.sort(cmp=cmp_bb, reverse=True)
438
+ self.assertEqual([k.bb for k in message.repeated_nested_message],
439
+ [6, 5, 4, 3, 2, 1])
440
+
441
+ def testRepeatedScalarFieldSortArguments(self):
442
+ """Check sorting a scalar field using list.sort() arguments."""
443
+ message = unittest_pb2.TestAllTypes()
444
+
445
+ message.repeated_int32.append(-3)
446
+ message.repeated_int32.append(-2)
447
+ message.repeated_int32.append(-1)
448
+ message.repeated_int32.sort(key=abs)
449
+ self.assertEqual(list(message.repeated_int32), [-1, -2, -3])
450
+ message.repeated_int32.sort(key=abs, reverse=True)
451
+ self.assertEqual(list(message.repeated_int32), [-3, -2, -1])
452
+ if sys.version_info.major < 3: # No cmp sorting in PY3.
453
+ abs_cmp = lambda a, b: cmp(abs(a), abs(b))
454
+ message.repeated_int32.sort(sort_function=abs_cmp)
455
+ self.assertEqual(list(message.repeated_int32), [-1, -2, -3])
456
+ message.repeated_int32.sort(cmp=abs_cmp, reverse=True)
457
+ self.assertEqual(list(message.repeated_int32), [-3, -2, -1])
458
+
459
+ message.repeated_string.append('aaa')
460
+ message.repeated_string.append('bb')
461
+ message.repeated_string.append('c')
462
+ message.repeated_string.sort(key=len)
463
+ self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa'])
464
+ message.repeated_string.sort(key=len, reverse=True)
465
+ self.assertEqual(list(message.repeated_string), ['aaa', 'bb', 'c'])
466
+ if sys.version_info.major < 3: # No cmp sorting in PY3.
467
+ len_cmp = lambda a, b: cmp(len(a), len(b))
468
+ message.repeated_string.sort(sort_function=len_cmp)
469
+ self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa'])
470
+ message.repeated_string.sort(cmp=len_cmp, reverse=True)
471
+ self.assertEqual(list(message.repeated_string), ['aaa', 'bb', 'c'])
472
+
473
+ def testRepeatedFieldsComparable(self):
474
+ m1 = unittest_pb2.TestAllTypes()
475
+ m2 = unittest_pb2.TestAllTypes()
476
+ m1.repeated_int32.append(0)
477
+ m1.repeated_int32.append(1)
478
+ m1.repeated_int32.append(2)
479
+ m2.repeated_int32.append(0)
480
+ m2.repeated_int32.append(1)
481
+ m2.repeated_int32.append(2)
482
+ m1.repeated_nested_message.add().bb = 1
483
+ m1.repeated_nested_message.add().bb = 2
484
+ m1.repeated_nested_message.add().bb = 3
485
+ m2.repeated_nested_message.add().bb = 1
486
+ m2.repeated_nested_message.add().bb = 2
487
+ m2.repeated_nested_message.add().bb = 3
488
+
489
+ if sys.version_info.major >= 3: return # No cmp() in PY3.
490
+
491
+ # These comparisons should not raise errors.
492
+ _ = m1 < m2
493
+ _ = m1.repeated_nested_message < m2.repeated_nested_message
494
+
495
+ # Make sure cmp always works. If it wasn't defined, these would be
496
+ # id() comparisons and would all fail.
497
+ self.assertEqual(cmp(m1, m2), 0)
498
+ self.assertEqual(cmp(m1.repeated_int32, m2.repeated_int32), 0)
499
+ self.assertEqual(cmp(m1.repeated_int32, [0, 1, 2]), 0)
500
+ self.assertEqual(cmp(m1.repeated_nested_message,
501
+ m2.repeated_nested_message), 0)
502
+ with self.assertRaises(TypeError):
503
+ # Can't compare repeated composite containers to lists.
504
+ cmp(m1.repeated_nested_message, m2.repeated_nested_message[:])
505
+
506
+ # TODO(anuraag): Implement extensiondict comparison in C++ and then add test
507
+
508
+ def testParsingMerge(self):
509
+ """Check the merge behavior when a required or optional field appears
510
+ multiple times in the input."""
511
+ messages = [
512
+ unittest_pb2.TestAllTypes(),
513
+ unittest_pb2.TestAllTypes(),
514
+ unittest_pb2.TestAllTypes() ]
515
+ messages[0].optional_int32 = 1
516
+ messages[1].optional_int64 = 2
517
+ messages[2].optional_int32 = 3
518
+ messages[2].optional_string = 'hello'
519
+
520
+ merged_message = unittest_pb2.TestAllTypes()
521
+ merged_message.optional_int32 = 3
522
+ merged_message.optional_int64 = 2
523
+ merged_message.optional_string = 'hello'
524
+
525
+ generator = unittest_pb2.TestParsingMerge.RepeatedFieldsGenerator()
526
+ generator.field1.extend(messages)
527
+ generator.field2.extend(messages)
528
+ generator.field3.extend(messages)
529
+ generator.ext1.extend(messages)
530
+ generator.ext2.extend(messages)
531
+ generator.group1.add().field1.MergeFrom(messages[0])
532
+ generator.group1.add().field1.MergeFrom(messages[1])
533
+ generator.group1.add().field1.MergeFrom(messages[2])
534
+ generator.group2.add().field1.MergeFrom(messages[0])
535
+ generator.group2.add().field1.MergeFrom(messages[1])
536
+ generator.group2.add().field1.MergeFrom(messages[2])
537
+
538
+ data = generator.SerializeToString()
539
+ parsing_merge = unittest_pb2.TestParsingMerge()
540
+ parsing_merge.ParseFromString(data)
541
+
542
+ # Required and optional fields should be merged.
543
+ self.assertEqual(parsing_merge.required_all_types, merged_message)
544
+ self.assertEqual(parsing_merge.optional_all_types, merged_message)
545
+ self.assertEqual(parsing_merge.optionalgroup.optional_group_all_types,
546
+ merged_message)
547
+ self.assertEqual(parsing_merge.Extensions[
548
+ unittest_pb2.TestParsingMerge.optional_ext],
549
+ merged_message)
550
+
551
+ # Repeated fields should not be merged.
552
+ self.assertEqual(len(parsing_merge.repeated_all_types), 3)
553
+ self.assertEqual(len(parsing_merge.repeatedgroup), 3)
554
+ self.assertEqual(len(parsing_merge.Extensions[
555
+ unittest_pb2.TestParsingMerge.repeated_ext]), 3)
556
+
557
+ def ensureNestedMessageExists(self, msg, attribute):
558
+ """Make sure that a nested message object exists.
559
+
560
+ As soon as a nested message attribute is accessed, it will be present in the
561
+ _fields dict, without being marked as actually being set.
562
+ """
563
+ getattr(msg, attribute)
564
+ self.assertFalse(msg.HasField(attribute))
565
+
566
+ def testOneofGetCaseNonexistingField(self):
567
+ m = unittest_pb2.TestAllTypes()
568
+ self.assertRaises(ValueError, m.WhichOneof, 'no_such_oneof_field')
569
+
570
+ def testOneofSemantics(self):
571
+ m = unittest_pb2.TestAllTypes()
572
+ self.assertIs(None, m.WhichOneof('oneof_field'))
573
+
574
+ m.oneof_uint32 = 11
575
+ self.assertEqual('oneof_uint32', m.WhichOneof('oneof_field'))
576
+ self.assertTrue(m.HasField('oneof_uint32'))
577
+
578
+ m.oneof_string = u'foo'
579
+ self.assertEqual('oneof_string', m.WhichOneof('oneof_field'))
580
+ self.assertFalse(m.HasField('oneof_uint32'))
581
+ self.assertTrue(m.HasField('oneof_string'))
582
+
583
+ m.oneof_nested_message.bb = 11
584
+ self.assertEqual('oneof_nested_message', m.WhichOneof('oneof_field'))
585
+ self.assertFalse(m.HasField('oneof_string'))
586
+ self.assertTrue(m.HasField('oneof_nested_message'))
587
+
588
+ m.oneof_bytes = b'bb'
589
+ self.assertEqual('oneof_bytes', m.WhichOneof('oneof_field'))
590
+ self.assertFalse(m.HasField('oneof_nested_message'))
591
+ self.assertTrue(m.HasField('oneof_bytes'))
592
+
593
+ def testOneofCompositeFieldReadAccess(self):
594
+ m = unittest_pb2.TestAllTypes()
595
+ m.oneof_uint32 = 11
596
+
597
+ self.ensureNestedMessageExists(m, 'oneof_nested_message')
598
+ self.assertEqual('oneof_uint32', m.WhichOneof('oneof_field'))
599
+ self.assertEqual(11, m.oneof_uint32)
600
+
601
+ def testOneofHasField(self):
602
+ m = unittest_pb2.TestAllTypes()
603
+ self.assertFalse(m.HasField('oneof_field'))
604
+ m.oneof_uint32 = 11
605
+ self.assertTrue(m.HasField('oneof_field'))
606
+ m.oneof_bytes = b'bb'
607
+ self.assertTrue(m.HasField('oneof_field'))
608
+ m.ClearField('oneof_bytes')
609
+ self.assertFalse(m.HasField('oneof_field'))
610
+
611
+ def testOneofClearField(self):
612
+ m = unittest_pb2.TestAllTypes()
613
+ m.oneof_uint32 = 11
614
+ m.ClearField('oneof_field')
615
+ self.assertFalse(m.HasField('oneof_field'))
616
+ self.assertFalse(m.HasField('oneof_uint32'))
617
+ self.assertIs(None, m.WhichOneof('oneof_field'))
618
+
619
+ def testOneofClearSetField(self):
620
+ m = unittest_pb2.TestAllTypes()
621
+ m.oneof_uint32 = 11
622
+ m.ClearField('oneof_uint32')
623
+ self.assertFalse(m.HasField('oneof_field'))
624
+ self.assertFalse(m.HasField('oneof_uint32'))
625
+ self.assertIs(None, m.WhichOneof('oneof_field'))
626
+
627
+ def testOneofClearUnsetField(self):
628
+ m = unittest_pb2.TestAllTypes()
629
+ m.oneof_uint32 = 11
630
+ self.ensureNestedMessageExists(m, 'oneof_nested_message')
631
+ m.ClearField('oneof_nested_message')
632
+ self.assertEqual(11, m.oneof_uint32)
633
+ self.assertTrue(m.HasField('oneof_field'))
634
+ self.assertTrue(m.HasField('oneof_uint32'))
635
+ self.assertEqual('oneof_uint32', m.WhichOneof('oneof_field'))
636
+
637
+ def testOneofDeserialize(self):
638
+ m = unittest_pb2.TestAllTypes()
639
+ m.oneof_uint32 = 11
640
+ m2 = unittest_pb2.TestAllTypes()
641
+ m2.ParseFromString(m.SerializeToString())
642
+ self.assertEqual('oneof_uint32', m2.WhichOneof('oneof_field'))
643
+
644
+ def testSortEmptyRepeatedCompositeContainer(self):
645
+ """Exercise a scenario that has led to segfaults in the past.
646
+ """
647
+ m = unittest_pb2.TestAllTypes()
648
+ m.repeated_nested_message.sort()
649
+
650
+ def testHasFieldOnRepeatedField(self):
651
+ """Using HasField on a repeated field should raise an exception.
652
+ """
653
+ m = unittest_pb2.TestAllTypes()
654
+ with self.assertRaises(ValueError) as _:
655
+ m.HasField('repeated_int32')
656
+
657
+
658
+ class ValidTypeNamesTest(basetest.TestCase):
659
+
660
+ def assertImportFromName(self, msg, base_name):
661
+ # Parse <type 'module.class_name'> to extra 'some.name' as a string.
662
+ tp_name = str(type(msg)).split("'")[1]
663
+ valid_names = ('Repeated%sContainer' % base_name,
664
+ 'Repeated%sFieldContainer' % base_name)
665
+ self.assertTrue(any(tp_name.endswith(v) for v in valid_names),
666
+ '%r does end with any of %r' % (tp_name, valid_names))
667
+
668
+ parts = tp_name.split('.')
669
+ class_name = parts[-1]
670
+ module_name = '.'.join(parts[:-1])
671
+ __import__(module_name, fromlist=[class_name])
672
+
673
+ def testTypeNamesCanBeImported(self):
674
+ # If import doesn't work, pickling won't work either.
675
+ pb = unittest_pb2.TestAllTypes()
676
+ self.assertImportFromName(pb.repeated_int32, 'Scalar')
677
+ self.assertImportFromName(pb.repeated_nested_message, 'Composite')
678
+
679
+
680
+ if __name__ == '__main__':
681
+ basetest.main()