@ -146,9 +146,6 @@ static NSData *DataFromCStr(const char *str) {
orig . repeatedEnumArray =
[ GPBEnumArray arrayWithValidationFunction : Message3_Enum_IsValidValue
rawValue : Message3_Enum_Extra3 ] ;
orig . repeatedPackedEnumArray =
[ GPBEnumArray arrayWithValidationFunction : Message3_Enum_IsValidValue
rawValue : Message3_Enum_Extra3 ] ;
orig . oneofEnum = Message3_Enum_Extra3 ;
Message2 * msg = [ [ Message2 alloc ] initWithData : [ orig data ] error : NULL ] ;
@ -157,19 +154,16 @@ static NSData *DataFromCStr(const char *str) {
XCTAssertFalse ( msg . hasOptionalEnum ) ;
XCTAssertEqual ( msg . repeatedEnumArray . count , 0 U ) ;
XCTAssertEqual ( msg . repeatedPackedEnumArray . count , 0 U ) ;
XCTAssertEqual ( msg . oOneOfCase , Message3_O_OneOfCase_GPBUnsetOneOfCase ) ;
/ / All the values should be in unknown fields .
GPBUnknownFieldSet * unknownFields = msg . unknownFields ;
XCTAssertEqual ( [ unknownFields countOfFields ] , 4 U ) ;
XCTAssertEqual ( [ unknownFields countOfFields ] , 3 U ) ;
XCTAssertTrue ( [ unknownFields hasField : Message2_FieldNumber_OptionalEnum ] ) ;
XCTAssertTrue (
[ unknownFields hasField : Message2_FieldNumber_RepeatedEnumArray ] ) ;
XCTAssertTrue (
[ unknownFields hasField : Message2_FieldNumber_RepeatedPackedEnumArray ] ) ;
XCTAssertTrue ( [ unknownFields hasField : Message2_FieldNumber_OneofEnum ] ) ;
GPBField * field = [ unknownFields getField : Message2_FieldNumber_OptionalEnum ] ;
@ -177,22 +171,12 @@ static NSData *DataFromCStr(const char *str) {
XCTAssertEqual ( [ field . varintList valueAtIndex : 0 ] ,
( uint64_t ) Message3_Enum_Extra3 ) ;
/ / TODO ( teboring ) : This test could fail without explicitly marking the repeated_enum in Message3
/ / to be unpacked . This is becaucse proto3 repeated primitive field is packed by default . However ,
/ / the proto2 primitive repeated field is still unpacked by default . Previously , parsing of the
/ / repeated_enum field would fail . To fix it :
/ / 1 ) Objective - C implementation of parsing should be able to parse packed field for unpacked
/ / field and vice versa .
/ / 2 ) repeated_packed_enum in Message3 should be removed , because it ' s unnecessary now .
/ / Repeated in proto3 default to packed , so this will be length delimited
/ / unknown field , and the value ( Message3_Enum_Extra3 ) encodes into one byte .
field = [ unknownFields getField : Message2_FieldNumber_RepeatedEnumArray ] ;
XCTAssertEqual ( field . varintList . count , 1 U ) ;
XCTAssertEqual ( [ field . varintList valueAtIndex : 0 ] ,
( uint64_t ) Message3_Enum_Extra3 ) ;
field = [ unknownFields getField : Message2_FieldNumber_RepeatedPackedEnumArray ] ;
XCTAssertEqual ( field . varintList . count , 1 U ) ;
XCTAssertEqual ( [ field . varintList valueAtIndex : 0 ] ,
( uint64_t ) Message3_Enum_Extra3 ) ;
XCTAssertEqual ( field . lengthDelimitedList . count , 1 U ) ;
NSData * expected = DataFromCStr ( "\ x1E ") ;
XCTAssertEqualObjects ( [ field . lengthDelimitedList objectAtIndex : 0 ] , expected ) ;
field = [ unknownFields getField : Message2_FieldNumber_OneofEnum ] ;
XCTAssertEqual ( field . varintList . count , 1 U ) ;