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