11
11
#import " GPBUnknownField.h"
12
12
#import " GPBUnknownField_PackagePrivate.h"
13
13
#import " GPBUnknownFields.h"
14
+ #import " GPBWireFormat.h"
14
15
#import " objectivec/Tests/Unittest.pbobjc.h"
15
16
#import " objectivec/Tests/UnittestMset.pbobjc.h"
16
17
@@ -111,32 +112,43 @@ - (void)testParsePackedExtensions {
111
112
}
112
113
113
114
const int kUnknownTypeId = 1550055 ;
115
+ const int kUnknownTypeId2 = 1550056 ;
114
116
115
117
- (void )testSerializeMessageSet {
116
118
// Set up a MSetMessage with two known messages and an unknown one.
117
119
MSetMessage* message_set = [MSetMessage message ];
118
120
[[message_set getExtension: [MSetMessageExtension1 messageSetExtension ]] setI: 123 ];
119
121
[[message_set getExtension: [MSetMessageExtension2 messageSetExtension ]] setStr: @" foo" ];
122
+
120
123
GPBUnknownField* unknownField =
121
124
[[[GPBUnknownField alloc ] initWithNumber: kUnknownTypeId ] autorelease ];
122
- [unknownField addLengthDelimited: [ NSData dataWithBytes: " bar" length: 3 ] ];
125
+ [unknownField addLengthDelimited: DataFromCStr ( " bar" ) ];
123
126
GPBUnknownFieldSet* unknownFieldSet = [[[GPBUnknownFieldSet alloc ] init ] autorelease ];
124
127
[unknownFieldSet addField: unknownField];
125
128
[message_set setUnknownFields: unknownFieldSet];
126
129
130
+ GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] init ] autorelease ];
131
+ GPBUnknownFields* group = [ufs addGroupWithFieldNumber: GPBWireFormatMessageSetItem];
132
+ [group addFieldNumber: GPBWireFormatMessageSetTypeId varint: kUnknownTypeId2 ];
133
+ [group addFieldNumber: GPBWireFormatMessageSetMessage lengthDelimited: DataFromCStr (" baz" )];
134
+ [message_set mergeUnknownFields: ufs extensionRegistry: [MSetUnittestMsetRoot extensionRegistry ]];
135
+
127
136
NSData * data = [message_set data ];
128
137
129
138
// Parse back using MSetRawMessageSet and check the contents.
130
139
MSetRawMessageSet* raw = [MSetRawMessageSet parseFromData: data error: NULL ];
131
140
141
+ GPBUnknownFields* ufs2 = [[[GPBUnknownFields alloc ] initFromMessage: raw] autorelease ];
142
+ XCTAssertTrue (ufs2.empty );
132
143
XCTAssertEqual ([raw.unknownFields countOfFields ], (NSUInteger )0 );
133
144
134
- XCTAssertEqual (raw.itemArray .count , (NSUInteger )3 );
145
+ XCTAssertEqual (raw.itemArray .count , (NSUInteger )4 );
135
146
XCTAssertEqual ((uint32_t )[raw.itemArray[0 ] typeId ],
136
147
[MSetMessageExtension1 messageSetExtension ].fieldNumber );
137
148
XCTAssertEqual ((uint32_t )[raw.itemArray[1 ] typeId ],
138
149
[MSetMessageExtension2 messageSetExtension ].fieldNumber );
139
150
XCTAssertEqual ([raw.itemArray[2 ] typeId ], kUnknownTypeId );
151
+ XCTAssertEqual ([raw.itemArray[3 ] typeId ], kUnknownTypeId2 );
140
152
141
153
MSetMessageExtension1* message1 =
142
154
[MSetMessageExtension1 parseFromData: [((MSetRawMessageSet_Item*)raw.itemArray[0 ]) message ]
@@ -148,7 +160,8 @@ - (void)testSerializeMessageSet {
148
160
error: NULL ];
149
161
XCTAssertEqualObjects (message2.str , @" foo" );
150
162
151
- XCTAssertEqualObjects ([raw.itemArray[2 ] message ], [NSData dataWithBytes: " bar" length: 3 ]);
163
+ XCTAssertEqualObjects ([raw.itemArray[2 ] message ], DataFromCStr (" bar" ));
164
+ XCTAssertEqualObjects ([raw.itemArray[3 ] message ], DataFromCStr (" baz" ));
152
165
}
153
166
154
167
- (void )testParseMessageSet {
@@ -176,7 +189,7 @@ - (void)testParseMessageSet {
176
189
{
177
190
MSetRawMessageSet_Item* item = [MSetRawMessageSet_Item message ];
178
191
item.typeId = kUnknownTypeId ;
179
- item.message = [ NSData dataWithBytes: " bar" length: 3 ] ;
192
+ item.message = DataFromCStr ( " bar" ) ;
180
193
[raw.itemArray addObject: item];
181
194
}
182
195
@@ -191,11 +204,22 @@ - (void)testParseMessageSet {
191
204
XCTAssertEqualObjects ([[messageSet getExtension: [MSetMessageExtension2 messageSetExtension ]] str ],
192
205
@" foo" );
193
206
207
+ GPBUnknownFields* ufs = [[[GPBUnknownFields alloc ] initFromMessage: messageSet] autorelease ];
208
+ XCTAssertEqual (ufs.count , (NSUInteger )1 );
209
+ GPBUnknownFields* group = [ufs firstGroup: GPBWireFormatMessageSetItem];
210
+ XCTAssertNotNil (group);
211
+ XCTAssertEqual (group.count , (NSUInteger )2 );
212
+ uint64_t varint = 0 ;
213
+ XCTAssertTrue ([group getFirst: GPBWireFormatMessageSetTypeId varint: &varint]);
214
+ XCTAssertEqual (varint, kUnknownTypeId );
215
+ XCTAssertEqualObjects ([group firstLengthDelimited: GPBWireFormatMessageSetMessage],
216
+ DataFromCStr (" bar" ));
217
+
194
218
XCTAssertEqual ([messageSet.unknownFields countOfFields ], (NSUInteger )1 );
195
219
GPBUnknownField* unknownField = [messageSet.unknownFields getField: kUnknownTypeId ];
196
220
XCTAssertNotNil (unknownField);
197
221
XCTAssertEqual (unknownField.lengthDelimitedList .count , (NSUInteger )1 );
198
- XCTAssertEqualObjects (unknownField.lengthDelimitedList [0 ], [ NSData dataWithBytes: " bar" length: 3 ] );
222
+ XCTAssertEqualObjects (unknownField.lengthDelimitedList [0 ], DataFromCStr ( " bar" ) );
199
223
}
200
224
201
225
- (void )testParseMessageSet_FirstValueSticks {
0 commit comments