@@ -811,7 +811,7 @@ - (void)testMessageMergeUnknowns {
811811 [group addFieldNumber: 123456 varint: 5432 ];
812812
813813 TestAllTypes* msg = [TestAllTypes message ];
814- [msg mergeUnknownFields: ufs extensionRegistry: nil ] ;
814+ XCTAssertTrue ( [msg mergeUnknownFields: ufs extensionRegistry: nil error: NULL ]) ;
815815 XCTAssertEqual (msg.optionalInt64 , 100 );
816816 XCTAssertEqual (msg.optionalFixed32 , 200 );
817817 XCTAssertEqual (msg.optionalFixed64 , 300 );
@@ -829,7 +829,7 @@ - (void)testMessageMergeUnknowns {
829829 XCTAssertEqual (varint, 5432 );
830830
831831 TestEmptyMessage* emptyMessage = [TestEmptyMessage message ];
832- [emptyMessage mergeUnknownFields: ufs extensionRegistry: nil ] ;
832+ XCTAssertTrue ( [emptyMessage mergeUnknownFields: ufs extensionRegistry: nil error: NULL ]) ;
833833 GPBUnknownFields* ufs3 = [[[GPBUnknownFields alloc ] initFromMessage: emptyMessage] autorelease ];
834834 XCTAssertEqualObjects (ufs3, ufs); // Round trip through an empty message got us same fields back.
835835 XCTAssertTrue (ufs3 != ufs); // But they are different objects.
@@ -843,7 +843,7 @@ - (void)testRoundTripLotsOfFields {
843843 TestEmptyMessage* emptyMessage = [TestEmptyMessage parseFromData: allFieldsData error: NULL ];
844844 GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] initFromMessage: emptyMessage] autorelease ];
845845 TestAllTypes* allFields2 = [TestAllTypes message ];
846- [allFields2 mergeUnknownFields: ufs extensionRegistry: nil ] ;
846+ XCTAssertTrue ( [allFields2 mergeUnknownFields: ufs extensionRegistry: nil error: NULL ]) ;
847847 XCTAssertEqualObjects (allFields2, allFields);
848848
849849 // Confirm that the they still all end up in unknowns when parsed into a message with extensions
@@ -891,7 +891,7 @@ - (void)testMismatchedFieldTypes {
891891 // unknown fields again.
892892 {
893893 TestAllTypes* msg = [TestAllTypes message ];
894- [msg mergeUnknownFields: ufsWrongTypes extensionRegistry: nil ] ;
894+ XCTAssertTrue ( [msg mergeUnknownFields: ufsWrongTypes extensionRegistry: nil error: NULL ]) ;
895895 GPBUnknownFields* ufs2 = [[[GPBUnknownFields alloc ] initFromMessage: msg] autorelease ];
896896 XCTAssertFalse (ufs2.empty );
897897 XCTAssertEqualObjects (ufs2, ufsWrongTypes); // All back as unknown fields.
@@ -901,19 +901,46 @@ - (void)testMismatchedFieldTypes {
901901 // into unknown fields.
902902 {
903903 TestAllExtensions* msg = [TestAllExtensions message ];
904- [msg mergeUnknownFields: ufsWrongTypes extensionRegistry: [UnittestRoot extensionRegistry ]];
904+ XCTAssertTrue ([msg mergeUnknownFields: ufsWrongTypes
905+ extensionRegistry: [UnittestRoot extensionRegistry ]
906+ error: NULL ]);
905907 GPBUnknownFields* ufs2 = [[[GPBUnknownFields alloc ] initFromMessage: msg] autorelease ];
906908 XCTAssertFalse (ufs2.empty );
907909 XCTAssertEqualObjects (ufs2, ufsWrongTypes); // All back as unknown fields.
908910 }
909911}
910912
913+ - (void )testMergeFailures {
914+ // Valid data, pushes to the string just fine.
915+ {
916+ GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] init ] autorelease ];
917+ [ufs addFieldNumber: TestAllTypes_FieldNumber_OptionalString
918+ lengthDelimited: DataFromCStr (" abc" )];
919+ TestAllTypes* msg = [TestAllTypes message ];
920+ NSError * error = nil ;
921+ XCTAssertTrue ([msg mergeUnknownFields: ufs extensionRegistry: nil error: &error]);
922+ XCTAssertNil (error);
923+ XCTAssertEqualObjects (msg.optionalString , @" abc" );
924+ }
925+
926+ // Invalid UTF-8 causes a failure when pushed to the message.
927+ {
928+ GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] init ] autorelease ];
929+ [ufs addFieldNumber: TestAllTypes_FieldNumber_OptionalString
930+ lengthDelimited: DataFromBytes (0xC2 , 0xF2 , 0x0 , 0x0 , 0x0 )];
931+ TestAllTypes* msg = [TestAllTypes message ];
932+ NSError * error = nil ;
933+ XCTAssertFalse ([msg mergeUnknownFields: ufs extensionRegistry: nil error: &error]);
934+ XCTAssertNotNil (error);
935+ }
936+ }
937+
911938- (void )testLargeVarint {
912939 GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] init ] autorelease ];
913940 [ufs addFieldNumber: 1 varint: 0x7FFFFFFFFFFFFFFFL ];
914941
915942 TestEmptyMessage* emptyMessage = [TestEmptyMessage message ];
916- [emptyMessage mergeUnknownFields: ufs extensionRegistry: nil ] ;
943+ XCTAssertTrue ( [emptyMessage mergeUnknownFields: ufs extensionRegistry: nil error: NULL ]) ;
917944
918945 GPBUnknownFields* ufsParsed =
919946 [[[GPBUnknownFields alloc ] initFromMessage: emptyMessage] autorelease ];
0 commit comments