| 
					
				 | 
			
			
				@@ -100,6 +100,7 @@ class ProtostreamObjectSourceTest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ow_(&mock_), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         use_lower_camel_for_enums_(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         use_ints_for_enums_(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        use_preserve_proto_field_names_(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         add_trailing_zeros_(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         render_unknown_enum_values_(true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     helper_.ResetTypeInfo(Book::descriptor(), Proto3Message::descriptor()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -123,6 +124,7 @@ class ProtostreamObjectSourceTest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         helper_.NewProtoSource(&in_stream, GetTypeUrl(descriptor))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (use_lower_camel_for_enums_) os->set_use_lower_camel_for_enums(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (use_ints_for_enums_) os->set_use_ints_for_enums(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (use_preserve_proto_field_names_) os->set_preserve_proto_field_names(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     os->set_max_recursion_depth(64); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return os->WriteTo(&mock_); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -272,6 +274,8 @@ class ProtostreamObjectSourceTest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   void UseIntsForEnums() { use_ints_for_enums_ = true; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  void UsePreserveProtoFieldNames() { use_preserve_proto_field_names_ = true; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   void AddTrailingZeros() { add_trailing_zeros_ = true; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   void SetRenderUnknownEnumValues(bool value) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -284,6 +288,7 @@ class ProtostreamObjectSourceTest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ExpectingObjectWriter ow_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool use_lower_camel_for_enums_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool use_ints_for_enums_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bool use_preserve_proto_field_names_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool add_trailing_zeros_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool render_unknown_enum_values_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -536,6 +541,16 @@ TEST_P(ProtostreamObjectSourceTest, UseIntsForEnumsTest) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   DoTest(book, Book::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TEST_P(ProtostreamObjectSourceTest, UsePreserveProtoFieldNames) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Book book; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  book.set_snake_field("foo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  UsePreserveProtoFieldNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ow_.StartObject("")->RenderString("snake_field", "foo")->EndObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DoTest(book, Book::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 TEST_P(ProtostreamObjectSourceTest, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        UnknownEnumAreDroppedWhenRenderUnknownEnumValuesIsUnset) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Proto3Message message; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -769,6 +784,69 @@ TEST_P(ProtostreamObjectSourceAnysTest, BasicAny) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   DoTest(out, AnyOut::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TEST_P(ProtostreamObjectSourceAnysTest, LowerCamelEnumOutputSnakeCase) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  AnyOut out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ::google::protobuf::Any* any = out.mutable_any(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Book book; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  book.set_type(Book::arts_and_photography); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  any->PackFrom(book); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  UseLowerCamelForEnums(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ow_.StartObject("") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->StartObject("any") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderString("@type", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     "type.googleapis.com/google.protobuf.testing.Book") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderString("type", "artsAndPhotography") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DoTest(out, AnyOut::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TEST_P(ProtostreamObjectSourceAnysTest, UseIntsForEnumsTest) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  AnyOut out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ::google::protobuf::Any* any = out.mutable_any(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Book book; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  book.set_type(Book::ACTION_AND_ADVENTURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  any->PackFrom(book); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  UseIntsForEnums(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ow_.StartObject("") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->StartObject("any") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderString("@type", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     "type.googleapis.com/google.protobuf.testing.Book") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderInt32("type", 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DoTest(out, AnyOut::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TEST_P(ProtostreamObjectSourceAnysTest, UsePreserveProtoFieldNames) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  AnyOut out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ::google::protobuf::Any* any = out.mutable_any(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Book book; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  book.set_snake_field("foo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  any->PackFrom(book); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  UsePreserveProtoFieldNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ow_.StartObject("") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->StartObject("any") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderString("@type", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     "type.googleapis.com/google.protobuf.testing.Book") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->RenderString("snake_field", "foo") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->EndObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DoTest(out, AnyOut::descriptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 TEST_P(ProtostreamObjectSourceAnysTest, RecursiveAny) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   AnyOut out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ::google::protobuf::Any* any = out.mutable_any(); 
			 |