Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Side by Side Diff: third_party/protobuf/objectivec/Tests/GPBTestUtilities.m

Issue 1842653006: Update //third_party/protobuf to version 3. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 #import "GPBTestUtilities.h"
32
33 #import "google/protobuf/MapUnittest.pbobjc.h"
34 #import "google/protobuf/Unittest.pbobjc.h"
35 #import "google/protobuf/UnittestImport.pbobjc.h"
36
37 const uint32_t kGPBDefaultRepeatCount = 2;
38
39 // Small category to easily turn a CString into an NSData.
40 @interface NSData (GPBTestCase)
41 + (NSData *)gpbtu_dataWithCString:(char *)buffer;
42 + (instancetype)gpbtu_dataWithEmbeddedNulls;
43 @end
44
45 @implementation NSData (GPBTestCase)
46 + (NSData *)gpbtu_dataWithCString:(char *)buffer {
47 return [NSData dataWithBytes:buffer length:strlen(buffer)];
48 }
49
50 + (instancetype)gpbtu_dataWithUint32:(uint32_t)value {
51 return [[[self alloc] initWithUint32_gpbtu:value] autorelease];
52 }
53
54 - (instancetype)initWithUint32_gpbtu:(uint32_t)value {
55 value = CFSwapInt32HostToLittle(value);
56 return [self initWithBytes:&value length:sizeof(value)];
57 }
58
59 + (instancetype)gpbtu_dataWithEmbeddedNulls {
60 char bytes[6] = "\1\0\2\3\0\5";
61 return [self dataWithBytes:bytes length:sizeof(bytes)];
62 }
63 @end
64
65 @implementation GPBTestCase
66
67 // Return data for name. Optionally (based on #if setting) write out dataToWrite
68 // to replace that data. Useful for setting golden masters.
69 - (NSData *)getDataFileNamed:(NSString *)name
70 dataToWrite:(NSData *)dataToWrite {
71 NSBundle *bundle = [NSBundle bundleForClass:[self class]];
72 NSString *path = [bundle pathForResource:[name stringByDeletingPathExtension]
73 ofType:[name pathExtension]];
74 XCTAssertNotNil(path, @"Unable to find %@", name);
75 NSData *data = [NSData dataWithContentsOfFile:path];
76 XCTAssertNotNil(data, @"Unable to load from %@", path);
77 #if 0
78 // Enable to write out golden master files.
79 if (!path) {
80 path = [[bundle resourcePath] stringByAppendingPathComponent:name];
81 }
82 NSError *error = nil;
83 BOOL wrote = [dataToWrite writeToFile:path options:NSDataWritingAtomic error:& error];
84 XCTAssertTrue(wrote, @"Unable to write %@ (%@)", path, error);
85 NSLog(@"Wrote data file to %@", path);
86 #else
87 // Kill off the unused variable warning.
88 dataToWrite = dataToWrite;
89 #endif
90 return data;
91 }
92
93 // -------------------------------------------------------------------
94
95 - (void)modifyRepeatedExtensions:(TestAllExtensions *)message {
96 [message setExtension:[UnittestRoot repeatedInt32Extension]
97 index:1
98 value:@501];
99 [message setExtension:[UnittestRoot repeatedInt64Extension]
100 index:1
101 value:@502];
102 [message setExtension:[UnittestRoot repeatedUint32Extension]
103 index:1
104 value:@503];
105 [message setExtension:[UnittestRoot repeatedUint64Extension]
106 index:1
107 value:@504];
108 [message setExtension:[UnittestRoot repeatedSint32Extension]
109 index:1
110 value:@505];
111 [message setExtension:[UnittestRoot repeatedSint64Extension]
112 index:1
113 value:@506];
114 [message setExtension:[UnittestRoot repeatedFixed32Extension]
115 index:1
116 value:@507];
117 [message setExtension:[UnittestRoot repeatedFixed64Extension]
118 index:1
119 value:@508];
120 [message setExtension:[UnittestRoot repeatedSfixed32Extension]
121 index:1
122 value:@509];
123 [message setExtension:[UnittestRoot repeatedSfixed64Extension]
124 index:1
125 value:@510];
126 [message setExtension:[UnittestRoot repeatedFloatExtension]
127 index:1
128 value:@511.0f];
129 [message setExtension:[UnittestRoot repeatedDoubleExtension]
130 index:1
131 value:@512.0];
132 [message setExtension:[UnittestRoot repeatedBoolExtension]
133 index:1
134 value:@YES];
135 [message setExtension:[UnittestRoot repeatedStringExtension]
136 index:1
137 value:@"515"];
138 [message setExtension:[UnittestRoot repeatedBytesExtension]
139 index:1
140 value:[NSData gpbtu_dataWithUint32:516]];
141
142 RepeatedGroup_extension *repeatedGroup = [RepeatedGroup_extension message];
143 [repeatedGroup setA:517];
144 [message setExtension:[UnittestRoot repeatedGroupExtension]
145 index:1
146 value:repeatedGroup];
147 TestAllTypes_NestedMessage *nestedMessage =
148 [TestAllTypes_NestedMessage message];
149 [nestedMessage setBb:518];
150 [message setExtension:[UnittestRoot repeatedNestedMessageExtension]
151 index:1
152 value:nestedMessage];
153 ForeignMessage *foreignMessage = [ForeignMessage message];
154 [foreignMessage setC:519];
155 [message setExtension:[UnittestRoot repeatedForeignMessageExtension]
156 index:1
157 value:foreignMessage];
158 ImportMessage *importMessage = [ImportMessage message];
159 [importMessage setD:520];
160 [message setExtension:[UnittestRoot repeatedImportMessageExtension]
161 index:1
162 value:importMessage];
163
164 [message setExtension:[UnittestRoot repeatedNestedEnumExtension]
165 index:1
166 value:@(TestAllTypes_NestedEnum_Foo)];
167 [message setExtension:[UnittestRoot repeatedForeignEnumExtension]
168 index:1
169 value:@(ForeignEnum_ForeignFoo)];
170 [message setExtension:[UnittestRoot repeatedImportEnumExtension]
171 index:1
172 value:@(ImportEnum_ImportFoo)];
173
174 [message setExtension:[UnittestRoot repeatedStringPieceExtension]
175 index:1
176 value:@"524"];
177 [message setExtension:[UnittestRoot repeatedCordExtension]
178 index:1
179 value:@"525"];
180 }
181
182 - (void)assertAllExtensionsSet:(TestAllExtensions *)message
183 repeatedCount:(uint32_t)count {
184 XCTAssertTrue([message hasExtension:[UnittestRoot optionalInt32Extension]]);
185 XCTAssertTrue([message hasExtension:[UnittestRoot optionalInt64Extension]]);
186 XCTAssertTrue([message hasExtension:[UnittestRoot optionalUint32Extension]]);
187 XCTAssertTrue([message hasExtension:[UnittestRoot optionalUint64Extension]]);
188 XCTAssertTrue([message hasExtension:[UnittestRoot optionalSint32Extension]]);
189 XCTAssertTrue([message hasExtension:[UnittestRoot optionalSint64Extension]]);
190 XCTAssertTrue([message hasExtension:[UnittestRoot optionalFixed32Extension]]);
191 XCTAssertTrue([message hasExtension:[UnittestRoot optionalFixed64Extension]]);
192 XCTAssertTrue([message hasExtension:[UnittestRoot optionalSfixed32Extension]]) ;
193 XCTAssertTrue([message hasExtension:[UnittestRoot optionalSfixed64Extension]]) ;
194 XCTAssertTrue([message hasExtension:[UnittestRoot optionalFloatExtension]]);
195 XCTAssertTrue([message hasExtension:[UnittestRoot optionalDoubleExtension]]);
196 XCTAssertTrue([message hasExtension:[UnittestRoot optionalBoolExtension]]);
197 XCTAssertTrue([message hasExtension:[UnittestRoot optionalStringExtension]]);
198 XCTAssertTrue([message hasExtension:[UnittestRoot optionalBytesExtension]]);
199
200 XCTAssertTrue([message hasExtension:[UnittestRoot optionalGroupExtension]]);
201 XCTAssertTrue([message hasExtension:[UnittestRoot optionalNestedMessageExtensi on]]);
202 XCTAssertTrue([message hasExtension:[UnittestRoot optionalForeignMessageExtens ion]]);
203 XCTAssertTrue([message hasExtension:[UnittestRoot optionalImportMessageExtensi on]]);
204
205 XCTAssertTrue([[message getExtension:[UnittestRoot optionalGroupExtension]] ha sA]);
206 XCTAssertTrue([[message getExtension:[UnittestRoot optionalNestedMessageExtens ion]] hasBb]);
207 XCTAssertTrue([[message getExtension:[UnittestRoot optionalForeignMessageExten sion]] hasC]);
208 XCTAssertTrue([[message getExtension:[UnittestRoot optionalImportMessageExtens ion]] hasD]);
209
210 XCTAssertTrue([message hasExtension:[UnittestRoot optionalNestedEnumExtension] ]);
211 XCTAssertTrue([message hasExtension:[UnittestRoot optionalForeignEnumExtension ]]);
212 XCTAssertTrue([message hasExtension:[UnittestRoot optionalImportEnumExtension] ]);
213
214 XCTAssertTrue([message hasExtension:[UnittestRoot optionalStringPieceExtension ]]);
215 XCTAssertTrue([message hasExtension:[UnittestRoot optionalCordExtension]]);
216
217 XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt32Extension]]);
218 XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt64Extension]]);
219 XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint32Extension]]);
220 XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint64Extension]]);
221 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint32Extension]]);
222 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint64Extension]]);
223 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
224 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
225 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed32Extension]]);
226 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed64Extension]]);
227 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFloatExtension]]);
228 XCTAssertTrue([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
229 XCTAssertTrue([message hasExtension:[UnittestRoot defaultBoolExtension]]);
230 XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringExtension]]);
231 XCTAssertTrue([message hasExtension:[UnittestRoot defaultBytesExtension]]);
232
233 XCTAssertTrue([message hasExtension:[UnittestRoot defaultNestedEnumExtension]] );
234 XCTAssertTrue([message hasExtension:[UnittestRoot defaultForeignEnumExtension] ]);
235 XCTAssertTrue([message hasExtension:[UnittestRoot defaultImportEnumExtension]] );
236
237 XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringPieceExtension] ]);
238 XCTAssertTrue([message hasExtension:[UnittestRoot defaultCordExtension]]);
239
240 XCTAssertEqual(101, [[message getExtension:[UnittestRoot optionalInt32Extensio n]] intValue]);
241 XCTAssertEqual(102LL, [[message getExtension:[UnittestRoot optionalInt64Extens ion]] longLongValue]);
242 XCTAssertEqual(103U, [[message getExtension:[UnittestRoot optionalUint32Extens ion]] unsignedIntValue]);
243 XCTAssertEqual(104ULL, [[message getExtension:[UnittestRoot optionalUint64Exte nsion]] unsignedLongLongValue]);
244 XCTAssertEqual(105, [[message getExtension:[UnittestRoot optionalSint32Extensi on]] intValue]);
245 XCTAssertEqual(106LL, [[message getExtension:[UnittestRoot optionalSint64Exten sion]] longLongValue]);
246 XCTAssertEqual(107U, [[message getExtension:[UnittestRoot optionalFixed32Exten sion]] unsignedIntValue]);
247 XCTAssertEqual(108ULL, [[message getExtension:[UnittestRoot optionalFixed64Ext ension]] unsignedLongLongValue]);
248 XCTAssertEqual(109, [[message getExtension:[UnittestRoot optionalSfixed32Exten sion]] intValue]);
249 XCTAssertEqual(110LL, [[message getExtension:[UnittestRoot optionalSfixed64Ext ension]] longLongValue]);
250 XCTAssertEqualWithAccuracy(111.0f, [[message getExtension:[UnittestRoot option alFloatExtension]] floatValue], 0.01);
251 XCTAssertEqualWithAccuracy(112.0, [[message getExtension:[UnittestRoot optiona lDoubleExtension]] doubleValue], 0.01);
252 XCTAssertTrue([[message getExtension:[UnittestRoot optionalBoolExtension]] boo lValue]);
253 XCTAssertEqualObjects(@"115", [message getExtension:[UnittestRoot optionalStri ngExtension]]);
254 XCTAssertEqualObjects([NSData gpbtu_dataWithEmbeddedNulls], [message getExtens ion:[UnittestRoot optionalBytesExtension]]);
255
256 XCTAssertEqual(117, [(TestAllTypes_OptionalGroup*)[message getExtension:[Unitt estRoot optionalGroupExtension]] a]);
257 XCTAssertEqual(118, [(TestAllTypes_NestedMessage*)[message getExtension:[Unitt estRoot optionalNestedMessageExtension]] bb]);
258 XCTAssertEqual(119, [[message getExtension:[UnittestRoot optionalForeignMessag eExtension]] c]);
259 XCTAssertEqual(120, [[message getExtension:[UnittestRoot optionalImportMessage Extension]] d]);
260
261 XCTAssertEqual(TestAllTypes_NestedEnum_Baz, [[message getExtension:[UnittestRo ot optionalNestedEnumExtension]] intValue]);
262 XCTAssertEqual(ForeignEnum_ForeignBaz, [[message getExtension:[UnittestRoot op tionalForeignEnumExtension]] intValue]);
263 XCTAssertEqual(ImportEnum_ImportBaz, [[message getExtension:[UnittestRoot opti onalImportEnumExtension]] intValue]);
264
265 XCTAssertEqualObjects(@"124", [message getExtension:[UnittestRoot optionalStri ngPieceExtension]]);
266 XCTAssertEqualObjects(@"125", [message getExtension:[UnittestRoot optionalCord Extension]]);
267
268 // -----------------------------------------------------------------
269
270 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt32Extens ion]] count]);
271 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt64Extens ion]] count]);
272 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint32Exten sion]] count]);
273 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint64Exten sion]] count]);
274 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint32Exten sion]] count]);
275 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint64Exten sion]] count]);
276 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed32Exte nsion]] count]);
277 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed64Exte nsion]] count]);
278 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed32Ext ension]] count]);
279 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed64Ext ension]] count]);
280 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFloatExtens ion]] count]);
281 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedDoubleExten sion]] count]);
282 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBoolExtensi on]] count]);
283 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringExten sion]] count]);
284 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBytesExtens ion]] count]);
285
286 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedGroupExtens ion]] count]);
287 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedMessa geExtension]] count]);
288 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignMess ageExtension]] count]);
289 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportMessa geExtension]] count]);
290 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedEnumE xtension]] count]);
291 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignEnum Extension]] count]);
292 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportEnumE xtension]] count]);
293
294 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringPiece Extension]] count]);
295 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedCordExtensi on]] count]);
296
297 for (uint32_t i = 0; i < count; ++i) {
298 id extension = [message getExtension:[UnittestRoot repeatedInt32Extension]];
299 XCTAssertEqual((int)(201 + i * 100), [extension[i] intValue]);
300 extension = [message getExtension:[UnittestRoot repeatedInt64Extension]];
301 XCTAssertEqual(202 + i * 100, [extension[i] longLongValue]);
302 extension = [message getExtension:[UnittestRoot repeatedUint32Extension]];
303 XCTAssertEqual(203 + i * 100, [extension[i] unsignedIntValue]);
304 extension = [message getExtension:[UnittestRoot repeatedUint64Extension]];
305 XCTAssertEqual(204 + i * 100, [extension[i] unsignedLongLongValue]);
306 extension = [message getExtension:[UnittestRoot repeatedSint32Extension]];
307 XCTAssertEqual((int)(205 + i * 100), [extension[i] intValue]);
308 extension = [message getExtension:[UnittestRoot repeatedSint64Extension]];
309 XCTAssertEqual(206 + i * 100, [extension[i] longLongValue]);
310 extension = [message getExtension:[UnittestRoot repeatedFixed32Extension]];
311 XCTAssertEqual(207 + i * 100, [extension[i] unsignedIntValue]);
312 extension = [message getExtension:[UnittestRoot repeatedFixed64Extension]];
313 XCTAssertEqual(208 + i * 100, [extension[i] unsignedLongLongValue]);
314 extension = [message getExtension:[UnittestRoot repeatedSfixed32Extension]];
315 XCTAssertEqual((int)(209 + i * 100), [extension[i] intValue]);
316 extension = [message getExtension:[UnittestRoot repeatedSfixed64Extension]];
317 XCTAssertEqual(210 + i * 100, [extension[i] longLongValue]);
318 extension = [message getExtension:[UnittestRoot repeatedFloatExtension]];
319 XCTAssertEqualWithAccuracy(211 + i * 100, [extension[i] floatValue], 0.01);
320 extension = [message getExtension:[UnittestRoot repeatedDoubleExtension]];
321 XCTAssertEqualWithAccuracy(212 + i * 100, [extension[i] doubleValue], 0.01);
322 extension = [message getExtension:[UnittestRoot repeatedBoolExtension]];
323 XCTAssertEqual((i % 2) ? YES : NO, [extension[i] boolValue]);
324
325 NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
326 extension = [message getExtension:[UnittestRoot repeatedStringExtension]];
327 XCTAssertEqualObjects(string, extension[i]);
328 [string release];
329
330 NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
331 extension = [message getExtension:[UnittestRoot repeatedBytesExtension]];
332 XCTAssertEqualObjects(data, extension[i]);
333 [data release];
334
335 extension = [message getExtension:[UnittestRoot repeatedGroupExtension]];
336 XCTAssertEqual((int)(217 + i * 100), [(TestAllTypes_OptionalGroup*)extension [i] a]);
337 extension = [message getExtension:[UnittestRoot repeatedNestedMessageExtensi on]];
338 XCTAssertEqual((int)(218 + i * 100), [(TestAllTypes_NestedMessage*)extension [i] bb]);
339 extension = [message getExtension:[UnittestRoot repeatedForeignMessageExtens ion]];
340 XCTAssertEqual((int)(219 + i * 100), [extension[i] c]);
341 extension = [message getExtension:[UnittestRoot repeatedImportMessageExtensi on]];
342 XCTAssertEqual((int)(220 + i * 100), [extension[i] d]);
343
344 extension = [message getExtension:[UnittestRoot repeatedNestedEnumExtension] ];
345 XCTAssertEqual((i % 2) ? TestAllTypes_NestedEnum_Bar : TestAllTypes_NestedEn um_Baz, [extension[i] intValue]);
346 extension = [message getExtension:[UnittestRoot repeatedForeignEnumExtension ]];
347 XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz, [e xtension[i] intValue]);
348 extension = [message getExtension:[UnittestRoot repeatedImportEnumExtension] ];
349 XCTAssertEqual((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz, [exten sion[i] intValue]);
350
351 string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
352 extension = [message getExtension:[UnittestRoot repeatedStringPieceExtension ]];
353 XCTAssertEqualObjects(string, extension[i]);
354 [string release];
355
356 string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
357 extension = [message getExtension:[UnittestRoot repeatedCordExtension]];
358 XCTAssertEqualObjects(string, extension[i]);
359 [string release];
360 }
361
362 // -----------------------------------------------------------------
363
364 XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt32Extension]]);
365 XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt64Extension]]);
366 XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint32Extension]]);
367 XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint64Extension]]);
368 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint32Extension]]);
369 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint64Extension]]);
370 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
371 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
372 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed32Extension]]);
373 XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed64Extension]]);
374 XCTAssertTrue([message hasExtension:[UnittestRoot defaultFloatExtension]]);
375 XCTAssertTrue([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
376 XCTAssertTrue([message hasExtension:[UnittestRoot defaultBoolExtension]]);
377 XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringExtension]]);
378 XCTAssertTrue([message hasExtension:[UnittestRoot defaultBytesExtension]]);
379
380 XCTAssertTrue([message hasExtension:[UnittestRoot defaultNestedEnumExtension]] );
381 XCTAssertTrue([message hasExtension:[UnittestRoot defaultForeignEnumExtension] ]);
382 XCTAssertTrue([message hasExtension:[UnittestRoot defaultImportEnumExtension]] );
383
384 XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringPieceExtension] ]);
385 XCTAssertTrue([message hasExtension:[UnittestRoot defaultCordExtension]]);
386
387 XCTAssertEqual(401, [[message getExtension:[UnittestRoot defaultInt32Extension ]] intValue]);
388 XCTAssertEqual(402LL, [[message getExtension:[UnittestRoot defaultInt64Extensi on]] longLongValue]);
389 XCTAssertEqual(403U, [[message getExtension:[UnittestRoot defaultUint32Extensi on]] unsignedIntValue]);
390 XCTAssertEqual(404ULL, [[message getExtension:[UnittestRoot defaultUint64Exten sion]] unsignedLongLongValue]);
391 XCTAssertEqual(405, [[message getExtension:[UnittestRoot defaultSint32Extensio n]] intValue]);
392 XCTAssertEqual(406LL, [[message getExtension:[UnittestRoot defaultSint64Extens ion]] longLongValue]);
393 XCTAssertEqual(407U, [[message getExtension:[UnittestRoot defaultFixed32Extens ion]] unsignedIntValue]);
394 XCTAssertEqual(408ULL, [[message getExtension:[UnittestRoot defaultFixed64Exte nsion]] unsignedLongLongValue]);
395 XCTAssertEqual(409, [[message getExtension:[UnittestRoot defaultSfixed32Extens ion]] intValue]);
396 XCTAssertEqual(410LL,[[message getExtension:[UnittestRoot defaultSfixed64Exten sion]] longLongValue]);
397 XCTAssertEqualWithAccuracy(411.0f, [[message getExtension:[UnittestRoot defaul tFloatExtension]] floatValue], 0.01);
398 XCTAssertEqualWithAccuracy(412.0, [[message getExtension:[UnittestRoot default DoubleExtension]] doubleValue], 0.01);
399 XCTAssertFalse([[message getExtension:[UnittestRoot defaultBoolExtension]] boo lValue]);
400 XCTAssertEqualObjects(@"415", [message getExtension:[UnittestRoot defaultStrin gExtension]]);
401 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:416], [message getExtension :[UnittestRoot defaultBytesExtension]]);
402
403 XCTAssertEqual(TestAllTypes_NestedEnum_Foo, [[message getExtension:[UnittestRo ot defaultNestedEnumExtension]] intValue]);
404 XCTAssertEqual(ForeignEnum_ForeignFoo, [[message getExtension:[UnittestRoot de faultForeignEnumExtension]] intValue]);
405 XCTAssertEqual(ImportEnum_ImportFoo, [[message getExtension:[UnittestRoot defa ultImportEnumExtension]] intValue]);
406
407 XCTAssertEqualObjects(@"424", [message getExtension:[UnittestRoot defaultStrin gPieceExtension]]);
408 XCTAssertEqualObjects(@"425", [message getExtension:[UnittestRoot defaultCordE xtension]]);
409 }
410
411 - (void)assertRepeatedExtensionsModified:(TestAllExtensions *)message
412 repeatedCount:(uint32_t)count {
413 // ModifyRepeatedFields only sets the second repeated element of each
414 // field. In addition to verifying this, we also verify that the first
415 // element and size were *not* modified.
416 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt32Extens ion]] count]);
417 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt64Extens ion]] count]);
418 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint32Exten sion]] count]);
419 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint64Exten sion]] count]);
420 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint32Exten sion]] count]);
421 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint64Exten sion]] count]);
422 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed32Exte nsion]] count]);
423 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed64Exte nsion]] count]);
424 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed32Ext ension]] count]);
425 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed64Ext ension]] count]);
426 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFloatExtens ion]] count]);
427 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedDoubleExten sion]] count]);
428 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBoolExtensi on]] count]);
429 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringExten sion]] count]);
430 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBytesExtens ion]] count]);
431
432 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedGroupExtens ion]] count]);
433 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedMessa geExtension]] count]);
434 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignMess ageExtension]] count]);
435 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportMessa geExtension]] count]);
436 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedEnumE xtension]] count]);
437 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignEnum Extension]] count]);
438 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportEnumE xtension]] count]);
439
440 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringPiece Extension]] count]);
441 XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedCordExtensi on]] count]);
442
443 XCTAssertEqual(201,[[message getExtension:[UnittestRoot repeatedInt32Extension ]][0] intValue]);
444 XCTAssertEqual(202LL, [[message getExtension:[UnittestRoot repeatedInt64Extens ion]][0] longLongValue]);
445 XCTAssertEqual(203U, [[message getExtension:[UnittestRoot repeatedUint32Extens ion]][0] unsignedIntValue]);
446 XCTAssertEqual(204ULL, [[message getExtension:[UnittestRoot repeatedUint64Exte nsion]][0] unsignedLongLongValue]);
447 XCTAssertEqual(205, [[message getExtension:[UnittestRoot repeatedSint32Extensi on]][0] intValue]);
448 XCTAssertEqual(206LL, [[message getExtension:[UnittestRoot repeatedSint64Exten sion]][0] longLongValue]);
449 XCTAssertEqual(207U, [[message getExtension:[UnittestRoot repeatedFixed32Exten sion]][0] unsignedIntValue]);
450 XCTAssertEqual(208ULL, [[message getExtension:[UnittestRoot repeatedFixed64Ext ension]][0] unsignedLongLongValue]);
451 XCTAssertEqual(209, [[message getExtension:[UnittestRoot repeatedSfixed32Exten sion]][0] intValue]);
452 XCTAssertEqual(210LL, [[message getExtension:[UnittestRoot repeatedSfixed64Ext ension]][0] longLongValue]);
453 XCTAssertEqualWithAccuracy(211.0f, [[message getExtension:[UnittestRoot repeat edFloatExtension]][0] floatValue], 0.01);
454 XCTAssertEqualWithAccuracy(212.0, [[message getExtension:[UnittestRoot repeate dDoubleExtension]][0] doubleValue], 0.01);
455 XCTAssertFalse([[message getExtension:[UnittestRoot repeatedBoolExtension]][0] boolValue]);
456 XCTAssertEqualObjects(@"215", [message getExtension:[UnittestRoot repeatedStri ngExtension]][0]);
457 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:216], [message getExtension :[UnittestRoot repeatedBytesExtension]][0]);
458
459 XCTAssertEqual(217, [(TestAllTypes_OptionalGroup*)[message getExtension:[Unitt estRoot repeatedGroupExtension]][0] a]);
460 XCTAssertEqual(218, [(TestAllTypes_NestedMessage*)[message getExtension:[Unitt estRoot repeatedNestedMessageExtension]][0] bb]);
461 XCTAssertEqual(219, [[message getExtension:[UnittestRoot repeatedForeignMessag eExtension]][0] c]);
462 XCTAssertEqual(220, [[message getExtension:[UnittestRoot repeatedImportMessage Extension]][0] d]);
463
464 XCTAssertEqual(TestAllTypes_NestedEnum_Baz,
465 [[message getExtension:[UnittestRoot repeatedNestedEnumExtensio n]][0] intValue]);
466 XCTAssertEqual(ForeignEnum_ForeignBaz,
467 [[message getExtension:[UnittestRoot repeatedForeignEnumExtensi on]][0] intValue]);
468 XCTAssertEqual(ImportEnum_ImportBaz,
469 [[message getExtension:[UnittestRoot repeatedImportEnumExtensio n]][0] intValue]);
470
471 XCTAssertEqualObjects(@"224", [message getExtension:[UnittestRoot repeatedStri ngPieceExtension]][0]);
472 XCTAssertEqualObjects(@"225", [message getExtension:[UnittestRoot repeatedCord Extension]][0]);
473
474 // Actually verify the second (modified) elements now.
475 XCTAssertEqual(501, [[message getExtension:[UnittestRoot repeatedInt32Extensio n]][1] intValue]);
476 XCTAssertEqual(502LL, [[message getExtension:[UnittestRoot repeatedInt64Extens ion]][1] longLongValue]);
477 XCTAssertEqual(503U, [[message getExtension:[UnittestRoot repeatedUint32Extens ion]][1] unsignedIntValue]);
478 XCTAssertEqual(504ULL, [[message getExtension:[UnittestRoot repeatedUint64Exte nsion]][1] unsignedLongLongValue]);
479 XCTAssertEqual(505, [[message getExtension:[UnittestRoot repeatedSint32Extensi on]][1] intValue]);
480 XCTAssertEqual(506LL, [[message getExtension:[UnittestRoot repeatedSint64Exten sion]][1] longLongValue]);
481 XCTAssertEqual(507U, [[message getExtension:[UnittestRoot repeatedFixed32Exten sion]][1] unsignedIntValue]);
482 XCTAssertEqual(508ULL, [[message getExtension:[UnittestRoot repeatedFixed64Ext ension]][1] unsignedLongLongValue]);
483 XCTAssertEqual(509, [[message getExtension:[UnittestRoot repeatedSfixed32Exten sion]][1] intValue]);
484 XCTAssertEqual(510LL, [[message getExtension:[UnittestRoot repeatedSfixed64Ext ension]][1] longLongValue]);
485 XCTAssertEqualWithAccuracy(511.0f, [[message getExtension:[UnittestRoot repeat edFloatExtension]][1] floatValue], 0.01);
486 XCTAssertEqualWithAccuracy(512.0, [[message getExtension:[UnittestRoot repeate dDoubleExtension]][1] doubleValue], 0.01);
487 XCTAssertTrue([[message getExtension:[UnittestRoot repeatedBoolExtension]][1] boolValue]);
488 XCTAssertEqualObjects(@"515", [message getExtension:[UnittestRoot repeatedStri ngExtension]][1]);
489 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:516], [message getExtension :[UnittestRoot repeatedBytesExtension]][1]);
490
491 XCTAssertEqual(517, [(TestAllTypes_OptionalGroup*)[message getExtension:[Unitt estRoot repeatedGroupExtension]][1] a]);
492 XCTAssertEqual(518, [(TestAllTypes_NestedMessage*)[message getExtension:[Unitt estRoot repeatedNestedMessageExtension]][1] bb]);
493 XCTAssertEqual(519, [[message getExtension:[UnittestRoot repeatedForeignMessag eExtension]][1] c]);
494 XCTAssertEqual(520, [[message getExtension:[UnittestRoot repeatedImportMessage Extension]][1] d]);
495
496 XCTAssertEqual(TestAllTypes_NestedEnum_Foo,
497 [[message getExtension:[UnittestRoot repeatedNestedEnumExtensio n]][1] intValue]);
498 XCTAssertEqual(ForeignEnum_ForeignFoo,
499 [[message getExtension:[UnittestRoot repeatedForeignEnumExtensi on]][1] intValue]);
500 XCTAssertEqual(ImportEnum_ImportFoo,
501 [[message getExtension:[UnittestRoot repeatedImportEnumExtensio n]][1] intValue]);
502
503 XCTAssertEqualObjects(@"524", [message getExtension:[UnittestRoot repeatedStri ngPieceExtension]][1]);
504 XCTAssertEqualObjects(@"525", [message getExtension:[UnittestRoot repeatedCord Extension]][1]);
505 }
506
507 // -------------------------------------------------------------------
508
509 - (void)assertAllFieldsSet:(TestAllTypes *)message
510 repeatedCount:(uint32_t)count {
511 XCTAssertTrue(message.hasOptionalInt32);
512 XCTAssertTrue(message.hasOptionalInt64);
513 XCTAssertTrue(message.hasOptionalUint32);
514 XCTAssertTrue(message.hasOptionalUint64);
515 XCTAssertTrue(message.hasOptionalSint32);
516 XCTAssertTrue(message.hasOptionalSint64);
517 XCTAssertTrue(message.hasOptionalFixed32);
518 XCTAssertTrue(message.hasOptionalFixed64);
519 XCTAssertTrue(message.hasOptionalSfixed32);
520 XCTAssertTrue(message.hasOptionalSfixed64);
521 XCTAssertTrue(message.hasOptionalFloat);
522 XCTAssertTrue(message.hasOptionalDouble);
523 XCTAssertTrue(message.hasOptionalBool);
524 XCTAssertTrue(message.hasOptionalString);
525 XCTAssertTrue(message.hasOptionalBytes);
526
527 XCTAssertTrue(message.hasOptionalGroup);
528 XCTAssertTrue(message.hasOptionalNestedMessage);
529 XCTAssertTrue(message.hasOptionalForeignMessage);
530 XCTAssertTrue(message.hasOptionalImportMessage);
531
532 XCTAssertTrue(message.optionalGroup.hasA);
533 XCTAssertTrue(message.optionalNestedMessage.hasBb);
534 XCTAssertTrue(message.optionalForeignMessage.hasC);
535 XCTAssertTrue(message.optionalImportMessage.hasD);
536
537 XCTAssertTrue(message.hasOptionalNestedEnum);
538 XCTAssertTrue(message.hasOptionalForeignEnum);
539 XCTAssertTrue(message.hasOptionalImportEnum);
540
541 XCTAssertTrue(message.hasOptionalStringPiece);
542 XCTAssertTrue(message.hasOptionalCord);
543
544 XCTAssertEqual(101, message.optionalInt32);
545 XCTAssertEqual(102LL, message.optionalInt64);
546 XCTAssertEqual(103U, message.optionalUint32);
547 XCTAssertEqual(104ULL, message.optionalUint64);
548 XCTAssertEqual(105, message.optionalSint32);
549 XCTAssertEqual(106LL, message.optionalSint64);
550 XCTAssertEqual(107U, message.optionalFixed32);
551 XCTAssertEqual(108ULL, message.optionalFixed64);
552 XCTAssertEqual(109, message.optionalSfixed32);
553 XCTAssertEqual(110LL, message.optionalSfixed64);
554 XCTAssertEqualWithAccuracy(111.0f, message.optionalFloat, 0.1);
555 XCTAssertEqualWithAccuracy(112.0, message.optionalDouble, 0.1);
556 XCTAssertTrue(message.optionalBool);
557 XCTAssertEqualObjects(@"115", message.optionalString);
558 XCTAssertEqualObjects([NSData gpbtu_dataWithEmbeddedNulls],
559 message.optionalBytes);
560
561 XCTAssertEqual(117, message.optionalGroup.a);
562 XCTAssertEqual(118, message.optionalNestedMessage.bb);
563 XCTAssertEqual(119, message.optionalForeignMessage.c);
564 XCTAssertEqual(120, message.optionalImportMessage.d);
565
566 XCTAssertEqual(TestAllTypes_NestedEnum_Baz, message.optionalNestedEnum);
567 XCTAssertEqual(ForeignEnum_ForeignBaz, message.optionalForeignEnum);
568 XCTAssertEqual(ImportEnum_ImportBaz, message.optionalImportEnum);
569
570 XCTAssertEqualObjects(@"124", message.optionalStringPiece);
571 XCTAssertEqualObjects(@"125", message.optionalCord);
572
573 // -----------------------------------------------------------------
574
575 XCTAssertEqual(count, message.repeatedInt32Array.count);
576 XCTAssertEqual(count, message.repeatedInt64Array.count);
577 XCTAssertEqual(count, message.repeatedUint32Array.count);
578 XCTAssertEqual(count, message.repeatedUint64Array.count);
579 XCTAssertEqual(count, message.repeatedSint32Array.count);
580 XCTAssertEqual(count, message.repeatedSint64Array.count);
581 XCTAssertEqual(count, message.repeatedFixed32Array.count);
582 XCTAssertEqual(count, message.repeatedFixed64Array.count);
583 XCTAssertEqual(count, message.repeatedSfixed32Array.count);
584 XCTAssertEqual(count, message.repeatedSfixed64Array.count);
585 XCTAssertEqual(count, message.repeatedFloatArray.count);
586 XCTAssertEqual(count, message.repeatedDoubleArray.count);
587 XCTAssertEqual(count, message.repeatedBoolArray.count);
588 XCTAssertEqual(count, message.repeatedStringArray.count);
589 XCTAssertEqual(count, message.repeatedBytesArray.count);
590
591 XCTAssertEqual(count, message.repeatedGroupArray.count);
592 XCTAssertEqual(count, message.repeatedNestedMessageArray.count);
593 XCTAssertEqual(count, message.repeatedForeignMessageArray.count);
594 XCTAssertEqual(count, message.repeatedImportMessageArray.count);
595 XCTAssertEqual(count, message.repeatedNestedEnumArray.count);
596 XCTAssertEqual(count, message.repeatedForeignEnumArray.count);
597 XCTAssertEqual(count, message.repeatedImportEnumArray.count);
598
599 XCTAssertEqual(count, message.repeatedStringPieceArray.count);
600 XCTAssertEqual(count, message.repeatedCordArray.count);
601
602 XCTAssertEqual(count, message.repeatedInt32Array_Count);
603 XCTAssertEqual(count, message.repeatedInt64Array_Count);
604 XCTAssertEqual(count, message.repeatedUint32Array_Count);
605 XCTAssertEqual(count, message.repeatedUint64Array_Count);
606 XCTAssertEqual(count, message.repeatedSint32Array_Count);
607 XCTAssertEqual(count, message.repeatedSint64Array_Count);
608 XCTAssertEqual(count, message.repeatedFixed32Array_Count);
609 XCTAssertEqual(count, message.repeatedFixed64Array_Count);
610 XCTAssertEqual(count, message.repeatedSfixed32Array_Count);
611 XCTAssertEqual(count, message.repeatedSfixed64Array_Count);
612 XCTAssertEqual(count, message.repeatedFloatArray_Count);
613 XCTAssertEqual(count, message.repeatedDoubleArray_Count);
614 XCTAssertEqual(count, message.repeatedBoolArray_Count);
615 XCTAssertEqual(count, message.repeatedStringArray_Count);
616 XCTAssertEqual(count, message.repeatedBytesArray_Count);
617
618 XCTAssertEqual(count, message.repeatedGroupArray_Count);
619 XCTAssertEqual(count, message.repeatedNestedMessageArray_Count);
620 XCTAssertEqual(count, message.repeatedForeignMessageArray_Count);
621 XCTAssertEqual(count, message.repeatedImportMessageArray_Count);
622 XCTAssertEqual(count, message.repeatedNestedEnumArray_Count);
623 XCTAssertEqual(count, message.repeatedForeignEnumArray_Count);
624 XCTAssertEqual(count, message.repeatedImportEnumArray_Count);
625
626 XCTAssertEqual(count, message.repeatedStringPieceArray_Count);
627 XCTAssertEqual(count, message.repeatedCordArray_Count);
628
629 for (uint32_t i = 0; i < count; ++i) {
630 XCTAssertEqual((int)(201 + i * 100),
631 [message.repeatedInt32Array valueAtIndex:i]);
632 XCTAssertEqual(202 + i * 100, [message.repeatedInt64Array valueAtIndex:i]);
633 XCTAssertEqual(203 + i * 100, [message.repeatedUint32Array valueAtIndex:i]);
634 XCTAssertEqual(204 + i * 100, [message.repeatedUint64Array valueAtIndex:i]);
635 XCTAssertEqual((int)(205 + i * 100),
636 [message.repeatedSint32Array valueAtIndex:i]);
637 XCTAssertEqual(206 + i * 100, [message.repeatedSint64Array valueAtIndex:i]);
638 XCTAssertEqual(207 + i * 100,
639 [message.repeatedFixed32Array valueAtIndex:i]);
640 XCTAssertEqual(208 + i * 100,
641 [message.repeatedFixed64Array valueAtIndex:i]);
642 XCTAssertEqual((int)(209 + i * 100),
643 [message.repeatedSfixed32Array valueAtIndex:i]);
644 XCTAssertEqual(210 + i * 100,
645 [message.repeatedSfixed64Array valueAtIndex:i]);
646 XCTAssertEqualWithAccuracy(
647 211 + i * 100, [message.repeatedFloatArray valueAtIndex:i], 0.1);
648 XCTAssertEqualWithAccuracy(
649 212 + i * 100, [message.repeatedDoubleArray valueAtIndex:i], 0.1);
650 XCTAssertEqual((i % 2) ? YES : NO,
651 [message.repeatedBoolArray valueAtIndex:i]);
652
653 NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
654 XCTAssertEqualObjects(string, message.repeatedStringArray[i]);
655 [string release];
656
657 NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
658 XCTAssertEqualObjects(data, message.repeatedBytesArray[i]);
659 [data release];
660
661 XCTAssertEqual((int)(217 + i * 100), ((TestAllTypes_RepeatedGroup*)message.r epeatedGroupArray[i]).a);
662 XCTAssertEqual((int)(218 + i * 100), ((TestAllTypes_NestedMessage*)message.r epeatedNestedMessageArray[i]).bb);
663 XCTAssertEqual((int)(219 + i * 100), ((ForeignMessage*)message.repeatedForei gnMessageArray[i]).c);
664 XCTAssertEqual((int)(220 + i * 100), ((ImportMessage*)message.repeatedImport MessageArray[i]).d);
665
666 XCTAssertEqual((i % 2) ? TestAllTypes_NestedEnum_Bar : TestAllTypes_NestedEn um_Baz, [message.repeatedNestedEnumArray valueAtIndex:i]);
667 XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz, [m essage.repeatedForeignEnumArray valueAtIndex:i]);
668 XCTAssertEqual((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz, [messa ge.repeatedImportEnumArray valueAtIndex:i]);
669
670 string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
671 XCTAssertEqualObjects(string, message.repeatedStringPieceArray[i]);
672 [string release];
673
674 string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
675 XCTAssertEqualObjects(string, message.repeatedCordArray[i]);
676 [string release];
677 }
678
679 // -----------------------------------------------------------------
680
681 XCTAssertTrue(message.hasDefaultInt32);
682 XCTAssertTrue(message.hasDefaultInt64);
683 XCTAssertTrue(message.hasDefaultUint32);
684 XCTAssertTrue(message.hasDefaultUint64);
685 XCTAssertTrue(message.hasDefaultSint32);
686 XCTAssertTrue(message.hasDefaultSint64);
687 XCTAssertTrue(message.hasDefaultFixed32);
688 XCTAssertTrue(message.hasDefaultFixed64);
689 XCTAssertTrue(message.hasDefaultSfixed32);
690 XCTAssertTrue(message.hasDefaultSfixed64);
691 XCTAssertTrue(message.hasDefaultFloat);
692 XCTAssertTrue(message.hasDefaultDouble);
693 XCTAssertTrue(message.hasDefaultBool);
694 XCTAssertTrue(message.hasDefaultString);
695 XCTAssertTrue(message.hasDefaultBytes);
696
697 XCTAssertTrue(message.hasDefaultNestedEnum);
698 XCTAssertTrue(message.hasDefaultForeignEnum);
699 XCTAssertTrue(message.hasDefaultImportEnum);
700
701 XCTAssertTrue(message.hasDefaultStringPiece);
702 XCTAssertTrue(message.hasDefaultCord);
703
704 XCTAssertEqual(401, message.defaultInt32);
705 XCTAssertEqual(402LL, message.defaultInt64);
706 XCTAssertEqual(403U, message.defaultUint32);
707 XCTAssertEqual(404ULL, message.defaultUint64);
708 XCTAssertEqual(405, message.defaultSint32);
709 XCTAssertEqual(406LL, message.defaultSint64);
710 XCTAssertEqual(407U, message.defaultFixed32);
711 XCTAssertEqual(408ULL, message.defaultFixed64);
712 XCTAssertEqual(409, message.defaultSfixed32);
713 XCTAssertEqual(410LL, message.defaultSfixed64);
714 XCTAssertEqualWithAccuracy(411.0f, message.defaultFloat, 0.1);
715 XCTAssertEqualWithAccuracy(412.0, message.defaultDouble, 0.1);
716 XCTAssertFalse(message.defaultBool);
717 XCTAssertEqualObjects(@"415", message.defaultString);
718 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:416],
719 message.defaultBytes);
720
721 XCTAssertEqual(TestAllTypes_NestedEnum_Foo, message.defaultNestedEnum);
722 XCTAssertEqual(ForeignEnum_ForeignFoo, message.defaultForeignEnum);
723 XCTAssertEqual(ImportEnum_ImportFoo, message.defaultImportEnum);
724
725 XCTAssertEqualObjects(@"424", message.defaultStringPiece);
726 XCTAssertEqualObjects(@"425", message.defaultCord);
727 }
728
729 - (void)setAllFields:(TestAllTypes *)message repeatedCount:(uint32_t)count {
730 [message setOptionalInt32:101];
731 [message setOptionalInt64:102];
732 [message setOptionalUint32:103];
733 [message setOptionalUint64:104];
734 [message setOptionalSint32:105];
735 [message setOptionalSint64:106];
736 [message setOptionalFixed32:107];
737 [message setOptionalFixed64:108];
738 [message setOptionalSfixed32:109];
739 [message setOptionalSfixed64:110];
740 [message setOptionalFloat:111];
741 [message setOptionalDouble:112];
742 [message setOptionalBool:YES];
743 [message setOptionalString:@"115"];
744 [message setOptionalBytes:[NSData gpbtu_dataWithEmbeddedNulls]];
745
746 TestAllTypes_OptionalGroup *allTypes = [TestAllTypes_OptionalGroup message];
747 [allTypes setA:117];
748 [message setOptionalGroup:allTypes];
749 TestAllTypes_NestedMessage *nestedMessage =
750 [TestAllTypes_NestedMessage message];
751 [nestedMessage setBb:118];
752 [message setOptionalNestedMessage:nestedMessage];
753 ForeignMessage *foreignMessage = [ForeignMessage message];
754 [foreignMessage setC:119];
755 [message setOptionalForeignMessage:foreignMessage];
756 ImportMessage *importMessage = [ImportMessage message];
757 [importMessage setD:120];
758 [message setOptionalImportMessage:importMessage];
759
760 [message setOptionalNestedEnum:TestAllTypes_NestedEnum_Baz];
761 [message setOptionalForeignEnum:ForeignEnum_ForeignBaz];
762 [message setOptionalImportEnum:ImportEnum_ImportBaz];
763
764 [message setOptionalStringPiece:@"124"];
765 [message setOptionalCord:@"125"];
766
767 // -----------------------------------------------------------------
768
769 for (uint32_t i = 0; i < count; i++) {
770 [message.repeatedInt32Array addValue:201 + i * 100];
771 [message.repeatedInt64Array addValue:202 + i * 100];
772 [message.repeatedUint32Array addValue:203 + i * 100];
773 [message.repeatedUint64Array addValue:204 + i * 100];
774 [message.repeatedSint32Array addValue:205 + i * 100];
775 [message.repeatedSint64Array addValue:206 + i * 100];
776 [message.repeatedFixed32Array addValue:207 + i * 100];
777 [message.repeatedFixed64Array addValue:208 + i * 100];
778 [message.repeatedSfixed32Array addValue:209 + i * 100];
779 [message.repeatedSfixed64Array addValue:210 + i * 100];
780 [message.repeatedFloatArray addValue:211 + i * 100];
781 [message.repeatedDoubleArray addValue:212 + i * 100];
782 [message.repeatedBoolArray addValue:(i % 2)];
783 NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
784 [message.repeatedStringArray addObject:string];
785 [string release];
786
787 NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
788 [message.repeatedBytesArray addObject:data];
789 [data release];
790
791 TestAllTypes_RepeatedGroup *testAll =
792 [[TestAllTypes_RepeatedGroup alloc] init];
793 [testAll setA:217 + i * 100];
794 [message.repeatedGroupArray addObject:testAll];
795 [testAll release];
796
797 nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
798 [nestedMessage setBb:218 + i * 100];
799 [message.repeatedNestedMessageArray addObject:nestedMessage];
800 [nestedMessage release];
801
802 foreignMessage = [[ForeignMessage alloc] init];
803 [foreignMessage setC:219 + i * 100];
804 [message.repeatedForeignMessageArray addObject:foreignMessage];
805 [foreignMessage release];
806
807 importMessage = [[ImportMessage alloc] init];
808 [importMessage setD:220 + i * 100];
809 [message.repeatedImportMessageArray addObject:importMessage];
810 [importMessage release];
811
812 [message.repeatedNestedEnumArray addValue:(i % 2) ? TestAllTypes_NestedEnum_ Bar : TestAllTypes_NestedEnum_Baz];
813
814 [message.repeatedForeignEnumArray addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
815 [message.repeatedImportEnumArray addValue:(i % 2) ? ImportEnum_ImportBar : I mportEnum_ImportBaz];
816
817 string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
818 [message.repeatedStringPieceArray addObject:string];
819 [string release];
820
821 string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
822 [message.repeatedCordArray addObject:string];
823 [string release];
824 }
825 // -----------------------------------------------------------------
826
827 message.defaultInt32 = 401;
828 message.defaultInt64 = 402;
829 message.defaultUint32 = 403;
830 message.defaultUint64 = 404;
831 message.defaultSint32 = 405;
832 message.defaultSint64 = 406;
833 message.defaultFixed32 = 407;
834 message.defaultFixed64 = 408;
835 message.defaultSfixed32 = 409;
836 message.defaultSfixed64 = 410;
837 message.defaultFloat = 411;
838 message.defaultDouble = 412;
839 message.defaultBool = NO;
840 message.defaultString = @"415";
841 message.defaultBytes = [NSData gpbtu_dataWithUint32:416];
842
843 message.defaultNestedEnum = TestAllTypes_NestedEnum_Foo;
844 message.defaultForeignEnum = ForeignEnum_ForeignFoo;
845 message.defaultImportEnum = ImportEnum_ImportFoo;
846
847 message.defaultStringPiece = @"424";
848 message.defaultCord = @"425";
849 }
850
851 - (void)clearAllFields:(TestAllTypes *)message {
852 message.hasOptionalInt32 = NO;
853 message.hasOptionalInt64 = NO;
854 message.hasOptionalUint32 = NO;
855 message.hasOptionalUint64 = NO;
856 message.hasOptionalSint32 = NO;
857 message.hasOptionalSint64 = NO;
858 message.hasOptionalFixed32 = NO;
859 message.hasOptionalFixed64 = NO;
860 message.hasOptionalSfixed32 = NO;
861 message.hasOptionalSfixed64 = NO;
862 message.hasOptionalFloat = NO;
863 message.hasOptionalDouble = NO;
864 message.hasOptionalBool = NO;
865 message.hasOptionalString = NO;
866 message.hasOptionalBytes = NO;
867
868 message.hasOptionalGroup = NO;
869 message.hasOptionalNestedMessage = NO;
870 message.hasOptionalForeignMessage = NO;
871 message.hasOptionalImportMessage = NO;
872
873 message.hasOptionalNestedEnum = NO;
874 message.hasOptionalForeignEnum = NO;
875 message.hasOptionalImportEnum = NO;
876
877 message.hasOptionalStringPiece = NO;
878 message.hasOptionalCord = NO;
879
880 // -----------------------------------------------------------------
881
882 [message.repeatedInt32Array removeAll];
883 [message.repeatedInt64Array removeAll];
884 [message.repeatedUint32Array removeAll];
885 [message.repeatedUint64Array removeAll];
886 [message.repeatedSint32Array removeAll];
887 [message.repeatedSint64Array removeAll];
888 [message.repeatedFixed32Array removeAll];
889 [message.repeatedFixed64Array removeAll];
890 [message.repeatedSfixed32Array removeAll];
891 [message.repeatedSfixed64Array removeAll];
892 [message.repeatedFloatArray removeAll];
893 [message.repeatedDoubleArray removeAll];
894 [message.repeatedBoolArray removeAll];
895 [message.repeatedStringArray removeAllObjects];
896 [message.repeatedBytesArray removeAllObjects];
897
898 [message.repeatedGroupArray removeAllObjects];
899 [message.repeatedNestedMessageArray removeAllObjects];
900 [message.repeatedForeignMessageArray removeAllObjects];
901 [message.repeatedImportMessageArray removeAllObjects];
902
903 [message.repeatedNestedEnumArray removeAll];
904 [message.repeatedForeignEnumArray removeAll];
905 [message.repeatedImportEnumArray removeAll];
906
907 [message.repeatedStringPieceArray removeAllObjects];
908 [message.repeatedCordArray removeAllObjects];
909
910 // -----------------------------------------------------------------
911
912 message.hasDefaultInt32 = NO;
913 message.hasDefaultInt64 = NO;
914 message.hasDefaultUint32 = NO;
915 message.hasDefaultUint64 = NO;
916 message.hasDefaultSint32 = NO;
917 message.hasDefaultSint64 = NO;
918 message.hasDefaultFixed32 = NO;
919 message.hasDefaultFixed64 = NO;
920 message.hasDefaultSfixed32 = NO;
921 message.hasDefaultSfixed64 = NO;
922 message.hasDefaultFloat = NO;
923 message.hasDefaultDouble = NO;
924 message.hasDefaultBool = NO;
925 message.hasDefaultString = NO;
926 message.hasDefaultBytes = NO;
927
928 message.hasDefaultNestedEnum = NO;
929 message.hasDefaultForeignEnum = NO;
930 message.hasDefaultImportEnum = NO;
931
932 message.hasDefaultStringPiece = NO;
933 message.hasDefaultCord = NO;
934 }
935
936 - (void)setAllExtensions:(TestAllExtensions *)message
937 repeatedCount:(uint32_t)count {
938 [message setExtension:[UnittestRoot optionalInt32Extension] value:@101];
939 [message setExtension:[UnittestRoot optionalInt64Extension] value:@102L];
940 [message setExtension:[UnittestRoot optionalUint32Extension] value:@103];
941 [message setExtension:[UnittestRoot optionalUint64Extension] value:@104L];
942 [message setExtension:[UnittestRoot optionalSint32Extension] value:@105];
943 [message setExtension:[UnittestRoot optionalSint64Extension] value:@106L];
944 [message setExtension:[UnittestRoot optionalFixed32Extension] value:@107];
945 [message setExtension:[UnittestRoot optionalFixed64Extension] value:@108L];
946 [message setExtension:[UnittestRoot optionalSfixed32Extension] value:@109];
947 [message setExtension:[UnittestRoot optionalSfixed64Extension] value:@110L];
948 [message setExtension:[UnittestRoot optionalFloatExtension] value:@111.0f];
949 [message setExtension:[UnittestRoot optionalDoubleExtension] value:@112.0];
950 [message setExtension:[UnittestRoot optionalBoolExtension] value:@YES];
951 [message setExtension:[UnittestRoot optionalStringExtension] value:@"115"];
952 [message setExtension:[UnittestRoot optionalBytesExtension]
953 value:[NSData gpbtu_dataWithEmbeddedNulls]];
954
955 OptionalGroup_extension *optionalGroup = [OptionalGroup_extension message];
956 [optionalGroup setA:117];
957 [message setExtension:[UnittestRoot optionalGroupExtension]
958 value:optionalGroup];
959 TestAllTypes_NestedMessage *nestedMessage =
960 [TestAllTypes_NestedMessage message];
961 [nestedMessage setBb:118];
962 [message setExtension:[UnittestRoot optionalNestedMessageExtension]
963 value:nestedMessage];
964 ForeignMessage *foreignMessage = [ForeignMessage message];
965 [foreignMessage setC:119];
966 [message setExtension:[UnittestRoot optionalForeignMessageExtension]
967 value:foreignMessage];
968 ImportMessage *importMessage = [ImportMessage message];
969 [importMessage setD:120];
970 [message setExtension:[UnittestRoot optionalImportMessageExtension]
971 value:importMessage];
972
973 [message setExtension:[UnittestRoot optionalNestedEnumExtension]
974 value:@(TestAllTypes_NestedEnum_Baz)];
975 [message setExtension:[UnittestRoot optionalForeignEnumExtension]
976 value:@(ForeignEnum_ForeignBaz)];
977 [message setExtension:[UnittestRoot optionalImportEnumExtension]
978 value:@(ImportEnum_ImportBaz)];
979
980 [message setExtension:[UnittestRoot optionalStringPieceExtension]
981 value:@"124"];
982 [message setExtension:[UnittestRoot optionalCordExtension] value:@"125"];
983
984 for (uint32_t i = 0; i < count; ++i) {
985 [message addExtension:[UnittestRoot repeatedInt32Extension]
986 value:@(201 + i * 100)];
987 [message addExtension:[UnittestRoot repeatedInt64Extension]
988 value:@(202 + i * 100)];
989 [message addExtension:[UnittestRoot repeatedUint32Extension]
990 value:@(203 + i * 100)];
991 [message addExtension:[UnittestRoot repeatedUint64Extension]
992 value:@(204 + i * 100)];
993 [message addExtension:[UnittestRoot repeatedSint32Extension]
994 value:@(205 + i * 100)];
995 [message addExtension:[UnittestRoot repeatedSint64Extension]
996 value:@(206 + i * 100)];
997 [message addExtension:[UnittestRoot repeatedFixed32Extension]
998 value:@(207 + i * 100)];
999 [message addExtension:[UnittestRoot repeatedFixed64Extension]
1000 value:@(208 + i * 100)];
1001 [message addExtension:[UnittestRoot repeatedSfixed32Extension]
1002 value:@(209 + i * 100)];
1003 [message addExtension:[UnittestRoot repeatedSfixed64Extension]
1004 value:@(210 + i * 100)];
1005 [message addExtension:[UnittestRoot repeatedFloatExtension]
1006 value:@(211 + i * 100)];
1007 [message addExtension:[UnittestRoot repeatedDoubleExtension]
1008 value:@(212 + i * 100)];
1009 [message addExtension:[UnittestRoot repeatedBoolExtension]
1010 value:@((i % 2) ? YES : NO)];
1011 NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
1012 [message addExtension:[UnittestRoot repeatedStringExtension] value:string];
1013 [string release];
1014 NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
1015 [message addExtension:[UnittestRoot repeatedBytesExtension] value:data];
1016 [data release];
1017
1018 RepeatedGroup_extension *repeatedGroup =
1019 [[RepeatedGroup_extension alloc] init];
1020 [repeatedGroup setA:217 + i * 100];
1021 [message addExtension:[UnittestRoot repeatedGroupExtension]
1022 value:repeatedGroup];
1023 [repeatedGroup release];
1024 nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
1025 [nestedMessage setBb:218 + i * 100];
1026 [message addExtension:[UnittestRoot repeatedNestedMessageExtension]
1027 value:nestedMessage];
1028 [nestedMessage release];
1029 foreignMessage = [[ForeignMessage alloc] init];
1030 [foreignMessage setC:219 + i * 100];
1031 [message addExtension:[UnittestRoot repeatedForeignMessageExtension]
1032 value:foreignMessage];
1033 [foreignMessage release];
1034 importMessage = [[ImportMessage alloc] init];
1035 [importMessage setD:220 + i * 100];
1036 [message addExtension:[UnittestRoot repeatedImportMessageExtension]
1037 value:importMessage];
1038 [importMessage release];
1039 [message addExtension:[UnittestRoot repeatedNestedEnumExtension]
1040 value:@((i % 2) ? TestAllTypes_NestedEnum_Bar
1041 : TestAllTypes_NestedEnum_Baz)];
1042 [message addExtension:[UnittestRoot repeatedForeignEnumExtension]
1043 value:@((i % 2) ? ForeignEnum_ForeignBar
1044 : ForeignEnum_ForeignBaz)];
1045 [message
1046 addExtension:[UnittestRoot repeatedImportEnumExtension]
1047 value:@((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz)];
1048
1049 string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
1050 [message addExtension:[UnittestRoot repeatedStringPieceExtension]
1051 value:string];
1052 [string release];
1053
1054 string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
1055 [message addExtension:[UnittestRoot repeatedCordExtension] value:string];
1056 [string release];
1057 }
1058
1059 // -----------------------------------------------------------------
1060
1061 [message setExtension:[UnittestRoot defaultInt32Extension] value:@401];
1062 [message setExtension:[UnittestRoot defaultInt64Extension] value:@402L];
1063 [message setExtension:[UnittestRoot defaultUint32Extension] value:@403];
1064 [message setExtension:[UnittestRoot defaultUint64Extension] value:@404L];
1065 [message setExtension:[UnittestRoot defaultSint32Extension] value:@405];
1066 [message setExtension:[UnittestRoot defaultSint64Extension] value:@406L];
1067 [message setExtension:[UnittestRoot defaultFixed32Extension] value:@407];
1068 [message setExtension:[UnittestRoot defaultFixed64Extension] value:@408L];
1069 [message setExtension:[UnittestRoot defaultSfixed32Extension] value:@409];
1070 [message setExtension:[UnittestRoot defaultSfixed64Extension] value:@410L];
1071 [message setExtension:[UnittestRoot defaultFloatExtension] value:@411.0f];
1072 [message setExtension:[UnittestRoot defaultDoubleExtension] value:@412.0];
1073 [message setExtension:[UnittestRoot defaultBoolExtension] value:@NO];
1074 [message setExtension:[UnittestRoot defaultStringExtension] value:@"415"];
1075 [message setExtension:[UnittestRoot defaultBytesExtension]
1076 value:[NSData gpbtu_dataWithUint32:416]];
1077
1078 [message setExtension:[UnittestRoot defaultNestedEnumExtension]
1079 value:@(TestAllTypes_NestedEnum_Foo)];
1080 [message setExtension:[UnittestRoot defaultForeignEnumExtension]
1081 value:@(ForeignEnum_ForeignFoo)];
1082 [message setExtension:[UnittestRoot defaultImportEnumExtension]
1083 value:@(ImportEnum_ImportFoo)];
1084
1085 [message setExtension:[UnittestRoot defaultStringPieceExtension]
1086 value:@"424"];
1087 [message setExtension:[UnittestRoot defaultCordExtension] value:@"425"];
1088 }
1089
1090 - (void)setAllMapFields:(TestMap *)message numEntries:(uint32_t)count {
1091 for (uint32_t i = 0; i < count; i++) {
1092 [message.mapInt32Int32 setValue:(i + 1) forKey:100 + i * 100];
1093 [message.mapInt64Int64 setValue:(i + 1) forKey:101 + i * 100];
1094 [message.mapUint32Uint32 setValue:(i + 1) forKey:102 + i * 100];
1095 [message.mapUint64Uint64 setValue:(i + 1) forKey:103 + i * 100];
1096 [message.mapSint32Sint32 setValue:(i + 1) forKey:104 + i * 100];
1097 [message.mapSint64Sint64 setValue:(i + 1) forKey:105 + i * 100];
1098 [message.mapFixed32Fixed32 setValue:(i + 1) forKey:106 + i * 100];
1099 [message.mapFixed64Fixed64 setValue:(i + 1) forKey:107 + i * 100];
1100 [message.mapSfixed32Sfixed32 setValue:(i + 1) forKey:108 + i * 100];
1101 [message.mapSfixed64Sfixed64 setValue:(i + 1) forKey:109 + i * 100];
1102 [message.mapInt32Float setValue:(i + 1) forKey:110 + i * 100];
1103 [message.mapInt32Double setValue:(i + 1) forKey:111 + i * 100];
1104 [message.mapBoolBool setValue:((i % 2) == 1) forKey:((i % 2) == 0)];
1105
1106 NSString *keyStr = [[NSString alloc] initWithFormat:@"%d", 112 + i * 100];
1107 NSString *dataStr = [[NSString alloc] initWithFormat:@"%d", i + 1];
1108 [message.mapStringString setObject:dataStr forKey:keyStr];
1109 [keyStr release];
1110 [dataStr release];
1111
1112 NSData *data = [[NSData alloc] initWithUint32_gpbtu:i + 1];
1113 [message.mapInt32Bytes setObject:data forKey:113 + i * 100];
1114 [data release];
1115
1116 [message.mapInt32Enum
1117 setValue:(i % 2) ? MapEnum_MapEnumBar : MapEnum_MapEnumBaz
1118 forKey:114 + i * 100];
1119
1120 ForeignMessage *subMsg = [[ForeignMessage alloc] init];
1121 subMsg.c = i + 1;
1122 [message.mapInt32ForeignMessage setObject:subMsg forKey:115 + i * 100];
1123 [subMsg release];
1124 }
1125 }
1126
1127 - (void)setAllTestPackedFields:(TestPackedTypes *)message {
1128 // Must match -setAllTestUnpackedFields:
1129 [message.packedInt32Array addValue:101];
1130 [message.packedInt64Array addValue:102];
1131 [message.packedUint32Array addValue:103];
1132 [message.packedUint64Array addValue:104];
1133 [message.packedSint32Array addValue:105];
1134 [message.packedSint64Array addValue:106];
1135 [message.packedFixed32Array addValue:107];
1136 [message.packedFixed64Array addValue:108];
1137 [message.packedSfixed32Array addValue:109];
1138 [message.packedSfixed64Array addValue:110];
1139 [message.packedFloatArray addValue:111.f];
1140 [message.packedDoubleArray addValue:112.];
1141 [message.packedBoolArray addValue:YES];
1142 [message.packedEnumArray addValue:ForeignEnum_ForeignBar];
1143
1144 [message.packedInt32Array addValue:201];
1145 [message.packedInt64Array addValue:302];
1146 [message.packedUint32Array addValue:203];
1147 [message.packedUint64Array addValue:204];
1148 [message.packedSint32Array addValue:205];
1149 [message.packedSint64Array addValue:206];
1150 [message.packedFixed32Array addValue:207];
1151 [message.packedFixed64Array addValue:208];
1152 [message.packedSfixed32Array addValue:209];
1153 [message.packedSfixed64Array addValue:210];
1154 [message.packedFloatArray addValue:211.f];
1155 [message.packedDoubleArray addValue:212.];
1156 [message.packedBoolArray addValue:NO];
1157 [message.packedEnumArray addValue:ForeignEnum_ForeignBaz];
1158 }
1159
1160 - (void)setAllTestUnpackedFields:(TestUnpackedTypes *)message {
1161 // Must match -setAllTestPackedFields:
1162 [message.unpackedInt32Array addValue:101];
1163 [message.unpackedInt64Array addValue:102];
1164 [message.unpackedUint32Array addValue:103];
1165 [message.unpackedUint64Array addValue:104];
1166 [message.unpackedSint32Array addValue:105];
1167 [message.unpackedSint64Array addValue:106];
1168 [message.unpackedFixed32Array addValue:107];
1169 [message.unpackedFixed64Array addValue:108];
1170 [message.unpackedSfixed32Array addValue:109];
1171 [message.unpackedSfixed64Array addValue:110];
1172 [message.unpackedFloatArray addValue:111.f];
1173 [message.unpackedDoubleArray addValue:112.];
1174 [message.unpackedBoolArray addValue:YES];
1175 [message.unpackedEnumArray addValue:ForeignEnum_ForeignBar];
1176
1177 [message.unpackedInt32Array addValue:201];
1178 [message.unpackedInt64Array addValue:302];
1179 [message.unpackedUint32Array addValue:203];
1180 [message.unpackedUint64Array addValue:204];
1181 [message.unpackedSint32Array addValue:205];
1182 [message.unpackedSint64Array addValue:206];
1183 [message.unpackedFixed32Array addValue:207];
1184 [message.unpackedFixed64Array addValue:208];
1185 [message.unpackedSfixed32Array addValue:209];
1186 [message.unpackedSfixed64Array addValue:210];
1187 [message.unpackedFloatArray addValue:211.f];
1188 [message.unpackedDoubleArray addValue:212.];
1189 [message.unpackedBoolArray addValue:NO];
1190 [message.unpackedEnumArray addValue:ForeignEnum_ForeignBaz];
1191 }
1192
1193 - (GPBExtensionRegistry *)extensionRegistry {
1194 return [UnittestRoot extensionRegistry];
1195 }
1196
1197 - (TestAllTypes *)allSetRepeatedCount:(uint32_t)count {
1198 TestAllTypes *message = [TestAllTypes message];
1199 [self setAllFields:message repeatedCount:count];
1200 return message;
1201 }
1202
1203 - (TestAllExtensions *)allExtensionsSetRepeatedCount:(uint32_t)count {
1204 TestAllExtensions *message = [TestAllExtensions message];
1205 [self setAllExtensions:message repeatedCount:count];
1206 return message;
1207 }
1208
1209 - (TestPackedTypes *)packedSetRepeatedCount:(uint32_t)count {
1210 TestPackedTypes *message = [TestPackedTypes message];
1211 [self setPackedFields:message repeatedCount:count];
1212 return message;
1213 }
1214
1215 - (TestPackedExtensions *)packedExtensionsSetRepeatedCount:(uint32_t)count {
1216 TestPackedExtensions *message = [TestPackedExtensions message];
1217 [self setPackedExtensions:message repeatedCount:count];
1218 return message;
1219 }
1220
1221 // -------------------------------------------------------------------
1222
1223 - (void)assertClear:(TestAllTypes *)message {
1224 // hasBlah() should initially be NO for all optional fields.
1225 XCTAssertFalse(message.hasOptionalInt32);
1226 XCTAssertFalse(message.hasOptionalInt64);
1227 XCTAssertFalse(message.hasOptionalUint32);
1228 XCTAssertFalse(message.hasOptionalUint64);
1229 XCTAssertFalse(message.hasOptionalSint32);
1230 XCTAssertFalse(message.hasOptionalSint64);
1231 XCTAssertFalse(message.hasOptionalFixed32);
1232 XCTAssertFalse(message.hasOptionalFixed64);
1233 XCTAssertFalse(message.hasOptionalSfixed32);
1234 XCTAssertFalse(message.hasOptionalSfixed64);
1235 XCTAssertFalse(message.hasOptionalFloat);
1236 XCTAssertFalse(message.hasOptionalDouble);
1237 XCTAssertFalse(message.hasOptionalBool);
1238 XCTAssertFalse(message.hasOptionalString);
1239 XCTAssertFalse(message.hasOptionalBytes);
1240
1241 XCTAssertFalse(message.hasOptionalGroup);
1242 XCTAssertFalse(message.hasOptionalNestedMessage);
1243 XCTAssertFalse(message.hasOptionalForeignMessage);
1244 XCTAssertFalse(message.hasOptionalImportMessage);
1245
1246 XCTAssertFalse(message.hasOptionalNestedEnum);
1247 XCTAssertFalse(message.hasOptionalForeignEnum);
1248 XCTAssertFalse(message.hasOptionalImportEnum);
1249
1250 XCTAssertFalse(message.hasOptionalStringPiece);
1251 XCTAssertFalse(message.hasOptionalCord);
1252
1253 // Optional fields without defaults are set to zero or something like it.
1254 XCTAssertEqual(0, message.optionalInt32);
1255 XCTAssertEqual(0LL, message.optionalInt64);
1256 XCTAssertEqual(0U, message.optionalUint32);
1257 XCTAssertEqual(0ULL, message.optionalUint64);
1258 XCTAssertEqual(0, message.optionalSint32);
1259 XCTAssertEqual(0LL, message.optionalSint64);
1260 XCTAssertEqual(0U, message.optionalFixed32);
1261 XCTAssertEqual(0ULL, message.optionalFixed64);
1262 XCTAssertEqual(0, message.optionalSfixed32);
1263 XCTAssertEqual(0LL, message.optionalSfixed64);
1264 XCTAssertEqual(0.0f, message.optionalFloat);
1265 XCTAssertEqual(0.0, message.optionalDouble);
1266 XCTAssertFalse(message.optionalBool);
1267 XCTAssertEqualObjects(message.optionalString, @"");
1268 XCTAssertEqualObjects(message.optionalBytes, GPBEmptyNSData());
1269
1270 // Embedded messages should also be clear.
1271 XCTAssertFalse(message.hasOptionalGroup);
1272 XCTAssertFalse(message.hasOptionalNestedMessage);
1273 XCTAssertFalse(message.hasOptionalForeignMessage);
1274 XCTAssertFalse(message.hasOptionalImportMessage);
1275
1276 // Enums without defaults are set to the first value in the enum.
1277 XCTAssertEqual(TestAllTypes_NestedEnum_Foo, message.optionalNestedEnum);
1278 XCTAssertEqual(ForeignEnum_ForeignFoo, message.optionalForeignEnum);
1279 XCTAssertEqual(ImportEnum_ImportFoo, message.optionalImportEnum);
1280
1281 XCTAssertEqualObjects(message.optionalStringPiece, @"");
1282 XCTAssertEqualObjects(message.optionalCord, @"");
1283
1284 // Repeated fields are empty.
1285
1286 XCTAssertEqual(0U, message.repeatedInt32Array.count);
1287 XCTAssertEqual(0U, message.repeatedInt64Array.count);
1288 XCTAssertEqual(0U, message.repeatedUint32Array.count);
1289 XCTAssertEqual(0U, message.repeatedUint64Array.count);
1290 XCTAssertEqual(0U, message.repeatedSint32Array.count);
1291 XCTAssertEqual(0U, message.repeatedSint64Array.count);
1292 XCTAssertEqual(0U, message.repeatedFixed32Array.count);
1293 XCTAssertEqual(0U, message.repeatedFixed64Array.count);
1294 XCTAssertEqual(0U, message.repeatedSfixed32Array.count);
1295 XCTAssertEqual(0U, message.repeatedSfixed64Array.count);
1296 XCTAssertEqual(0U, message.repeatedFloatArray.count);
1297 XCTAssertEqual(0U, message.repeatedDoubleArray.count);
1298 XCTAssertEqual(0U, message.repeatedBoolArray.count);
1299 XCTAssertEqual(0U, message.repeatedStringArray.count);
1300 XCTAssertEqual(0U, message.repeatedBytesArray.count);
1301
1302 XCTAssertEqual(0U, message.repeatedGroupArray.count);
1303 XCTAssertEqual(0U, message.repeatedNestedMessageArray.count);
1304 XCTAssertEqual(0U, message.repeatedForeignMessageArray.count);
1305 XCTAssertEqual(0U, message.repeatedImportMessageArray.count);
1306 XCTAssertEqual(0U, message.repeatedNestedEnumArray.count);
1307 XCTAssertEqual(0U, message.repeatedForeignEnumArray.count);
1308 XCTAssertEqual(0U, message.repeatedImportEnumArray.count);
1309
1310 XCTAssertEqual(0U, message.repeatedStringPieceArray.count);
1311 XCTAssertEqual(0U, message.repeatedCordArray.count);
1312
1313 XCTAssertEqual(0U, message.repeatedInt32Array_Count);
1314 XCTAssertEqual(0U, message.repeatedInt64Array_Count);
1315 XCTAssertEqual(0U, message.repeatedUint32Array_Count);
1316 XCTAssertEqual(0U, message.repeatedUint64Array_Count);
1317 XCTAssertEqual(0U, message.repeatedSint32Array_Count);
1318 XCTAssertEqual(0U, message.repeatedSint64Array_Count);
1319 XCTAssertEqual(0U, message.repeatedFixed32Array_Count);
1320 XCTAssertEqual(0U, message.repeatedFixed64Array_Count);
1321 XCTAssertEqual(0U, message.repeatedSfixed32Array_Count);
1322 XCTAssertEqual(0U, message.repeatedSfixed64Array_Count);
1323 XCTAssertEqual(0U, message.repeatedFloatArray_Count);
1324 XCTAssertEqual(0U, message.repeatedDoubleArray_Count);
1325 XCTAssertEqual(0U, message.repeatedBoolArray_Count);
1326 XCTAssertEqual(0U, message.repeatedStringArray_Count);
1327 XCTAssertEqual(0U, message.repeatedBytesArray_Count);
1328
1329 XCTAssertEqual(0U, message.repeatedGroupArray_Count);
1330 XCTAssertEqual(0U, message.repeatedNestedMessageArray_Count);
1331 XCTAssertEqual(0U, message.repeatedForeignMessageArray_Count);
1332 XCTAssertEqual(0U, message.repeatedImportMessageArray_Count);
1333 XCTAssertEqual(0U, message.repeatedNestedEnumArray_Count);
1334 XCTAssertEqual(0U, message.repeatedForeignEnumArray_Count);
1335 XCTAssertEqual(0U, message.repeatedImportEnumArray_Count);
1336
1337 XCTAssertEqual(0U, message.repeatedStringPieceArray_Count);
1338 XCTAssertEqual(0U, message.repeatedCordArray_Count);
1339
1340 // hasBlah() should also be NO for all default fields.
1341 XCTAssertFalse(message.hasDefaultInt32);
1342 XCTAssertFalse(message.hasDefaultInt64);
1343 XCTAssertFalse(message.hasDefaultUint32);
1344 XCTAssertFalse(message.hasDefaultUint64);
1345 XCTAssertFalse(message.hasDefaultSint32);
1346 XCTAssertFalse(message.hasDefaultSint64);
1347 XCTAssertFalse(message.hasDefaultFixed32);
1348 XCTAssertFalse(message.hasDefaultFixed64);
1349 XCTAssertFalse(message.hasDefaultSfixed32);
1350 XCTAssertFalse(message.hasDefaultSfixed64);
1351 XCTAssertFalse(message.hasDefaultFloat);
1352 XCTAssertFalse(message.hasDefaultDouble);
1353 XCTAssertFalse(message.hasDefaultBool);
1354 XCTAssertFalse(message.hasDefaultString);
1355 XCTAssertFalse(message.hasDefaultBytes);
1356
1357 XCTAssertFalse(message.hasDefaultNestedEnum);
1358 XCTAssertFalse(message.hasDefaultForeignEnum);
1359 XCTAssertFalse(message.hasDefaultImportEnum);
1360
1361 XCTAssertFalse(message.hasDefaultStringPiece);
1362 XCTAssertFalse(message.hasDefaultCord);
1363
1364 // Fields with defaults have their default values (duh).
1365 XCTAssertEqual(41, message.defaultInt32);
1366 XCTAssertEqual(42LL, message.defaultInt64);
1367 XCTAssertEqual(43U, message.defaultUint32);
1368 XCTAssertEqual(44ULL, message.defaultUint64);
1369 XCTAssertEqual(-45, message.defaultSint32);
1370 XCTAssertEqual(46LL, message.defaultSint64);
1371 XCTAssertEqual(47U, message.defaultFixed32);
1372 XCTAssertEqual(48ULL, message.defaultFixed64);
1373 XCTAssertEqual(49, message.defaultSfixed32);
1374 XCTAssertEqual(-50LL, message.defaultSfixed64);
1375 XCTAssertEqualWithAccuracy(51.5f, message.defaultFloat, 0.1);
1376 XCTAssertEqualWithAccuracy(52e3, message.defaultDouble, 0.1);
1377 XCTAssertTrue(message.defaultBool);
1378 XCTAssertEqualObjects(@"hello", message.defaultString);
1379 XCTAssertEqualObjects([NSData gpbtu_dataWithCString:"world"],
1380 message.defaultBytes);
1381
1382 XCTAssertEqual(TestAllTypes_NestedEnum_Bar, message.defaultNestedEnum);
1383 XCTAssertEqual(ForeignEnum_ForeignBar, message.defaultForeignEnum);
1384 XCTAssertEqual(ImportEnum_ImportBar, message.defaultImportEnum);
1385
1386 XCTAssertEqualObjects(@"abc", message.defaultStringPiece);
1387 XCTAssertEqualObjects(@"123", message.defaultCord);
1388 }
1389
1390 - (void)assertExtensionsClear:(TestAllExtensions *)message {
1391 // hasBlah() should initially be NO for all optional fields.
1392 XCTAssertFalse([message hasExtension:[UnittestRoot optionalInt32Extension]]);
1393 XCTAssertFalse([message hasExtension:[UnittestRoot optionalInt64Extension]]);
1394 XCTAssertFalse([message hasExtension:[UnittestRoot optionalUint32Extension]]);
1395 XCTAssertFalse([message hasExtension:[UnittestRoot optionalUint64Extension]]);
1396 XCTAssertFalse([message hasExtension:[UnittestRoot optionalSint32Extension]]);
1397 XCTAssertFalse([message hasExtension:[UnittestRoot optionalSint64Extension]]);
1398 XCTAssertFalse([message hasExtension:[UnittestRoot optionalFixed32Extension]]) ;
1399 XCTAssertFalse([message hasExtension:[UnittestRoot optionalFixed64Extension]]) ;
1400 XCTAssertFalse([message hasExtension:[UnittestRoot optionalSfixed32Extension]] );
1401 XCTAssertFalse([message hasExtension:[UnittestRoot optionalSfixed64Extension]] );
1402 XCTAssertFalse([message hasExtension:[UnittestRoot optionalFloatExtension]]);
1403 XCTAssertFalse([message hasExtension:[UnittestRoot optionalDoubleExtension]]);
1404 XCTAssertFalse([message hasExtension:[UnittestRoot optionalBoolExtension]]);
1405 XCTAssertFalse([message hasExtension:[UnittestRoot optionalStringExtension]]);
1406 XCTAssertFalse([message hasExtension:[UnittestRoot optionalBytesExtension]]);
1407
1408 XCTAssertFalse([message hasExtension:[UnittestRoot optionalGroupExtension]]);
1409 XCTAssertFalse([message hasExtension:[UnittestRoot optionalNestedMessageExtens ion]]);
1410 XCTAssertFalse([message hasExtension:[UnittestRoot optionalForeignMessageExten sion]]);
1411 XCTAssertFalse([message hasExtension:[UnittestRoot optionalImportMessageExtens ion]]);
1412
1413 XCTAssertFalse([message hasExtension:[UnittestRoot optionalNestedEnumExtension ]]);
1414 XCTAssertFalse([message hasExtension:[UnittestRoot optionalForeignEnumExtensio n]]);
1415 XCTAssertFalse([message hasExtension:[UnittestRoot optionalImportEnumExtension ]]);
1416
1417 XCTAssertFalse([message hasExtension:[UnittestRoot optionalStringPieceExtensio n]]);
1418 XCTAssertFalse([message hasExtension:[UnittestRoot optionalCordExtension]]);
1419
1420 // Optional fields without defaults are set to zero or something like it.
1421 XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalInt32Extension] ] intValue]);
1422 XCTAssertEqual(0LL,[[message getExtension:[UnittestRoot optionalInt64Extension ]] longLongValue]);
1423 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot optionalUint32Extensio n]] unsignedIntValue]);
1424 XCTAssertEqual(0ULL, [[message getExtension:[UnittestRoot optionalUint64Extens ion]] unsignedLongLongValue]);
1425 XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalSint32Extension ]] intValue]);
1426 XCTAssertEqual(0LL, [[message getExtension:[UnittestRoot optionalSint64Extensi on]] longLongValue]);
1427 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot optionalFixed32Extensi on]] unsignedIntValue]);
1428 XCTAssertEqual(0ULL, [[message getExtension:[UnittestRoot optionalFixed64Exten sion]] unsignedLongLongValue]);
1429 XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalSfixed32Extensi on]] intValue]);
1430 XCTAssertEqual(0LL, [[message getExtension:[UnittestRoot optionalSfixed64Exten sion]] longLongValue]);
1431 XCTAssertEqualWithAccuracy(0.0f, [[message getExtension:[UnittestRoot optional FloatExtension]] floatValue], 0.01);
1432 XCTAssertEqualWithAccuracy(0.0, [[message getExtension:[UnittestRoot optionalD oubleExtension]] doubleValue], 0.01);
1433 XCTAssertFalse([[message getExtension:[UnittestRoot optionalBoolExtension]] bo olValue]);
1434 XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalStringE xtension]]);
1435 XCTAssertEqualObjects(GPBEmptyNSData(), [message getExtension:[UnittestRoot op tionalBytesExtension]]);
1436
1437 // Embedded messages should also be clear.
1438
1439 XCTAssertFalse([[message getExtension:[UnittestRoot optionalGroupExtension]] h asA]);
1440 XCTAssertFalse([[message getExtension:[UnittestRoot optionalNestedMessageExten sion]] hasBb]);
1441 XCTAssertFalse([[message getExtension:[UnittestRoot optionalForeignMessageExte nsion]] hasC]);
1442 XCTAssertFalse([[message getExtension:[UnittestRoot optionalImportMessageExten sion]] hasD]);
1443
1444 XCTAssertEqual(0, [(TestAllTypes_OptionalGroup*)[message getExtension:[Unittes tRoot optionalGroupExtension]] a]);
1445 XCTAssertEqual(0, [(TestAllTypes_NestedMessage*)[message getExtension:[Unittes tRoot optionalNestedMessageExtension]] bb]);
1446 XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalForeignMessageE xtension]] c]);
1447 XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalImportMessageEx tension]] d]);
1448
1449 // Enums without defaults are set to the first value in the enum.
1450 XCTAssertEqual(TestAllTypes_NestedEnum_Foo,
1451 [[message getExtension:[UnittestRoot optionalNestedEnumExtension] ] intValue]);
1452 XCTAssertEqual(ForeignEnum_ForeignFoo,
1453 [[message getExtension:[UnittestRoot optionalForeignEnumExtension ]] intValue]);
1454 XCTAssertEqual(ImportEnum_ImportFoo,
1455 [[message getExtension:[UnittestRoot optionalImportEnumExtension] ] intValue]);
1456
1457 XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalStringP ieceExtension]]);
1458 XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalCordExt ension]]);
1459
1460 // Repeated fields are empty.
1461 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedInt32Extension ]] count]);
1462 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedInt64Extension ]] count]);
1463 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedUint32Extensio n]] count]);
1464 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedUint64Extensio n]] count]);
1465 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSint32Extensio n]] count]);
1466 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSint64Extensio n]] count]);
1467 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFixed32Extensi on]] count]);
1468 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFixed64Extensi on]] count]);
1469 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSfixed32Extens ion]] count]);
1470 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSfixed64Extens ion]] count]);
1471 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFloatExtension ]] count]);
1472 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedDoubleExtensio n]] count]);
1473 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedBoolExtension] ] count]);
1474 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedStringExtensio n]] count]);
1475 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedBytesExtension ]] count]);
1476
1477 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedGroupExtension ]] count]);
1478 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedNestedMessageE xtension]] count]);
1479 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedForeignMessage Extension]] count]);
1480 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedImportMessageE xtension]] count]);
1481 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedNestedEnumExte nsion]] count]);
1482 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedForeignEnumExt ension]] count]);
1483 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedImportEnumExte nsion]] count]);
1484
1485 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedStringPieceExt ension]] count]);
1486 XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedCordExtension] ] count]);
1487
1488 // hasBlah() should also be NO for all default fields.
1489 XCTAssertFalse([message hasExtension:[UnittestRoot defaultInt32Extension]]);
1490 XCTAssertFalse([message hasExtension:[UnittestRoot defaultInt64Extension]]);
1491 XCTAssertFalse([message hasExtension:[UnittestRoot defaultUint32Extension]]);
1492 XCTAssertFalse([message hasExtension:[UnittestRoot defaultUint64Extension]]);
1493 XCTAssertFalse([message hasExtension:[UnittestRoot defaultSint32Extension]]);
1494 XCTAssertFalse([message hasExtension:[UnittestRoot defaultSint64Extension]]);
1495 XCTAssertFalse([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
1496 XCTAssertFalse([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
1497 XCTAssertFalse([message hasExtension:[UnittestRoot defaultSfixed32Extension]]) ;
1498 XCTAssertFalse([message hasExtension:[UnittestRoot defaultSfixed64Extension]]) ;
1499 XCTAssertFalse([message hasExtension:[UnittestRoot defaultFloatExtension]]);
1500 XCTAssertFalse([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
1501 XCTAssertFalse([message hasExtension:[UnittestRoot defaultBoolExtension]]);
1502 XCTAssertFalse([message hasExtension:[UnittestRoot defaultStringExtension]]);
1503 XCTAssertFalse([message hasExtension:[UnittestRoot defaultBytesExtension]]);
1504
1505 XCTAssertFalse([message hasExtension:[UnittestRoot defaultNestedEnumExtension] ]);
1506 XCTAssertFalse([message hasExtension:[UnittestRoot defaultForeignEnumExtension ]]);
1507 XCTAssertFalse([message hasExtension:[UnittestRoot defaultImportEnumExtension] ]);
1508
1509 XCTAssertFalse([message hasExtension:[UnittestRoot defaultStringPieceExtension ]]);
1510 XCTAssertFalse([message hasExtension:[UnittestRoot defaultCordExtension]]);
1511
1512 // Fields with defaults have their default values (duh).
1513 XCTAssertEqual( 41, [[message getExtension:[UnittestRoot defaultInt32Extension ]] intValue]);
1514 XCTAssertEqual( 42LL, [[message getExtension:[UnittestRoot defaultInt64Extensi on]] longLongValue]);
1515 XCTAssertEqual( 43U, [[message getExtension:[UnittestRoot defaultUint32Extensi on]] unsignedIntValue]);
1516 XCTAssertEqual( 44ULL, [[message getExtension:[UnittestRoot defaultUint64Exten sion]] unsignedLongLongValue]);
1517 XCTAssertEqual(-45, [[message getExtension:[UnittestRoot defaultSint32Extensio n]] intValue]);
1518 XCTAssertEqual( 46LL, [[message getExtension:[UnittestRoot defaultSint64Extens ion]] longLongValue]);
1519 XCTAssertEqual( 47, [[message getExtension:[UnittestRoot defaultFixed32Extensi on]] intValue]);
1520 XCTAssertEqual( 48ULL, [[message getExtension:[UnittestRoot defaultFixed64Exte nsion]] unsignedLongLongValue]);
1521 XCTAssertEqual( 49, [[message getExtension:[UnittestRoot defaultSfixed32Extens ion]] intValue]);
1522 XCTAssertEqual(-50LL, [[message getExtension:[UnittestRoot defaultSfixed64Exte nsion]] longLongValue]);
1523 XCTAssertEqualWithAccuracy( 51.5f, [[message getExtension:[UnittestRoot defaul tFloatExtension]] floatValue], 0.01);
1524 XCTAssertEqualWithAccuracy( 52e3, [[message getExtension:[UnittestRoot default DoubleExtension]] doubleValue], 0.01);
1525 XCTAssertTrue([[message getExtension:[UnittestRoot defaultBoolExtension]] bool Value]);
1526 XCTAssertEqualObjects(@"hello", [message getExtension:[UnittestRoot defaultStr ingExtension]]);
1527 XCTAssertEqualObjects([NSData gpbtu_dataWithCString:"world"], [message getExte nsion:[UnittestRoot defaultBytesExtension]]);
1528
1529 XCTAssertEqual(TestAllTypes_NestedEnum_Bar,
1530 [[message getExtension:[UnittestRoot defaultNestedEnumExtension]] intValue]);
1531 XCTAssertEqual(ForeignEnum_ForeignBar,
1532 [[message getExtension:[UnittestRoot defaultForeignEnumExtension] ] intValue]);
1533 XCTAssertEqual(ImportEnum_ImportBar,
1534 [[message getExtension:[UnittestRoot defaultImportEnumExtension]] intValue]);
1535
1536 XCTAssertEqualObjects(@"abc", [message getExtension:[UnittestRoot defaultStrin gPieceExtension]]);
1537 XCTAssertEqualObjects(@"123", [message getExtension:[UnittestRoot defaultCordE xtension]]);
1538 }
1539
1540 - (void)modifyRepeatedFields:(TestAllTypes *)message {
1541 [message.repeatedInt32Array replaceValueAtIndex:1 withValue:501];
1542 [message.repeatedInt64Array replaceValueAtIndex:1 withValue:502];
1543 [message.repeatedUint32Array replaceValueAtIndex:1 withValue:503];
1544 [message.repeatedUint64Array replaceValueAtIndex:1 withValue:504];
1545 [message.repeatedSint32Array replaceValueAtIndex:1 withValue:505];
1546 [message.repeatedSint64Array replaceValueAtIndex:1 withValue:506];
1547 [message.repeatedFixed32Array replaceValueAtIndex:1 withValue:507];
1548 [message.repeatedFixed64Array replaceValueAtIndex:1 withValue:508];
1549 [message.repeatedSfixed32Array replaceValueAtIndex:1 withValue:509];
1550 [message.repeatedSfixed64Array replaceValueAtIndex:1 withValue:510];
1551 [message.repeatedFloatArray replaceValueAtIndex:1 withValue:511];
1552 [message.repeatedDoubleArray replaceValueAtIndex:1 withValue:512];
1553 [message.repeatedBoolArray replaceValueAtIndex:1 withValue:YES];
1554 [message.repeatedStringArray replaceObjectAtIndex:1 withObject:@"515"];
1555
1556 NSData *data = [[NSData alloc] initWithUint32_gpbtu:516];
1557 [message.repeatedBytesArray replaceObjectAtIndex:1 withObject:data];
1558 [data release];
1559
1560 TestAllTypes_RepeatedGroup *testAll =
1561 [[TestAllTypes_RepeatedGroup alloc] init];
1562 [testAll setA:517];
1563 [message.repeatedGroupArray replaceObjectAtIndex:1 withObject:testAll];
1564 [testAll release];
1565
1566 TestAllTypes_NestedMessage *nestedMessage =
1567 [[TestAllTypes_NestedMessage alloc] init];
1568 [nestedMessage setBb:518];
1569 [message.repeatedNestedMessageArray replaceObjectAtIndex:1
1570 withObject:nestedMessage];
1571 [nestedMessage release];
1572
1573 ForeignMessage *foreignMessage = [[ForeignMessage alloc] init];
1574 [foreignMessage setC:519];
1575 [message.repeatedForeignMessageArray replaceObjectAtIndex:1
1576 withObject:foreignMessage];
1577 [foreignMessage release];
1578
1579 ImportMessage *importMessage = [[ImportMessage alloc] init];
1580 [importMessage setD:520];
1581 [message.repeatedImportMessageArray replaceObjectAtIndex:1
1582 withObject:importMessage];
1583 [importMessage release];
1584
1585 [message.repeatedNestedEnumArray replaceValueAtIndex:1 withValue:TestAllTypes_ NestedEnum_Foo];
1586 [message.repeatedForeignEnumArray replaceValueAtIndex:1 withValue:ForeignEnum_ ForeignFoo];
1587 [message.repeatedImportEnumArray replaceValueAtIndex:1 withValue:ImportEnum_Im portFoo];
1588
1589 [message.repeatedStringPieceArray replaceObjectAtIndex:1 withObject:@"524"];
1590 [message.repeatedCordArray replaceObjectAtIndex:1 withObject:@"525"];
1591 }
1592
1593 - (void)assertRepeatedFieldsModified:(TestAllTypes *)message
1594 repeatedCount:(uint32_t)count {
1595 // ModifyRepeatedFields only sets the second repeated element of each
1596 // field. In addition to verifying this, we also verify that the first
1597 // element and size were *not* modified.
1598
1599 XCTAssertEqual(count, message.repeatedInt32Array.count);
1600 XCTAssertEqual(count, message.repeatedInt64Array.count);
1601 XCTAssertEqual(count, message.repeatedUint32Array.count);
1602 XCTAssertEqual(count, message.repeatedUint64Array.count);
1603 XCTAssertEqual(count, message.repeatedSint32Array.count);
1604 XCTAssertEqual(count, message.repeatedSint64Array.count);
1605 XCTAssertEqual(count, message.repeatedFixed32Array.count);
1606 XCTAssertEqual(count, message.repeatedFixed64Array.count);
1607 XCTAssertEqual(count, message.repeatedSfixed32Array.count);
1608 XCTAssertEqual(count, message.repeatedSfixed64Array.count);
1609 XCTAssertEqual(count, message.repeatedFloatArray.count);
1610 XCTAssertEqual(count, message.repeatedDoubleArray.count);
1611 XCTAssertEqual(count, message.repeatedBoolArray.count);
1612 XCTAssertEqual(count, message.repeatedStringArray.count);
1613 XCTAssertEqual(count, message.repeatedBytesArray.count);
1614
1615 XCTAssertEqual(count, message.repeatedGroupArray.count);
1616 XCTAssertEqual(count, message.repeatedNestedMessageArray.count);
1617 XCTAssertEqual(count, message.repeatedForeignMessageArray.count);
1618 XCTAssertEqual(count, message.repeatedImportMessageArray.count);
1619 XCTAssertEqual(count, message.repeatedNestedEnumArray.count);
1620 XCTAssertEqual(count, message.repeatedForeignEnumArray.count);
1621 XCTAssertEqual(count, message.repeatedImportEnumArray.count);
1622
1623 XCTAssertEqual(count, message.repeatedStringPieceArray.count);
1624 XCTAssertEqual(count, message.repeatedCordArray.count);
1625
1626 XCTAssertEqual(count, message.repeatedInt32Array_Count);
1627 XCTAssertEqual(count, message.repeatedInt64Array_Count);
1628 XCTAssertEqual(count, message.repeatedUint32Array_Count);
1629 XCTAssertEqual(count, message.repeatedUint64Array_Count);
1630 XCTAssertEqual(count, message.repeatedSint32Array_Count);
1631 XCTAssertEqual(count, message.repeatedSint64Array_Count);
1632 XCTAssertEqual(count, message.repeatedFixed32Array_Count);
1633 XCTAssertEqual(count, message.repeatedFixed64Array_Count);
1634 XCTAssertEqual(count, message.repeatedSfixed32Array_Count);
1635 XCTAssertEqual(count, message.repeatedSfixed64Array_Count);
1636 XCTAssertEqual(count, message.repeatedFloatArray_Count);
1637 XCTAssertEqual(count, message.repeatedDoubleArray_Count);
1638 XCTAssertEqual(count, message.repeatedBoolArray_Count);
1639 XCTAssertEqual(count, message.repeatedStringArray_Count);
1640 XCTAssertEqual(count, message.repeatedBytesArray_Count);
1641
1642 XCTAssertEqual(count, message.repeatedGroupArray_Count);
1643 XCTAssertEqual(count, message.repeatedNestedMessageArray_Count);
1644 XCTAssertEqual(count, message.repeatedForeignMessageArray_Count);
1645 XCTAssertEqual(count, message.repeatedImportMessageArray_Count);
1646 XCTAssertEqual(count, message.repeatedNestedEnumArray_Count);
1647 XCTAssertEqual(count, message.repeatedForeignEnumArray_Count);
1648 XCTAssertEqual(count, message.repeatedImportEnumArray_Count);
1649
1650 XCTAssertEqual(count, message.repeatedStringPieceArray_Count);
1651 XCTAssertEqual(count, message.repeatedCordArray_Count);
1652
1653 XCTAssertEqual(201, [message.repeatedInt32Array valueAtIndex:0]);
1654 XCTAssertEqual(202LL, [message.repeatedInt64Array valueAtIndex:0]);
1655 XCTAssertEqual(203U, [message.repeatedUint32Array valueAtIndex:0]);
1656 XCTAssertEqual(204ULL, [message.repeatedUint64Array valueAtIndex:0]);
1657 XCTAssertEqual(205, [message.repeatedSint32Array valueAtIndex:0]);
1658 XCTAssertEqual(206LL, [message.repeatedSint64Array valueAtIndex:0]);
1659 XCTAssertEqual(207U, [message.repeatedFixed32Array valueAtIndex:0]);
1660 XCTAssertEqual(208ULL, [message.repeatedFixed64Array valueAtIndex:0]);
1661 XCTAssertEqual(209, [message.repeatedSfixed32Array valueAtIndex:0]);
1662 XCTAssertEqual(210LL, [message.repeatedSfixed64Array valueAtIndex:0]);
1663 XCTAssertEqualWithAccuracy(211.0f, [message.repeatedFloatArray valueAtIndex:0] , 0.01);
1664 XCTAssertEqualWithAccuracy(212.0, [message.repeatedDoubleArray valueAtIndex:0] , 0.01);
1665 XCTAssertFalse([message.repeatedBoolArray valueAtIndex:0]);
1666 XCTAssertEqualObjects(@"215", message.repeatedStringArray[0]);
1667 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:216],
1668 message.repeatedBytesArray[0]);
1669
1670 XCTAssertEqual(217, ((TestAllTypes_RepeatedGroup*)message.repeatedGroupArray[0 ]).a);
1671 XCTAssertEqual(218, ((TestAllTypes_NestedMessage*)message.repeatedNestedMessag eArray[0]).bb);
1672 XCTAssertEqual(219, ((ForeignMessage*)message.repeatedForeignMessageArray[0]). c);
1673 XCTAssertEqual(220, ((ImportMessage*)message.repeatedImportMessageArray[0]).d) ;
1674
1675 XCTAssertEqual(TestAllTypes_NestedEnum_Baz, [message.repeatedNestedEnumArray v alueAtIndex:0]);
1676 XCTAssertEqual(ForeignEnum_ForeignBaz, [message.repeatedForeignEnumArray value AtIndex:0]);
1677 XCTAssertEqual(ImportEnum_ImportBaz, [message.repeatedImportEnumArray valueAtI ndex:0]);
1678
1679 XCTAssertEqualObjects(@"224", message.repeatedStringPieceArray[0]);
1680 XCTAssertEqualObjects(@"225", message.repeatedCordArray[0]);
1681
1682 // Actually verify the second (modified) elements now.
1683 XCTAssertEqual(501, [message.repeatedInt32Array valueAtIndex:1]);
1684 XCTAssertEqual(502LL, [message.repeatedInt64Array valueAtIndex:1]);
1685 XCTAssertEqual(503U, [message.repeatedUint32Array valueAtIndex:1]);
1686 XCTAssertEqual(504ULL, [message.repeatedUint64Array valueAtIndex:1]);
1687 XCTAssertEqual(505, [message.repeatedSint32Array valueAtIndex:1]);
1688 XCTAssertEqual(506LL, [message.repeatedSint64Array valueAtIndex:1]);
1689 XCTAssertEqual(507U, [message.repeatedFixed32Array valueAtIndex:1]);
1690 XCTAssertEqual(508ULL, [message.repeatedFixed64Array valueAtIndex:1]);
1691 XCTAssertEqual(509, [message.repeatedSfixed32Array valueAtIndex:1]);
1692 XCTAssertEqual(510LL, [message.repeatedSfixed64Array valueAtIndex:1]);
1693 XCTAssertEqualWithAccuracy(511.0f, [message.repeatedFloatArray valueAtIndex:1] , 0.01);
1694 XCTAssertEqualWithAccuracy(512.0, [message.repeatedDoubleArray valueAtIndex:1] , 0.01);
1695 XCTAssertTrue([message.repeatedBoolArray valueAtIndex:1]);
1696 XCTAssertEqualObjects(@"515", message.repeatedStringArray[1]);
1697 XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:516],
1698 message.repeatedBytesArray[1]);
1699
1700 XCTAssertEqual(517, ((TestAllTypes_RepeatedGroup*)message.repeatedGroupArray[1 ]).a);
1701 XCTAssertEqual(518, ((TestAllTypes_NestedMessage*)message.repeatedNestedMessag eArray[1]).bb);
1702 XCTAssertEqual(519, ((ForeignMessage*)message.repeatedForeignMessageArray[1]). c);
1703 XCTAssertEqual(520, ((ImportMessage*)message.repeatedImportMessageArray[1]).d) ;
1704
1705 XCTAssertEqual(TestAllTypes_NestedEnum_Foo, [message.repeatedNestedEnumArray v alueAtIndex:1]);
1706 XCTAssertEqual(ForeignEnum_ForeignFoo, [message.repeatedForeignEnumArray value AtIndex:1]);
1707 XCTAssertEqual(ImportEnum_ImportFoo, [message.repeatedImportEnumArray valueAtI ndex:1]);
1708
1709 XCTAssertEqualObjects(@"524", message.repeatedStringPieceArray[1]);
1710 XCTAssertEqualObjects(@"525", message.repeatedCordArray[1]);
1711 }
1712
1713 - (void)setPackedFields:(TestPackedTypes *)message
1714 repeatedCount:(uint32_t)count {
1715 // Must match -setUnpackedFields:repeatedCount:
1716 // Must match -setPackedExtensions:repeatedCount:
1717 // Must match -setUnpackedExtensions:repeatedCount:
1718 for (uint32_t i = 0; i < count; ++i) {
1719 [message.packedInt32Array addValue:601 + i * 100];
1720 }
1721 for (uint32_t i = 0; i < count; ++i) {
1722 [message.packedInt64Array addValue:602 + i * 100];
1723 }
1724 for (uint32_t i = 0; i < count; ++i) {
1725 [message.packedUint32Array addValue:603 + i * 100];
1726 }
1727 for (uint32_t i = 0; i < count; ++i) {
1728 [message.packedUint64Array addValue:604 + i * 100];
1729 }
1730 for (uint32_t i = 0; i < count; ++i) {
1731 [message.packedSint32Array addValue:605 + i * 100];
1732 }
1733 for (uint32_t i = 0; i < count; ++i) {
1734 [message.packedSint64Array addValue:606 + i * 100];
1735 }
1736 for (uint32_t i = 0; i < count; ++i) {
1737 [message.packedFixed32Array addValue:607 + i * 100];
1738 }
1739 for (uint32_t i = 0; i < count; ++i) {
1740 [message.packedFixed64Array addValue:608 + i * 100];
1741 }
1742 for (uint32_t i = 0; i < count; ++i) {
1743 [message.packedSfixed32Array addValue:609 + i * 100];
1744 }
1745 for (uint32_t i = 0; i < count; ++i) {
1746 [message.packedSfixed64Array addValue:610 + i * 100];
1747 }
1748 for (uint32_t i = 0; i < count; ++i) {
1749 [message.packedFloatArray addValue:611 + i * 100];
1750 }
1751 for (uint32_t i = 0; i < count; ++i) {
1752 [message.packedDoubleArray addValue:612 + i * 100];
1753 }
1754 for (uint32_t i = 0; i < count; ++i) {
1755 [message.packedBoolArray addValue:(i % 2) ? YES : NO];
1756 }
1757 for (uint32_t i = 0; i < count; ++i) {
1758 [message.packedEnumArray
1759 addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
1760 }
1761 }
1762
1763 - (void)setUnpackedFields:(TestUnpackedTypes *)message
1764 repeatedCount:(uint32_t)count {
1765 // Must match -setPackedFields:repeatedCount:
1766 // Must match -setPackedExtensions:repeatedCount:
1767 // Must match -setUnpackedExtensions:repeatedCount:
1768 for (uint32_t i = 0; i < count; ++i) {
1769 [message.unpackedInt32Array addValue:601 + i * 100];
1770 }
1771 for (uint32_t i = 0; i < count; ++i) {
1772 [message.unpackedInt64Array addValue:602 + i * 100];
1773 }
1774 for (uint32_t i = 0; i < count; ++i) {
1775 [message.unpackedUint32Array addValue:603 + i * 100];
1776 }
1777 for (uint32_t i = 0; i < count; ++i) {
1778 [message.unpackedUint64Array addValue:604 + i * 100];
1779 }
1780 for (uint32_t i = 0; i < count; ++i) {
1781 [message.unpackedSint32Array addValue:605 + i * 100];
1782 }
1783 for (uint32_t i = 0; i < count; ++i) {
1784 [message.unpackedSint64Array addValue:606 + i * 100];
1785 }
1786 for (uint32_t i = 0; i < count; ++i) {
1787 [message.unpackedFixed32Array addValue:607 + i * 100];
1788 }
1789 for (uint32_t i = 0; i < count; ++i) {
1790 [message.unpackedFixed64Array addValue:608 + i * 100];
1791 }
1792 for (uint32_t i = 0; i < count; ++i) {
1793 [message.unpackedSfixed32Array addValue:609 + i * 100];
1794 }
1795 for (uint32_t i = 0; i < count; ++i) {
1796 [message.unpackedSfixed64Array addValue:610 + i * 100];
1797 }
1798 for (uint32_t i = 0; i < count; ++i) {
1799 [message.unpackedFloatArray addValue:611 + i * 100];
1800 }
1801 for (uint32_t i = 0; i < count; ++i) {
1802 [message.unpackedDoubleArray addValue:612 + i * 100];
1803 }
1804 for (uint32_t i = 0; i < count; ++i) {
1805 [message.unpackedBoolArray addValue:(i % 2) ? YES : NO];
1806 }
1807 for (uint32_t i = 0; i < count; ++i) {
1808 [message.unpackedEnumArray
1809 addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
1810 }
1811 }
1812
1813 - (void)assertPackedFieldsSet:(TestPackedTypes *)message
1814 repeatedCount:(uint32_t)count {
1815 XCTAssertEqual(count, message.packedInt32Array.count);
1816 XCTAssertEqual(count, message.packedInt64Array.count);
1817 XCTAssertEqual(count, message.packedUint32Array.count);
1818 XCTAssertEqual(count, message.packedUint64Array.count);
1819 XCTAssertEqual(count, message.packedSint32Array.count);
1820 XCTAssertEqual(count, message.packedSint64Array.count);
1821 XCTAssertEqual(count, message.packedFixed32Array.count);
1822 XCTAssertEqual(count, message.packedFixed64Array.count);
1823 XCTAssertEqual(count, message.packedSfixed32Array.count);
1824 XCTAssertEqual(count, message.packedSfixed64Array.count);
1825 XCTAssertEqual(count, message.packedFloatArray.count);
1826 XCTAssertEqual(count, message.packedDoubleArray.count);
1827 XCTAssertEqual(count, message.packedBoolArray.count);
1828 XCTAssertEqual(count, message.packedEnumArray.count);
1829 for (uint32_t i = 0; i < count; ++i) {
1830 XCTAssertEqual((int)(601 + i * 100),
1831 [message.packedInt32Array valueAtIndex:i]);
1832 XCTAssertEqual(602 + i * 100, [message.packedInt64Array valueAtIndex:i]);
1833 XCTAssertEqual(603 + i * 100, [message.packedUint32Array valueAtIndex:i]);
1834 XCTAssertEqual(604 + i * 100, [message.packedUint64Array valueAtIndex:i]);
1835 XCTAssertEqual((int)(605 + i * 100),
1836 [message.packedSint32Array valueAtIndex:i]);
1837 XCTAssertEqual(606 + i * 100, [message.packedSint64Array valueAtIndex:i]);
1838 XCTAssertEqual(607 + i * 100, [message.packedFixed32Array valueAtIndex:i]);
1839 XCTAssertEqual(608 + i * 100, [message.packedFixed64Array valueAtIndex:i]);
1840 XCTAssertEqual((int)(609 + i * 100),
1841 [message.packedSfixed32Array valueAtIndex:i]);
1842 XCTAssertEqual(610 + i * 100, [message.packedSfixed64Array valueAtIndex:i]);
1843 XCTAssertEqualWithAccuracy(611 + i * 100,
1844 [message.packedFloatArray valueAtIndex:i], 0.01);
1845 XCTAssertEqualWithAccuracy(
1846 612 + i * 100, [message.packedDoubleArray valueAtIndex:i], 0.01);
1847 XCTAssertEqual((i % 2) ? YES : NO,
1848 [message.packedBoolArray valueAtIndex:i]);
1849 XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz,
1850 [message.packedEnumArray valueAtIndex:i]);
1851 }
1852 }
1853
1854 - (void)setPackedExtensions:(TestPackedExtensions *)message
1855 repeatedCount:(uint32_t)count {
1856 // Must match -setPackedFields:repeatedCount:
1857 // Must match -setUnpackedFields:repeatedCount:
1858 // Must match -setUnpackedExtensions:repeatedCount:
1859 for (uint32_t i = 0; i < count; i++) {
1860 [message addExtension:[UnittestRoot packedInt32Extension]
1861 value:@(601 + i * 100)];
1862 [message addExtension:[UnittestRoot packedInt64Extension]
1863 value:@(602 + i * 100)];
1864 [message addExtension:[UnittestRoot packedUint32Extension]
1865 value:@(603 + i * 100)];
1866 [message addExtension:[UnittestRoot packedUint64Extension]
1867 value:@(604 + i * 100)];
1868 [message addExtension:[UnittestRoot packedSint32Extension]
1869 value:@(605 + i * 100)];
1870 [message addExtension:[UnittestRoot packedSint64Extension]
1871 value:@(606 + i * 100)];
1872 [message addExtension:[UnittestRoot packedFixed32Extension]
1873 value:@(607 + i * 100)];
1874 [message addExtension:[UnittestRoot packedFixed64Extension]
1875 value:@(608 + i * 100)];
1876 [message addExtension:[UnittestRoot packedSfixed32Extension]
1877 value:@(609 + i * 100)];
1878 [message addExtension:[UnittestRoot packedSfixed64Extension]
1879 value:@(610 + i * 100)];
1880 [message addExtension:[UnittestRoot packedFloatExtension]
1881 value:@(611 + i * 100)];
1882 [message addExtension:[UnittestRoot packedDoubleExtension]
1883 value:@(612 + i * 100)];
1884 [message addExtension:[UnittestRoot packedBoolExtension]
1885 value:@((i % 2) ? YES : NO)];
1886 [message addExtension:[UnittestRoot packedEnumExtension]
1887 value:@((i % 2) ? ForeignEnum_ForeignBar
1888 : ForeignEnum_ForeignBaz)];
1889 }
1890 }
1891
1892 - (void)setUnpackedExtensions:(TestUnpackedExtensions *)message
1893 repeatedCount:(uint32_t)count {
1894 // Must match -setPackedFields:repeatedCount:
1895 // Must match -setUnpackedFields:repeatedCount:
1896 // Must match -setPackedExtensions:repeatedCount:
1897 for (uint32_t i = 0; i < count; i++) {
1898 [message addExtension:[UnittestRoot unpackedInt32Extension]
1899 value:@(601 + i * 100)];
1900 [message addExtension:[UnittestRoot unpackedInt64Extension]
1901 value:@(602 + i * 100)];
1902 [message addExtension:[UnittestRoot unpackedUint32Extension]
1903 value:@(603 + i * 100)];
1904 [message addExtension:[UnittestRoot unpackedUint64Extension]
1905 value:@(604 + i * 100)];
1906 [message addExtension:[UnittestRoot unpackedSint32Extension]
1907 value:@(605 + i * 100)];
1908 [message addExtension:[UnittestRoot unpackedSint64Extension]
1909 value:@(606 + i * 100)];
1910 [message addExtension:[UnittestRoot unpackedFixed32Extension]
1911 value:@(607 + i * 100)];
1912 [message addExtension:[UnittestRoot unpackedFixed64Extension]
1913 value:@(608 + i * 100)];
1914 [message addExtension:[UnittestRoot unpackedSfixed32Extension]
1915 value:@(609 + i * 100)];
1916 [message addExtension:[UnittestRoot unpackedSfixed64Extension]
1917 value:@(610 + i * 100)];
1918 [message addExtension:[UnittestRoot unpackedFloatExtension]
1919 value:@(611 + i * 100)];
1920 [message addExtension:[UnittestRoot unpackedDoubleExtension]
1921 value:@(612 + i * 100)];
1922 [message addExtension:[UnittestRoot unpackedBoolExtension]
1923 value:@((i % 2) ? YES : NO)];
1924 [message addExtension:[UnittestRoot unpackedEnumExtension]
1925 value:@((i % 2) ? ForeignEnum_ForeignBar
1926 : ForeignEnum_ForeignBaz)];
1927 }
1928 }
1929
1930 - (void)assertPackedExtensionsSet:(TestPackedExtensions *)message
1931 repeatedCount:(uint32_t)count{
1932 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedInt32Extensio n]] count]);
1933 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedInt64Extensio n]] count]);
1934 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedUint32Extensi on]] count]);
1935 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedUint64Extensi on]] count]);
1936 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSint32Extensi on]] count]);
1937 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSint64Extensi on]] count]);
1938 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFixed32Extens ion]] count]);
1939 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFixed64Extens ion]] count]);
1940 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSfixed32Exten sion]] count]);
1941 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSfixed64Exten sion]] count]);
1942 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFloatExtensio n]] count]);
1943 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedDoubleExtensi on]] count]);
1944 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedBoolExtension ]] count]);
1945 XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedEnumExtension ]] count]);
1946
1947 for (uint32_t i = 0; i < count; ++i) {
1948 id extension = [message getExtension:[UnittestRoot packedInt32Extension]];
1949 XCTAssertEqual((int)(601 + i * 100), [extension[i] intValue]);
1950 extension = [message getExtension:[UnittestRoot packedInt64Extension]];
1951 XCTAssertEqual(602 + i * 100, [extension[i] longLongValue]);
1952 extension = [message getExtension:[UnittestRoot packedUint32Extension]];
1953 XCTAssertEqual(603 + i * 100, [extension[i] unsignedIntValue]);
1954 extension = [message getExtension:[UnittestRoot packedUint64Extension]];
1955 XCTAssertEqual(604 + i * 100, [extension[i] unsignedLongLongValue]);
1956 extension = [message getExtension:[UnittestRoot packedSint32Extension]];
1957 XCTAssertEqual((int)(605 + i * 100), [extension[i] intValue]);
1958 extension = [message getExtension:[UnittestRoot packedSint64Extension]];
1959 XCTAssertEqual(606 + i * 100, [extension[i] longLongValue]);
1960 extension = [message getExtension:[UnittestRoot packedFixed32Extension]];
1961 XCTAssertEqual(607 + i * 100, [extension[i] unsignedIntValue]);
1962 extension = [message getExtension:[UnittestRoot packedFixed64Extension]];
1963 XCTAssertEqual(608 + i * 100, [extension[i] unsignedLongLongValue]);
1964 extension = [message getExtension:[UnittestRoot packedSfixed32Extension]];
1965 XCTAssertEqual((int)(609 + i * 100), [extension[i] intValue]);
1966 extension = [message getExtension:[UnittestRoot packedSfixed64Extension]];
1967 XCTAssertEqual(610 + i * 100, [extension[i] longLongValue]);
1968 extension = [message getExtension:[UnittestRoot packedFloatExtension]];
1969 XCTAssertEqualWithAccuracy(611 + i * 100, [extension[i] floatValue], 0.01);
1970 extension = [message getExtension:[UnittestRoot packedDoubleExtension]];
1971 XCTAssertEqualWithAccuracy(612 + i * 100, [extension[i] doubleValue], 0.01);
1972 extension = [message getExtension:[UnittestRoot packedBoolExtension]];
1973 XCTAssertEqual((i % 2) ? YES : NO, [extension[i] boolValue]);
1974 extension = [message getExtension:[UnittestRoot packedEnumExtension]];
1975 XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz,
1976 [extension[i] intValue]);
1977 }
1978 }
1979
1980 - (void)assertAllFieldsKVCMatch:(TestAllTypes *)message {
1981 XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt32"], @YES);
1982 XCTAssertEqualObjects(@(message.optionalInt32), [message valueForKey:@"optiona lInt32"]);
1983 XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt64"], @YES);
1984 XCTAssertEqualObjects(@(message.optionalInt64), [message valueForKey:@"optiona lInt64"]);
1985 XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint32"], @YES);
1986 XCTAssertEqualObjects(@(message.optionalUint32), [message valueForKey:@"option alUint32"]);
1987 XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint64"], @YES);
1988 XCTAssertEqualObjects(@(message.optionalUint64), [message valueForKey:@"option alUint64"]);
1989 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint32"], @YES);
1990 XCTAssertEqualObjects(@(message.optionalSint32), [message valueForKey:@"option alSint32"]);
1991 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint64"], @YES);
1992 XCTAssertEqualObjects(@(message.optionalSint64), [message valueForKey:@"option alSint64"]);
1993 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed32"], @YES);
1994 XCTAssertEqualObjects(@(message.optionalFixed32), [message valueForKey:@"optio nalFixed32"]);
1995 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed64"], @YES);
1996 XCTAssertEqualObjects(@(message.optionalFixed64), [message valueForKey:@"optio nalFixed64"]);
1997 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed32"], @YES);
1998 XCTAssertEqualObjects(@(message.optionalSfixed32), [message valueForKey:@"opti onalSfixed32"]);
1999 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed64"], @YES);
2000 XCTAssertEqualObjects(@(message.optionalSfixed64), [message valueForKey:@"opti onalSfixed64"]);
2001 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFloat"], @YES);
2002 XCTAssertEqualObjects(@(message.optionalFloat), [message valueForKey:@"optiona lFloat"]);
2003 XCTAssertEqualObjects([message valueForKey:@"hasOptionalDouble"], @YES);
2004 XCTAssertEqualObjects(@(message.optionalDouble), [message valueForKey:@"option alDouble"]);
2005 XCTAssertEqualObjects([message valueForKey:@"hasOptionalBool"], @YES);
2006 XCTAssertEqualObjects(@(message.optionalBool), [message valueForKey:@"optional Bool"]);
2007 XCTAssertEqualObjects([message valueForKey:@"hasOptionalString"], @YES);
2008 XCTAssertEqualObjects(message.optionalString, [message valueForKey:@"optionalS tring"]);
2009 XCTAssertEqualObjects([message valueForKey:@"hasOptionalBytes"], @YES);
2010 XCTAssertEqualObjects(message.optionalBytes, [message valueForKey:@"optionalBy tes"]);
2011
2012 XCTAssertEqualObjects([message valueForKey:@"hasOptionalGroup"], @YES);
2013 XCTAssertNotNil(message.optionalGroup);
2014 XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.hasA"], @YES);
2015 XCTAssertEqualObjects(@(message.optionalGroup.a), [message valueForKeyPath:@"o ptionalGroup.a"]);
2016 XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedMessage"], @YES) ;
2017 XCTAssertNotNil(message.optionalNestedMessage);
2018 XCTAssertEqualObjects([message valueForKeyPath:@"optionalNestedMessage.hasBb"] , @YES);
2019 XCTAssertEqualObjects(@(message.optionalNestedMessage.bb), [message valueForKe yPath:@"optionalNestedMessage.bb"]);
2020 XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignMessage"], @YES );
2021 XCTAssertNotNil(message.optionalForeignMessage);
2022 XCTAssertEqualObjects([message valueForKeyPath:@"optionalForeignMessage.hasC"] , @YES);
2023 XCTAssertEqualObjects(@(message.optionalForeignMessage.c), [message valueForKe yPath:@"optionalForeignMessage.c"]);
2024 XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportMessage"], @YES) ;
2025 XCTAssertNotNil(message.optionalForeignMessage);
2026 XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.hasD"], @YES);
2027 XCTAssertEqualObjects(@(message.optionalImportMessage.d), [message valueForKey Path:@"optionalImportMessage.d"]);
2028
2029 XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedEnum"], @YES);
2030 XCTAssertEqualObjects(@(message.optionalNestedEnum), [message valueForKey:@"op tionalNestedEnum"]);
2031 XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignEnum"], @YES);
2032 XCTAssertEqualObjects(@(message.optionalForeignEnum), [message valueForKey:@"o ptionalForeignEnum"]);
2033 XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportEnum"], @YES);
2034 XCTAssertEqualObjects(@(message.optionalImportEnum), [message valueForKey:@"op tionalImportEnum"]);
2035
2036 XCTAssertEqualObjects([message valueForKey:@"hasOptionalStringPiece"], @YES);
2037 XCTAssertEqualObjects(message.optionalStringPiece, [message valueForKey:@"opti onalStringPiece"]);
2038 XCTAssertEqualObjects([message valueForKey:@"hasOptionalCord"], @YES);
2039 XCTAssertEqualObjects(message.optionalCord, [message valueForKey:@"optionalCor d"]);
2040
2041 // -----------------------------------------------------------------
2042
2043 // GPBArray interface for repeated
2044
2045 XCTAssertEqualObjects(message.repeatedInt32Array, [message valueForKey:@"repea tedInt32Array"]);
2046 XCTAssertEqualObjects(message.repeatedInt64Array, [message valueForKey:@"repea tedInt64Array"]);
2047 XCTAssertEqualObjects(message.repeatedUint32Array, [message valueForKey:@"repe atedUint32Array"]);
2048 XCTAssertEqualObjects(message.repeatedUint64Array, [message valueForKey:@"repe atedUint64Array"]);
2049 XCTAssertEqualObjects(message.repeatedSint32Array, [message valueForKey:@"repe atedSint32Array"]);
2050 XCTAssertEqualObjects(message.repeatedSint64Array, [message valueForKey:@"repe atedSint64Array"]);
2051 XCTAssertEqualObjects(message.repeatedFixed32Array, [message valueForKey:@"rep eatedFixed32Array"]);
2052 XCTAssertEqualObjects(message.repeatedFixed64Array, [message valueForKey:@"rep eatedFixed64Array"]);
2053 XCTAssertEqualObjects(message.repeatedSfixed32Array, [message valueForKey:@"re peatedSfixed32Array"]);
2054 XCTAssertEqualObjects(message.repeatedSfixed64Array, [message valueForKey:@"re peatedSfixed64Array"]);
2055 XCTAssertEqualObjects(message.repeatedFloatArray, [message valueForKey:@"repea tedFloatArray"]);
2056 XCTAssertEqualObjects(message.repeatedDoubleArray, [message valueForKey:@"repe atedDoubleArray"]);
2057 XCTAssertEqualObjects(message.repeatedBoolArray, [message valueForKey:@"repeat edBoolArray"]);
2058 XCTAssertEqualObjects(message.repeatedStringArray, [message valueForKey:@"repe atedStringArray"]);
2059 XCTAssertEqualObjects(message.repeatedBytesArray, [message valueForKey:@"repea tedBytesArray"]);
2060
2061 XCTAssertEqualObjects(message.repeatedGroupArray, [message valueForKey:@"repea tedGroupArray"]);
2062 XCTAssertEqualObjects(message.repeatedNestedMessageArray, [message valueForKey :@"repeatedNestedMessageArray"]);
2063 XCTAssertEqualObjects(message.repeatedForeignMessageArray, [message valueForKe y:@"repeatedForeignMessageArray"]);
2064 XCTAssertEqualObjects(message.repeatedImportMessageArray, [message valueForKey :@"repeatedImportMessageArray"]);
2065
2066 XCTAssertEqualObjects(message.repeatedNestedEnumArray, [message valueForKey:@" repeatedNestedEnumArray"]);
2067 XCTAssertEqualObjects(message.repeatedForeignEnumArray, [message valueForKey:@ "repeatedForeignEnumArray"]);
2068 XCTAssertEqualObjects(message.repeatedImportEnumArray, [message valueForKey:@" repeatedImportEnumArray"]);
2069
2070 XCTAssertEqualObjects(message.repeatedStringPieceArray, [message valueForKey:@ "repeatedStringPieceArray"]);
2071 XCTAssertEqualObjects(message.repeatedCordArray, [message valueForKey:@"repeat edCordArray"]);
2072
2073 XCTAssertEqualObjects(@(message.repeatedInt32Array_Count), [message valueForKe y:@"repeatedInt32Array_Count"]);
2074 XCTAssertEqualObjects(@(message.repeatedInt64Array_Count), [message valueForKe y:@"repeatedInt64Array_Count"]);
2075 XCTAssertEqualObjects(@(message.repeatedUint32Array_Count), [message valueForK ey:@"repeatedUint32Array_Count"]);
2076 XCTAssertEqualObjects(@(message.repeatedUint64Array_Count), [message valueForK ey:@"repeatedUint64Array_Count"]);
2077 XCTAssertEqualObjects(@(message.repeatedSint32Array_Count), [message valueForK ey:@"repeatedSint32Array_Count"]);
2078 XCTAssertEqualObjects(@(message.repeatedSint64Array_Count), [message valueForK ey:@"repeatedSint64Array_Count"]);
2079 XCTAssertEqualObjects(@(message.repeatedFixed32Array_Count), [message valueFor Key:@"repeatedFixed32Array_Count"]);
2080 XCTAssertEqualObjects(@(message.repeatedFixed64Array_Count), [message valueFor Key:@"repeatedFixed64Array_Count"]);
2081 XCTAssertEqualObjects(@(message.repeatedSfixed32Array_Count), [message valueFo rKey:@"repeatedSfixed32Array_Count"]);
2082 XCTAssertEqualObjects(@(message.repeatedSfixed64Array_Count), [message valueFo rKey:@"repeatedSfixed64Array_Count"]);
2083 XCTAssertEqualObjects(@(message.repeatedFloatArray_Count), [message valueForKe y:@"repeatedFloatArray_Count"]);
2084 XCTAssertEqualObjects(@(message.repeatedDoubleArray_Count), [message valueForK ey:@"repeatedDoubleArray_Count"]);
2085 XCTAssertEqualObjects(@(message.repeatedBoolArray_Count), [message valueForKey :@"repeatedBoolArray_Count"]);
2086 XCTAssertEqualObjects(@(message.repeatedStringArray_Count), [message valueForK ey:@"repeatedStringArray_Count"]);
2087 XCTAssertEqualObjects(@(message.repeatedBytesArray_Count), [message valueForKe y:@"repeatedBytesArray_Count"]);
2088
2089 XCTAssertEqualObjects(@(message.repeatedGroupArray_Count), [message valueForKe y:@"repeatedGroupArray_Count"]);
2090 XCTAssertEqualObjects(@(message.repeatedNestedMessageArray_Count), [message va lueForKey:@"repeatedNestedMessageArray_Count"]);
2091 XCTAssertEqualObjects(@(message.repeatedForeignMessageArray_Count), [message v alueForKey:@"repeatedForeignMessageArray_Count"]);
2092 XCTAssertEqualObjects(@(message.repeatedImportMessageArray_Count), [message va lueForKey:@"repeatedImportMessageArray_Count"]);
2093
2094 XCTAssertEqualObjects(@(message.repeatedNestedEnumArray_Count), [message value ForKey:@"repeatedNestedEnumArray_Count"]);
2095 XCTAssertEqualObjects(@(message.repeatedForeignEnumArray_Count), [message valu eForKey:@"repeatedForeignEnumArray_Count"]);
2096 XCTAssertEqualObjects(@(message.repeatedImportEnumArray_Count), [message value ForKey:@"repeatedImportEnumArray_Count"]);
2097
2098 XCTAssertEqualObjects(@(message.repeatedStringPieceArray_Count), [message valu eForKey:@"repeatedStringPieceArray_Count"]);
2099 XCTAssertEqualObjects(@(message.repeatedCordArray_Count), [message valueForKey :@"repeatedCordArray_Count"]);
2100
2101 // -----------------------------------------------------------------
2102
2103 XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt32"], @YES);
2104 XCTAssertEqualObjects(@(message.defaultInt32), [message valueForKey:@"defaultI nt32"]);
2105 XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt64"], @YES);
2106 XCTAssertEqualObjects(@(message.defaultInt64), [message valueForKey:@"defaultI nt64"]);
2107 XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint32"], @YES);
2108 XCTAssertEqualObjects(@(message.defaultUint32), [message valueForKey:@"default Uint32"]);
2109 XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint64"], @YES);
2110 XCTAssertEqualObjects(@(message.defaultUint64), [message valueForKey:@"default Uint64"]);
2111 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint32"], @YES);
2112 XCTAssertEqualObjects(@(message.defaultSint32), [message valueForKey:@"default Sint32"]);
2113 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint64"], @YES);
2114 XCTAssertEqualObjects(@(message.defaultSint64), [message valueForKey:@"default Sint64"]);
2115 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed32"], @YES);
2116 XCTAssertEqualObjects(@(message.defaultFixed32), [message valueForKey:@"defaul tFixed32"]);
2117 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed64"], @YES);
2118 XCTAssertEqualObjects(@(message.defaultFixed64), [message valueForKey:@"defaul tFixed64"]);
2119 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed32"], @YES);
2120 XCTAssertEqualObjects(@(message.defaultSfixed32), [message valueForKey:@"defau ltSfixed32"]);
2121 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed64"], @YES);
2122 XCTAssertEqualObjects(@(message.defaultSfixed64), [message valueForKey:@"defau ltSfixed64"]);
2123 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFloat"], @YES);
2124 XCTAssertEqualObjects(@(message.defaultFloat), [message valueForKey:@"defaultF loat"]);
2125 XCTAssertEqualObjects([message valueForKey:@"hasDefaultDouble"], @YES);
2126 XCTAssertEqualObjects(@(message.defaultDouble), [message valueForKey:@"default Double"]);
2127 XCTAssertEqualObjects([message valueForKey:@"hasDefaultBool"], @YES);
2128 XCTAssertEqualObjects(@(message.defaultBool), [message valueForKey:@"defaultBo ol"]);
2129 XCTAssertEqualObjects([message valueForKey:@"hasDefaultString"], @YES);
2130 XCTAssertEqualObjects(message.defaultString, [message valueForKey:@"defaultStr ing"]);
2131 XCTAssertEqualObjects([message valueForKey:@"hasDefaultBytes"], @YES);
2132 XCTAssertEqualObjects(message.defaultBytes, [message valueForKey:@"defaultByte s"]);
2133
2134 XCTAssertEqualObjects([message valueForKey:@"hasDefaultNestedEnum"], @YES);
2135 XCTAssertEqualObjects(@(message.defaultNestedEnum), [message valueForKey:@"def aultNestedEnum"]);
2136 XCTAssertEqualObjects([message valueForKey:@"hasDefaultForeignEnum"], @YES);
2137 XCTAssertEqualObjects(@(message.defaultForeignEnum), [message valueForKey:@"de faultForeignEnum"]);
2138 XCTAssertEqualObjects([message valueForKey:@"hasDefaultImportEnum"], @YES);
2139 XCTAssertEqualObjects(@(message.defaultImportEnum), [message valueForKey:@"def aultImportEnum"]);
2140
2141 XCTAssertEqualObjects([message valueForKey:@"hasDefaultStringPiece"], @YES);
2142 XCTAssertEqualObjects(message.defaultStringPiece, [message valueForKey:@"defau ltStringPiece"]);
2143 XCTAssertEqualObjects([message valueForKey:@"hasDefaultCord"], @YES);
2144 XCTAssertEqualObjects(message.defaultCord, [message valueForKey:@"defaultCord" ]);
2145 }
2146
2147 - (void)setAllFieldsViaKVC:(TestAllTypes *)message
2148 repeatedCount:(uint32_t)count {
2149 [message setValue:@101 forKey:@"optionalInt32"];
2150 [message setValue:@102 forKey:@"optionalInt64"];
2151 [message setValue:@103 forKey:@"optionalUint32"];
2152 [message setValue:@104 forKey:@"optionalUint64"];
2153 [message setValue:@105 forKey:@"optionalSint32"];
2154 [message setValue:@106 forKey:@"optionalSint64"];
2155 [message setValue:@107 forKey:@"optionalFixed32"];
2156 [message setValue:@108 forKey:@"optionalFixed64"];
2157 [message setValue:@109 forKey:@"optionalSfixed32"];
2158 [message setValue:@110 forKey:@"optionalSfixed64"];
2159 [message setValue:@111 forKey:@"optionalFloat"];
2160 [message setValue:@112 forKey:@"optionalDouble"];
2161 [message setValue:@YES forKey:@"optionalBool"];
2162 [message setValue:@"115" forKey:@"optionalString"];
2163 [message setValue:[NSData gpbtu_dataWithEmbeddedNulls]
2164 forKey:@"optionalBytes"];
2165
2166 TestAllTypes_OptionalGroup *allTypes = [TestAllTypes_OptionalGroup message];
2167 [allTypes setValue:@117 forKey:@"a"];
2168 [message setValue:allTypes forKey:@"optionalGroup"];
2169 TestAllTypes_NestedMessage *nestedMessage =
2170 [TestAllTypes_NestedMessage message];
2171 [nestedMessage setValue:@118 forKey:@"bb"];
2172 [message setValue:nestedMessage forKey:@"optionalNestedMessage"];
2173 ForeignMessage *foreignMessage = [ForeignMessage message];
2174 [foreignMessage setValue:@119 forKey:@"c"];
2175 [message setValue:foreignMessage forKey:@"optionalForeignMessage"];
2176 ImportMessage *importMessage = [ImportMessage message];
2177 [importMessage setValue:@120 forKey:@"d"];
2178 [message setValue:importMessage forKey:@"optionalImportMessage"];
2179
2180 [message setValue:@(TestAllTypes_NestedEnum_Baz)
2181 forKey:@"optionalNestedEnum"];
2182 [message setValue:@(ForeignEnum_ForeignBaz) forKey:@"optionalForeignEnum"];
2183 [message setValue:@(ImportEnum_ImportBaz) forKey:@"optionalImportEnum"];
2184
2185 [message setValue:@"124" forKey:@"optionalStringPiece"];
2186 [message setValue:@"125" forKey:@"optionalCord"];
2187
2188 // -----------------------------------------------------------------
2189
2190 {
2191 GPBInt32Array *scratch = [GPBInt32Array array];
2192 for (uint32_t i = 0; i < count; ++i) {
2193 [scratch addValue:201 + i * 100];
2194 }
2195 [message setValue:scratch forKey:@"repeatedInt32Array"];
2196 }
2197 {
2198 GPBInt64Array *scratch = [GPBInt64Array array];
2199 for (uint32_t i = 0; i < count; ++i) {
2200 [scratch addValue:202 + i * 100];
2201 }
2202 [message setValue:scratch forKey:@"repeatedInt64Array"];
2203 }
2204 {
2205 GPBUInt32Array *scratch = [GPBUInt32Array array];
2206 for (uint32_t i = 0; i < count; ++i) {
2207 [scratch addValue:203 + i * 100];
2208 }
2209 [message setValue:scratch forKey:@"repeatedUint32Array"];
2210 }
2211 {
2212 GPBUInt64Array *scratch = [GPBUInt64Array array];
2213 for (uint32_t i = 0; i < count; ++i) {
2214 [scratch addValue:204 + i * 100];
2215 }
2216 [message setValue:scratch forKey:@"repeatedUint64Array"];
2217 }
2218 {
2219 GPBInt32Array *scratch = [GPBInt32Array array];
2220 for (uint32_t i = 0; i < count; ++i) {
2221 [scratch addValue:205 + i * 100];
2222 }
2223 [message setValue:scratch forKey:@"repeatedSint32Array"];
2224 }
2225 {
2226 GPBInt64Array *scratch = [GPBInt64Array array];
2227 for (uint32_t i = 0; i < count; ++i) {
2228 [scratch addValue:206 + i * 100];
2229 }
2230 [message setValue:scratch forKey:@"repeatedSint64Array"];
2231 }
2232 {
2233 GPBUInt32Array *scratch = [GPBUInt32Array array];
2234 for (uint32_t i = 0; i < count; ++i) {
2235 [scratch addValue:207 + i * 100];
2236 }
2237 [message setValue:scratch forKey:@"repeatedFixed32Array"];
2238 }
2239 {
2240 GPBUInt64Array *scratch = [GPBUInt64Array array];
2241 for (uint32_t i = 0; i < count; ++i) {
2242 [scratch addValue:208 + i * 100];
2243 }
2244 [message setValue:scratch forKey:@"repeatedFixed64Array"];
2245 }
2246 {
2247 GPBInt32Array *scratch = [GPBInt32Array array];
2248 for (uint32_t i = 0; i < count; ++i) {
2249 [scratch addValue:209 + i * 100];
2250 }
2251 [message setValue:scratch forKey:@"repeatedSfixed32Array"];
2252 }
2253 {
2254 GPBInt64Array *scratch = [GPBInt64Array array];
2255 for (uint32_t i = 0; i < count; ++i) {
2256 [scratch addValue:210 + i * 100];
2257 }
2258 [message setValue:scratch forKey:@"repeatedSfixed64Array"];
2259 }
2260 {
2261 GPBFloatArray *scratch = [GPBFloatArray array];
2262 for (uint32_t i = 0; i < count; ++i) {
2263 [scratch addValue:211 + i * 100];
2264 }
2265 [message setValue:scratch forKey:@"repeatedFloatArray"];
2266 }
2267 {
2268 GPBDoubleArray *scratch = [GPBDoubleArray array];
2269 for (uint32_t i = 0; i < count; ++i) {
2270 [scratch addValue:212 + i * 100];
2271 }
2272 [message setValue:scratch forKey:@"repeatedDoubleArray"];
2273 }
2274 {
2275 GPBBoolArray *scratch = [GPBBoolArray array];
2276 for (uint32_t i = 0; i < count; ++i) {
2277 [scratch addValue:(i % 2) ? YES : NO];
2278 }
2279 [message setValue:scratch forKey:@"repeatedBoolArray"];
2280 }
2281
2282 NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:count];
2283 for (uint32_t i = 0; i < count; ++i) {
2284 NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
2285 [array addObject:string];
2286 [string release];
2287 }
2288 [message setValue:array forKey:@"repeatedStringArray"];
2289 [array release];
2290
2291 array = [[NSMutableArray alloc] initWithCapacity:count];
2292 for (uint32_t i = 0; i < count; ++i) {
2293 NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
2294 [array addObject:data];
2295 [data release];
2296 }
2297 [message setValue:array forKey:@"repeatedBytesArray"];
2298 [array release];
2299
2300 array = [[NSMutableArray alloc] initWithCapacity:count];
2301 for (uint32_t i = 0; i < count; ++i) {
2302 TestAllTypes_RepeatedGroup *testAll =
2303 [[TestAllTypes_RepeatedGroup alloc] init];
2304 [testAll setA:217 + i * 100];
2305 [array addObject:testAll];
2306 [testAll release];
2307 }
2308 [message setValue:array forKey:@"repeatedGroupArray"];
2309 [array release];
2310
2311 array = [[NSMutableArray alloc] initWithCapacity:count];
2312 for (uint32_t i = 0; i < count; ++i) {
2313 nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
2314 [nestedMessage setBb:218 + i * 100];
2315 [array addObject:nestedMessage];
2316 [nestedMessage release];
2317 }
2318 [message setValue:array forKey:@"repeatedNestedMessageArray"];
2319 [array release];
2320
2321 array = [[NSMutableArray alloc] initWithCapacity:count];
2322 for (uint32_t i = 0; i < count; ++i) {
2323 foreignMessage = [[ForeignMessage alloc] init];
2324 [foreignMessage setC:219 + i * 100];
2325 [array addObject:foreignMessage];
2326 [foreignMessage release];
2327 }
2328 [message setValue:array forKey:@"repeatedForeignMessageArray"];
2329 [array release];
2330
2331 array = [[NSMutableArray alloc] initWithCapacity:count];
2332 for (uint32_t i = 0; i < count; ++i) {
2333 importMessage = [[ImportMessage alloc] init];
2334 [importMessage setD:220 + i * 100];
2335 [array addObject:importMessage];
2336 [importMessage release];
2337 }
2338 [message setValue:array forKey:@"repeatedImportMessageArray"];
2339 [array release];
2340
2341 {
2342 GPBEnumArray *scratch = [GPBEnumArray
2343 arrayWithValidationFunction:TestAllTypes_NestedEnum_IsValidValue];
2344 for (uint32_t i = 0; i < count; ++i) {
2345 [scratch addValue:(i % 2) ? TestAllTypes_NestedEnum_Bar
2346 : TestAllTypes_NestedEnum_Baz];
2347 }
2348 [message setValue:scratch forKey:@"repeatedNestedEnumArray"];
2349 }
2350 {
2351 GPBEnumArray *scratch =
2352 [GPBEnumArray arrayWithValidationFunction:ForeignEnum_IsValidValue];
2353 for (uint32_t i = 0; i < count; ++i) {
2354 [scratch
2355 addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
2356 }
2357 [message setValue:scratch forKey:@"repeatedForeignEnumArray"];
2358 }
2359 {
2360 GPBEnumArray *scratch =
2361 [GPBEnumArray arrayWithValidationFunction:ImportEnum_IsValidValue];
2362 for (uint32_t i = 0; i < count; ++i) {
2363 [scratch addValue:(i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz];
2364 }
2365 [message setValue:scratch forKey:@"repeatedImportEnumArray"];
2366 }
2367
2368 array = [[NSMutableArray alloc] initWithCapacity:count];
2369 for (uint32_t i = 0; i < count; ++i) {
2370 NSString *string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
2371 [array addObject:string];
2372 [string release];
2373 }
2374 [message setValue:array forKey:@"repeatedStringPieceArray"];
2375 [array release];
2376
2377 array = [[NSMutableArray alloc] initWithCapacity:count];
2378 for (uint32_t i = 0; i < count; ++i) {
2379 NSString *string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
2380 [array addObject:string];
2381 [string release];
2382 }
2383 [message setValue:array forKey:@"repeatedCordArray"];
2384 [array release];
2385
2386 // -----------------------------------------------------------------
2387
2388 [message setValue:@401 forKey:@"defaultInt32"];
2389 [message setValue:@402 forKey:@"defaultInt64"];
2390 [message setValue:@403 forKey:@"defaultUint32"];
2391 [message setValue:@404 forKey:@"defaultUint64"];
2392 [message setValue:@405 forKey:@"defaultSint32"];
2393 [message setValue:@406 forKey:@"defaultSint64"];
2394 [message setValue:@407 forKey:@"defaultFixed32"];
2395 [message setValue:@408 forKey:@"defaultFixed64"];
2396 [message setValue:@409 forKey:@"defaultSfixed32"];
2397 [message setValue:@410 forKey:@"defaultSfixed64"];
2398 [message setValue:@411 forKey:@"defaultFloat"];
2399 [message setValue:@412 forKey:@"defaultDouble"];
2400 [message setValue:@NO forKey:@"defaultBool"];
2401 [message setValue:@"415" forKey:@"defaultString"];
2402 [message setValue:[NSData gpbtu_dataWithUint32:416] forKey:@"defaultBytes"];
2403
2404 [message setValue:@(TestAllTypes_NestedEnum_Foo) forKey:@"defaultNestedEnum"];
2405 [message setValue:@(ForeignEnum_ForeignFoo) forKey:@"defaultForeignEnum"];
2406 [message setValue:@(ImportEnum_ImportFoo) forKey:@"defaultImportEnum"];
2407
2408 [message setValue:@"424" forKey:@"defaultStringPiece"];
2409 [message setValue:@"425" forKey:@"defaultCord"];
2410 }
2411
2412 - (void)assertClearKVC:(TestAllTypes *)message {
2413 XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt32"], @NO);
2414 XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt64"], @NO);
2415 XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint32"], @NO);
2416 XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint64"], @NO);
2417 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint32"], @NO);
2418 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint64"], @NO);
2419 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed32"], @NO);
2420 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed64"], @NO);
2421 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed32"], @NO);
2422 XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed64"], @NO);
2423 XCTAssertEqualObjects([message valueForKey:@"hasOptionalFloat"], @NO);
2424 XCTAssertEqualObjects([message valueForKey:@"hasOptionalDouble"], @NO);
2425 XCTAssertEqualObjects([message valueForKey:@"hasOptionalBool"], @NO);
2426 XCTAssertEqualObjects([message valueForKey:@"hasOptionalString"], @NO);
2427 XCTAssertEqualObjects([message valueForKey:@"hasOptionalBytes"], @NO);
2428
2429 XCTAssertEqualObjects([message valueForKey:@"hasOptionalGroup"], @NO);
2430 XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedMessage"], @NO);
2431 XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignMessage"],
2432 @NO);
2433 XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportMessage"], @NO);
2434
2435 XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedEnum"], @NO);
2436 XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignEnum"], @NO);
2437 XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportEnum"], @NO);
2438
2439 XCTAssertEqualObjects([message valueForKey:@"hasOptionalStringPiece"], @NO);
2440 XCTAssertEqualObjects([message valueForKey:@"hasOptionalCord"], @NO);
2441
2442 // Optional fields without defaults are set to zero or something like it.
2443 XCTAssertEqualObjects([message valueForKey:@"optionalInt32"], @0);
2444 XCTAssertEqualObjects([message valueForKey:@"optionalInt64"], @0);
2445 XCTAssertEqualObjects([message valueForKey:@"optionalUint32"], @0);
2446 XCTAssertEqualObjects([message valueForKey:@"optionalUint64"], @0);
2447 XCTAssertEqualObjects([message valueForKey:@"optionalSint32"], @0);
2448 XCTAssertEqualObjects([message valueForKey:@"optionalSint64"], @0);
2449 XCTAssertEqualObjects([message valueForKey:@"optionalFixed32"], @0);
2450 XCTAssertEqualObjects([message valueForKey:@"optionalFixed64"], @0);
2451 XCTAssertEqualObjects([message valueForKey:@"optionalSfixed32"], @0);
2452 XCTAssertEqualObjects([message valueForKey:@"optionalSfixed64"], @0);
2453 XCTAssertEqualObjects([message valueForKey:@"optionalFloat"], @0);
2454 XCTAssertEqualObjects([message valueForKey:@"optionalDouble"], @0);
2455 XCTAssertEqualObjects([message valueForKey:@"optionalBool"], @NO);
2456 XCTAssertEqualObjects([message valueForKey:@"optionalString"], @"");
2457 XCTAssertEqualObjects([message valueForKey:@"optionalBytes"],
2458 GPBEmptyNSData());
2459
2460 // Embedded messages should also be exist, but be clear.
2461 XCTAssertNotNil([message valueForKeyPath:@"optionalGroup"]);
2462 XCTAssertNotNil([message valueForKeyPath:@"optionalNestedMessage"]);
2463 XCTAssertNotNil([message valueForKeyPath:@"optionalForeignMessage"]);
2464 XCTAssertNotNil([message valueForKeyPath:@"optionalImportMessage"]);
2465 XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.hasA"], @NO);
2466 XCTAssertEqualObjects(
2467 [message valueForKeyPath:@"optionalNestedMessage.hasBb"], @NO);
2468 XCTAssertEqualObjects(
2469 [message valueForKeyPath:@"optionalForeignMessage.hasC"], @NO);
2470 XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.hasD"],
2471 @NO);
2472
2473 XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.a"], @0);
2474 XCTAssertEqualObjects([message valueForKeyPath:@"optionalNestedMessage.bb"],
2475 @0);
2476 XCTAssertEqualObjects([message valueForKeyPath:@"optionalForeignMessage.c"],
2477 @0);
2478 XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.d"],
2479 @0);
2480
2481 // Enums without defaults are set to the first value in the enum.
2482 XCTAssertEqualObjects([message valueForKey:@"optionalNestedEnum"],
2483 @(TestAllTypes_NestedEnum_Foo));
2484 XCTAssertEqualObjects([message valueForKey:@"optionalForeignEnum"],
2485 @(ForeignEnum_ForeignFoo));
2486 XCTAssertEqualObjects([message valueForKey:@"optionalImportEnum"],
2487 @(ImportEnum_ImportFoo));
2488
2489 XCTAssertEqualObjects([message valueForKey:@"optionalStringPiece"], @"");
2490 XCTAssertEqualObjects([message valueForKey:@"optionalCord"], @"");
2491
2492 // NSArray interface for repeated doesn't have has*, nil means no value.
2493
2494 XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt32"], @NO);
2495 XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt64"], @NO);
2496 XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint32"], @NO);
2497 XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint64"], @NO);
2498 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint32"], @NO);
2499 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint64"], @NO);
2500 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed32"], @NO);
2501 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed64"], @NO);
2502 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed32"], @NO);
2503 XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed64"], @NO);
2504 XCTAssertEqualObjects([message valueForKey:@"hasDefaultFloat"], @NO);
2505 XCTAssertEqualObjects([message valueForKey:@"hasDefaultDouble"], @NO);
2506 XCTAssertEqualObjects([message valueForKey:@"hasDefaultBool"], @NO);
2507 XCTAssertEqualObjects([message valueForKey:@"hasDefaultString"], @NO);
2508 XCTAssertEqualObjects([message valueForKey:@"hasDefaultBytes"], @NO);
2509
2510 XCTAssertEqualObjects([message valueForKey:@"hasDefaultNestedEnum"], @NO);
2511 XCTAssertEqualObjects([message valueForKey:@"hasDefaultForeignEnum"], @NO);
2512 XCTAssertEqualObjects([message valueForKey:@"hasDefaultImportEnum"], @NO);
2513
2514 XCTAssertEqualObjects([message valueForKey:@"hasDefaultStringPiece"], @NO);
2515 XCTAssertEqualObjects([message valueForKey:@"hasDefaultCord"], @NO);
2516
2517 // Fields with defaults have their default values (duh).
2518 XCTAssertEqualObjects([message valueForKey:@"defaultInt32"], @41);
2519 XCTAssertEqualObjects([message valueForKey:@"defaultInt64"], @42);
2520 XCTAssertEqualObjects([message valueForKey:@"defaultUint32"], @43);
2521 XCTAssertEqualObjects([message valueForKey:@"defaultUint64"], @44);
2522 XCTAssertEqualObjects([message valueForKey:@"defaultSint32"], @-45);
2523 XCTAssertEqualObjects([message valueForKey:@"defaultSint64"], @46);
2524 XCTAssertEqualObjects([message valueForKey:@"defaultFixed32"], @47);
2525 XCTAssertEqualObjects([message valueForKey:@"defaultFixed64"], @48);
2526 XCTAssertEqualObjects([message valueForKey:@"defaultSfixed32"], @49);
2527 XCTAssertEqualObjects([message valueForKey:@"defaultSfixed64"], @-50);
2528 XCTAssertEqualObjects([message valueForKey:@"defaultFloat"], @51.5);
2529 XCTAssertEqualObjects([message valueForKey:@"defaultDouble"], @52e3);
2530 XCTAssertEqualObjects([message valueForKey:@"defaultBool"], @YES);
2531 XCTAssertEqualObjects([message valueForKey:@"defaultString"], @"hello");
2532 XCTAssertEqualObjects([message valueForKey:@"defaultBytes"],
2533 [NSData gpbtu_dataWithCString:"world"]);
2534
2535 XCTAssertEqualObjects([message valueForKey:@"defaultNestedEnum"],
2536 @(TestAllTypes_NestedEnum_Bar));
2537 XCTAssertEqualObjects([message valueForKey:@"defaultForeignEnum"],
2538 @(ForeignEnum_ForeignBar));
2539 XCTAssertEqualObjects([message valueForKey:@"defaultImportEnum"],
2540 @(ImportEnum_ImportBar));
2541
2542 XCTAssertEqualObjects([message valueForKey:@"defaultStringPiece"], @"abc");
2543 XCTAssertEqualObjects([message valueForKey:@"defaultCord"], @"123");
2544 }
2545
2546 @end
OLDNEW
« no previous file with comments | « third_party/protobuf/objectivec/Tests/GPBTestUtilities.h ('k') | third_party/protobuf/objectivec/Tests/GPBUnittestProtos.m » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698