protobuf/objectivec/Tests/GPBTestUtilities.m
Thomas Van Lenten 1383d53e67 Cleanups for newer Xcodes
- Move up to 8.4 as the high simulator (assuming Xcode 6.4).
- Add cast to NSMutableDictionary so clang and resolve the selector.
- Add case for the newer static analyzer so it won't trigger a false warning.
- Update the "dictionary" interface to use "object" naming. Xcode 7+ has gotten
  more strict on the use of nonnull/nullable; combining that with the generic
  collection support; and the "dictionary" classes we created now collide with
  what the generic KeyValueCoding in the system headers triggering
  warnings/errors. Fix this and hopefully all future issue by renaming the
  methods to use "object" for the classes that have data types as objects
  instead of PODs. Taking this renaming hit now while ObjC is still in beta
  because it is a breaking change for any existing code.
2015-09-29 17:18:09 -04:00

2547 lines
135 KiB
Objective-C

// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import "GPBTestUtilities.h"
#import "google/protobuf/MapUnittest.pbobjc.h"
#import "google/protobuf/Unittest.pbobjc.h"
#import "google/protobuf/UnittestImport.pbobjc.h"
const uint32_t kGPBDefaultRepeatCount = 2;
// Small category to easily turn a CString into an NSData.
@interface NSData (GPBTestCase)
+ (NSData *)gpbtu_dataWithCString:(char *)buffer;
+ (instancetype)gpbtu_dataWithEmbeddedNulls;
@end
@implementation NSData (GPBTestCase)
+ (NSData *)gpbtu_dataWithCString:(char *)buffer {
return [NSData dataWithBytes:buffer length:strlen(buffer)];
}
+ (instancetype)gpbtu_dataWithUint32:(uint32_t)value {
return [[[self alloc] initWithUint32_gpbtu:value] autorelease];
}
- (instancetype)initWithUint32_gpbtu:(uint32_t)value {
value = CFSwapInt32HostToLittle(value);
return [self initWithBytes:&value length:sizeof(value)];
}
+ (instancetype)gpbtu_dataWithEmbeddedNulls {
char bytes[6] = "\1\0\2\3\0\5";
return [self dataWithBytes:bytes length:sizeof(bytes)];
}
@end
@implementation GPBTestCase
// Return data for name. Optionally (based on #if setting) write out dataToWrite
// to replace that data. Useful for setting golden masters.
- (NSData *)getDataFileNamed:(NSString *)name
dataToWrite:(NSData *)dataToWrite {
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *path = [bundle pathForResource:[name stringByDeletingPathExtension]
ofType:[name pathExtension]];
XCTAssertNotNil(path, @"Unable to find %@", name);
NSData *data = [NSData dataWithContentsOfFile:path];
XCTAssertNotNil(data, @"Unable to load from %@", path);
#if 0
// Enable to write out golden master files.
if (!path) {
path = [[bundle resourcePath] stringByAppendingPathComponent:name];
}
NSError *error = nil;
BOOL wrote = [dataToWrite writeToFile:path options:NSDataWritingAtomic error:&error];
XCTAssertTrue(wrote, @"Unable to write %@ (%@)", path, error);
NSLog(@"Wrote data file to %@", path);
#else
// Kill off the unused variable warning.
dataToWrite = dataToWrite;
#endif
return data;
}
// -------------------------------------------------------------------
- (void)modifyRepeatedExtensions:(TestAllExtensions *)message {
[message setExtension:[UnittestRoot repeatedInt32Extension]
index:1
value:@501];
[message setExtension:[UnittestRoot repeatedInt64Extension]
index:1
value:@502];
[message setExtension:[UnittestRoot repeatedUint32Extension]
index:1
value:@503];
[message setExtension:[UnittestRoot repeatedUint64Extension]
index:1
value:@504];
[message setExtension:[UnittestRoot repeatedSint32Extension]
index:1
value:@505];
[message setExtension:[UnittestRoot repeatedSint64Extension]
index:1
value:@506];
[message setExtension:[UnittestRoot repeatedFixed32Extension]
index:1
value:@507];
[message setExtension:[UnittestRoot repeatedFixed64Extension]
index:1
value:@508];
[message setExtension:[UnittestRoot repeatedSfixed32Extension]
index:1
value:@509];
[message setExtension:[UnittestRoot repeatedSfixed64Extension]
index:1
value:@510];
[message setExtension:[UnittestRoot repeatedFloatExtension]
index:1
value:@511.0f];
[message setExtension:[UnittestRoot repeatedDoubleExtension]
index:1
value:@512.0];
[message setExtension:[UnittestRoot repeatedBoolExtension]
index:1
value:@YES];
[message setExtension:[UnittestRoot repeatedStringExtension]
index:1
value:@"515"];
[message setExtension:[UnittestRoot repeatedBytesExtension]
index:1
value:[NSData gpbtu_dataWithUint32:516]];
RepeatedGroup_extension *repeatedGroup = [RepeatedGroup_extension message];
[repeatedGroup setA:517];
[message setExtension:[UnittestRoot repeatedGroupExtension]
index:1
value:repeatedGroup];
TestAllTypes_NestedMessage *nestedMessage =
[TestAllTypes_NestedMessage message];
[nestedMessage setBb:518];
[message setExtension:[UnittestRoot repeatedNestedMessageExtension]
index:1
value:nestedMessage];
ForeignMessage *foreignMessage = [ForeignMessage message];
[foreignMessage setC:519];
[message setExtension:[UnittestRoot repeatedForeignMessageExtension]
index:1
value:foreignMessage];
ImportMessage *importMessage = [ImportMessage message];
[importMessage setD:520];
[message setExtension:[UnittestRoot repeatedImportMessageExtension]
index:1
value:importMessage];
[message setExtension:[UnittestRoot repeatedNestedEnumExtension]
index:1
value:@(TestAllTypes_NestedEnum_Foo)];
[message setExtension:[UnittestRoot repeatedForeignEnumExtension]
index:1
value:@(ForeignEnum_ForeignFoo)];
[message setExtension:[UnittestRoot repeatedImportEnumExtension]
index:1
value:@(ImportEnum_ImportFoo)];
[message setExtension:[UnittestRoot repeatedStringPieceExtension]
index:1
value:@"524"];
[message setExtension:[UnittestRoot repeatedCordExtension]
index:1
value:@"525"];
}
- (void)assertAllExtensionsSet:(TestAllExtensions *)message
repeatedCount:(uint32_t)count {
XCTAssertTrue([message hasExtension:[UnittestRoot optionalInt32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalInt64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalUint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalUint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalSint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalSint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalFixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalFixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalSfixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalSfixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalFloatExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalDoubleExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalBoolExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalStringExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalBytesExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalGroupExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalNestedMessageExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalForeignMessageExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalImportMessageExtension]]);
XCTAssertTrue([[message getExtension:[UnittestRoot optionalGroupExtension]] hasA]);
XCTAssertTrue([[message getExtension:[UnittestRoot optionalNestedMessageExtension]] hasBb]);
XCTAssertTrue([[message getExtension:[UnittestRoot optionalForeignMessageExtension]] hasC]);
XCTAssertTrue([[message getExtension:[UnittestRoot optionalImportMessageExtension]] hasD]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalNestedEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalForeignEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalImportEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalStringPieceExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot optionalCordExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFloatExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultBoolExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultBytesExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultNestedEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultForeignEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultImportEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringPieceExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultCordExtension]]);
XCTAssertEqual(101, [[message getExtension:[UnittestRoot optionalInt32Extension]] intValue]);
XCTAssertEqual(102LL, [[message getExtension:[UnittestRoot optionalInt64Extension]] longLongValue]);
XCTAssertEqual(103U, [[message getExtension:[UnittestRoot optionalUint32Extension]] unsignedIntValue]);
XCTAssertEqual(104ULL, [[message getExtension:[UnittestRoot optionalUint64Extension]] unsignedLongLongValue]);
XCTAssertEqual(105, [[message getExtension:[UnittestRoot optionalSint32Extension]] intValue]);
XCTAssertEqual(106LL, [[message getExtension:[UnittestRoot optionalSint64Extension]] longLongValue]);
XCTAssertEqual(107U, [[message getExtension:[UnittestRoot optionalFixed32Extension]] unsignedIntValue]);
XCTAssertEqual(108ULL, [[message getExtension:[UnittestRoot optionalFixed64Extension]] unsignedLongLongValue]);
XCTAssertEqual(109, [[message getExtension:[UnittestRoot optionalSfixed32Extension]] intValue]);
XCTAssertEqual(110LL, [[message getExtension:[UnittestRoot optionalSfixed64Extension]] longLongValue]);
XCTAssertEqualWithAccuracy(111.0f, [[message getExtension:[UnittestRoot optionalFloatExtension]] floatValue], 0.01);
XCTAssertEqualWithAccuracy(112.0, [[message getExtension:[UnittestRoot optionalDoubleExtension]] doubleValue], 0.01);
XCTAssertTrue([[message getExtension:[UnittestRoot optionalBoolExtension]] boolValue]);
XCTAssertEqualObjects(@"115", [message getExtension:[UnittestRoot optionalStringExtension]]);
XCTAssertEqualObjects([NSData gpbtu_dataWithEmbeddedNulls], [message getExtension:[UnittestRoot optionalBytesExtension]]);
XCTAssertEqual(117, [(TestAllTypes_OptionalGroup*)[message getExtension:[UnittestRoot optionalGroupExtension]] a]);
XCTAssertEqual(118, [(TestAllTypes_NestedMessage*)[message getExtension:[UnittestRoot optionalNestedMessageExtension]] bb]);
XCTAssertEqual(119, [[message getExtension:[UnittestRoot optionalForeignMessageExtension]] c]);
XCTAssertEqual(120, [[message getExtension:[UnittestRoot optionalImportMessageExtension]] d]);
XCTAssertEqual(TestAllTypes_NestedEnum_Baz, [[message getExtension:[UnittestRoot optionalNestedEnumExtension]] intValue]);
XCTAssertEqual(ForeignEnum_ForeignBaz, [[message getExtension:[UnittestRoot optionalForeignEnumExtension]] intValue]);
XCTAssertEqual(ImportEnum_ImportBaz, [[message getExtension:[UnittestRoot optionalImportEnumExtension]] intValue]);
XCTAssertEqualObjects(@"124", [message getExtension:[UnittestRoot optionalStringPieceExtension]]);
XCTAssertEqualObjects(@"125", [message getExtension:[UnittestRoot optionalCordExtension]]);
// -----------------------------------------------------------------
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFloatExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedDoubleExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBoolExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBytesExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedGroupExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringPieceExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedCordExtension]] count]);
for (uint32_t i = 0; i < count; ++i) {
id extension = [message getExtension:[UnittestRoot repeatedInt32Extension]];
XCTAssertEqual((int)(201 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot repeatedInt64Extension]];
XCTAssertEqual(202 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot repeatedUint32Extension]];
XCTAssertEqual(203 + i * 100, [extension[i] unsignedIntValue]);
extension = [message getExtension:[UnittestRoot repeatedUint64Extension]];
XCTAssertEqual(204 + i * 100, [extension[i] unsignedLongLongValue]);
extension = [message getExtension:[UnittestRoot repeatedSint32Extension]];
XCTAssertEqual((int)(205 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot repeatedSint64Extension]];
XCTAssertEqual(206 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot repeatedFixed32Extension]];
XCTAssertEqual(207 + i * 100, [extension[i] unsignedIntValue]);
extension = [message getExtension:[UnittestRoot repeatedFixed64Extension]];
XCTAssertEqual(208 + i * 100, [extension[i] unsignedLongLongValue]);
extension = [message getExtension:[UnittestRoot repeatedSfixed32Extension]];
XCTAssertEqual((int)(209 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot repeatedSfixed64Extension]];
XCTAssertEqual(210 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot repeatedFloatExtension]];
XCTAssertEqualWithAccuracy(211 + i * 100, [extension[i] floatValue], 0.01);
extension = [message getExtension:[UnittestRoot repeatedDoubleExtension]];
XCTAssertEqualWithAccuracy(212 + i * 100, [extension[i] doubleValue], 0.01);
extension = [message getExtension:[UnittestRoot repeatedBoolExtension]];
XCTAssertEqual((i % 2) ? YES : NO, [extension[i] boolValue]);
NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
extension = [message getExtension:[UnittestRoot repeatedStringExtension]];
XCTAssertEqualObjects(string, extension[i]);
[string release];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
extension = [message getExtension:[UnittestRoot repeatedBytesExtension]];
XCTAssertEqualObjects(data, extension[i]);
[data release];
extension = [message getExtension:[UnittestRoot repeatedGroupExtension]];
XCTAssertEqual((int)(217 + i * 100), [(TestAllTypes_OptionalGroup*)extension[i] a]);
extension = [message getExtension:[UnittestRoot repeatedNestedMessageExtension]];
XCTAssertEqual((int)(218 + i * 100), [(TestAllTypes_NestedMessage*)extension[i] bb]);
extension = [message getExtension:[UnittestRoot repeatedForeignMessageExtension]];
XCTAssertEqual((int)(219 + i * 100), [extension[i] c]);
extension = [message getExtension:[UnittestRoot repeatedImportMessageExtension]];
XCTAssertEqual((int)(220 + i * 100), [extension[i] d]);
extension = [message getExtension:[UnittestRoot repeatedNestedEnumExtension]];
XCTAssertEqual((i % 2) ? TestAllTypes_NestedEnum_Bar : TestAllTypes_NestedEnum_Baz, [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot repeatedForeignEnumExtension]];
XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz, [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot repeatedImportEnumExtension]];
XCTAssertEqual((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz, [extension[i] intValue]);
string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
extension = [message getExtension:[UnittestRoot repeatedStringPieceExtension]];
XCTAssertEqualObjects(string, extension[i]);
[string release];
string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
extension = [message getExtension:[UnittestRoot repeatedCordExtension]];
XCTAssertEqualObjects(string, extension[i]);
[string release];
}
// -----------------------------------------------------------------
XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultInt64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultUint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSint64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed32Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultSfixed64Extension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultFloatExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultBoolExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultBytesExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultNestedEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultForeignEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultImportEnumExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultStringPieceExtension]]);
XCTAssertTrue([message hasExtension:[UnittestRoot defaultCordExtension]]);
XCTAssertEqual(401, [[message getExtension:[UnittestRoot defaultInt32Extension]] intValue]);
XCTAssertEqual(402LL, [[message getExtension:[UnittestRoot defaultInt64Extension]] longLongValue]);
XCTAssertEqual(403U, [[message getExtension:[UnittestRoot defaultUint32Extension]] unsignedIntValue]);
XCTAssertEqual(404ULL, [[message getExtension:[UnittestRoot defaultUint64Extension]] unsignedLongLongValue]);
XCTAssertEqual(405, [[message getExtension:[UnittestRoot defaultSint32Extension]] intValue]);
XCTAssertEqual(406LL, [[message getExtension:[UnittestRoot defaultSint64Extension]] longLongValue]);
XCTAssertEqual(407U, [[message getExtension:[UnittestRoot defaultFixed32Extension]] unsignedIntValue]);
XCTAssertEqual(408ULL, [[message getExtension:[UnittestRoot defaultFixed64Extension]] unsignedLongLongValue]);
XCTAssertEqual(409, [[message getExtension:[UnittestRoot defaultSfixed32Extension]] intValue]);
XCTAssertEqual(410LL,[[message getExtension:[UnittestRoot defaultSfixed64Extension]] longLongValue]);
XCTAssertEqualWithAccuracy(411.0f, [[message getExtension:[UnittestRoot defaultFloatExtension]] floatValue], 0.01);
XCTAssertEqualWithAccuracy(412.0, [[message getExtension:[UnittestRoot defaultDoubleExtension]] doubleValue], 0.01);
XCTAssertFalse([[message getExtension:[UnittestRoot defaultBoolExtension]] boolValue]);
XCTAssertEqualObjects(@"415", [message getExtension:[UnittestRoot defaultStringExtension]]);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:416], [message getExtension:[UnittestRoot defaultBytesExtension]]);
XCTAssertEqual(TestAllTypes_NestedEnum_Foo, [[message getExtension:[UnittestRoot defaultNestedEnumExtension]] intValue]);
XCTAssertEqual(ForeignEnum_ForeignFoo, [[message getExtension:[UnittestRoot defaultForeignEnumExtension]] intValue]);
XCTAssertEqual(ImportEnum_ImportFoo, [[message getExtension:[UnittestRoot defaultImportEnumExtension]] intValue]);
XCTAssertEqualObjects(@"424", [message getExtension:[UnittestRoot defaultStringPieceExtension]]);
XCTAssertEqualObjects(@"425", [message getExtension:[UnittestRoot defaultCordExtension]]);
}
- (void)assertRepeatedExtensionsModified:(TestAllExtensions *)message
repeatedCount:(uint32_t)count {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedInt64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedUint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedSfixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedFloatExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedDoubleExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBoolExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedBytesExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedGroupExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportMessageExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedNestedEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedForeignEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedImportEnumExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedStringPieceExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot repeatedCordExtension]] count]);
XCTAssertEqual(201,[[message getExtension:[UnittestRoot repeatedInt32Extension]][0] intValue]);
XCTAssertEqual(202LL, [[message getExtension:[UnittestRoot repeatedInt64Extension]][0] longLongValue]);
XCTAssertEqual(203U, [[message getExtension:[UnittestRoot repeatedUint32Extension]][0] unsignedIntValue]);
XCTAssertEqual(204ULL, [[message getExtension:[UnittestRoot repeatedUint64Extension]][0] unsignedLongLongValue]);
XCTAssertEqual(205, [[message getExtension:[UnittestRoot repeatedSint32Extension]][0] intValue]);
XCTAssertEqual(206LL, [[message getExtension:[UnittestRoot repeatedSint64Extension]][0] longLongValue]);
XCTAssertEqual(207U, [[message getExtension:[UnittestRoot repeatedFixed32Extension]][0] unsignedIntValue]);
XCTAssertEqual(208ULL, [[message getExtension:[UnittestRoot repeatedFixed64Extension]][0] unsignedLongLongValue]);
XCTAssertEqual(209, [[message getExtension:[UnittestRoot repeatedSfixed32Extension]][0] intValue]);
XCTAssertEqual(210LL, [[message getExtension:[UnittestRoot repeatedSfixed64Extension]][0] longLongValue]);
XCTAssertEqualWithAccuracy(211.0f, [[message getExtension:[UnittestRoot repeatedFloatExtension]][0] floatValue], 0.01);
XCTAssertEqualWithAccuracy(212.0, [[message getExtension:[UnittestRoot repeatedDoubleExtension]][0] doubleValue], 0.01);
XCTAssertFalse([[message getExtension:[UnittestRoot repeatedBoolExtension]][0] boolValue]);
XCTAssertEqualObjects(@"215", [message getExtension:[UnittestRoot repeatedStringExtension]][0]);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:216], [message getExtension:[UnittestRoot repeatedBytesExtension]][0]);
XCTAssertEqual(217, [(TestAllTypes_OptionalGroup*)[message getExtension:[UnittestRoot repeatedGroupExtension]][0] a]);
XCTAssertEqual(218, [(TestAllTypes_NestedMessage*)[message getExtension:[UnittestRoot repeatedNestedMessageExtension]][0] bb]);
XCTAssertEqual(219, [[message getExtension:[UnittestRoot repeatedForeignMessageExtension]][0] c]);
XCTAssertEqual(220, [[message getExtension:[UnittestRoot repeatedImportMessageExtension]][0] d]);
XCTAssertEqual(TestAllTypes_NestedEnum_Baz,
[[message getExtension:[UnittestRoot repeatedNestedEnumExtension]][0] intValue]);
XCTAssertEqual(ForeignEnum_ForeignBaz,
[[message getExtension:[UnittestRoot repeatedForeignEnumExtension]][0] intValue]);
XCTAssertEqual(ImportEnum_ImportBaz,
[[message getExtension:[UnittestRoot repeatedImportEnumExtension]][0] intValue]);
XCTAssertEqualObjects(@"224", [message getExtension:[UnittestRoot repeatedStringPieceExtension]][0]);
XCTAssertEqualObjects(@"225", [message getExtension:[UnittestRoot repeatedCordExtension]][0]);
// Actually verify the second (modified) elements now.
XCTAssertEqual(501, [[message getExtension:[UnittestRoot repeatedInt32Extension]][1] intValue]);
XCTAssertEqual(502LL, [[message getExtension:[UnittestRoot repeatedInt64Extension]][1] longLongValue]);
XCTAssertEqual(503U, [[message getExtension:[UnittestRoot repeatedUint32Extension]][1] unsignedIntValue]);
XCTAssertEqual(504ULL, [[message getExtension:[UnittestRoot repeatedUint64Extension]][1] unsignedLongLongValue]);
XCTAssertEqual(505, [[message getExtension:[UnittestRoot repeatedSint32Extension]][1] intValue]);
XCTAssertEqual(506LL, [[message getExtension:[UnittestRoot repeatedSint64Extension]][1] longLongValue]);
XCTAssertEqual(507U, [[message getExtension:[UnittestRoot repeatedFixed32Extension]][1] unsignedIntValue]);
XCTAssertEqual(508ULL, [[message getExtension:[UnittestRoot repeatedFixed64Extension]][1] unsignedLongLongValue]);
XCTAssertEqual(509, [[message getExtension:[UnittestRoot repeatedSfixed32Extension]][1] intValue]);
XCTAssertEqual(510LL, [[message getExtension:[UnittestRoot repeatedSfixed64Extension]][1] longLongValue]);
XCTAssertEqualWithAccuracy(511.0f, [[message getExtension:[UnittestRoot repeatedFloatExtension]][1] floatValue], 0.01);
XCTAssertEqualWithAccuracy(512.0, [[message getExtension:[UnittestRoot repeatedDoubleExtension]][1] doubleValue], 0.01);
XCTAssertTrue([[message getExtension:[UnittestRoot repeatedBoolExtension]][1] boolValue]);
XCTAssertEqualObjects(@"515", [message getExtension:[UnittestRoot repeatedStringExtension]][1]);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:516], [message getExtension:[UnittestRoot repeatedBytesExtension]][1]);
XCTAssertEqual(517, [(TestAllTypes_OptionalGroup*)[message getExtension:[UnittestRoot repeatedGroupExtension]][1] a]);
XCTAssertEqual(518, [(TestAllTypes_NestedMessage*)[message getExtension:[UnittestRoot repeatedNestedMessageExtension]][1] bb]);
XCTAssertEqual(519, [[message getExtension:[UnittestRoot repeatedForeignMessageExtension]][1] c]);
XCTAssertEqual(520, [[message getExtension:[UnittestRoot repeatedImportMessageExtension]][1] d]);
XCTAssertEqual(TestAllTypes_NestedEnum_Foo,
[[message getExtension:[UnittestRoot repeatedNestedEnumExtension]][1] intValue]);
XCTAssertEqual(ForeignEnum_ForeignFoo,
[[message getExtension:[UnittestRoot repeatedForeignEnumExtension]][1] intValue]);
XCTAssertEqual(ImportEnum_ImportFoo,
[[message getExtension:[UnittestRoot repeatedImportEnumExtension]][1] intValue]);
XCTAssertEqualObjects(@"524", [message getExtension:[UnittestRoot repeatedStringPieceExtension]][1]);
XCTAssertEqualObjects(@"525", [message getExtension:[UnittestRoot repeatedCordExtension]][1]);
}
// -------------------------------------------------------------------
- (void)assertAllFieldsSet:(TestAllTypes *)message
repeatedCount:(uint32_t)count {
XCTAssertTrue(message.hasOptionalInt32);
XCTAssertTrue(message.hasOptionalInt64);
XCTAssertTrue(message.hasOptionalUint32);
XCTAssertTrue(message.hasOptionalUint64);
XCTAssertTrue(message.hasOptionalSint32);
XCTAssertTrue(message.hasOptionalSint64);
XCTAssertTrue(message.hasOptionalFixed32);
XCTAssertTrue(message.hasOptionalFixed64);
XCTAssertTrue(message.hasOptionalSfixed32);
XCTAssertTrue(message.hasOptionalSfixed64);
XCTAssertTrue(message.hasOptionalFloat);
XCTAssertTrue(message.hasOptionalDouble);
XCTAssertTrue(message.hasOptionalBool);
XCTAssertTrue(message.hasOptionalString);
XCTAssertTrue(message.hasOptionalBytes);
XCTAssertTrue(message.hasOptionalGroup);
XCTAssertTrue(message.hasOptionalNestedMessage);
XCTAssertTrue(message.hasOptionalForeignMessage);
XCTAssertTrue(message.hasOptionalImportMessage);
XCTAssertTrue(message.optionalGroup.hasA);
XCTAssertTrue(message.optionalNestedMessage.hasBb);
XCTAssertTrue(message.optionalForeignMessage.hasC);
XCTAssertTrue(message.optionalImportMessage.hasD);
XCTAssertTrue(message.hasOptionalNestedEnum);
XCTAssertTrue(message.hasOptionalForeignEnum);
XCTAssertTrue(message.hasOptionalImportEnum);
XCTAssertTrue(message.hasOptionalStringPiece);
XCTAssertTrue(message.hasOptionalCord);
XCTAssertEqual(101, message.optionalInt32);
XCTAssertEqual(102LL, message.optionalInt64);
XCTAssertEqual(103U, message.optionalUint32);
XCTAssertEqual(104ULL, message.optionalUint64);
XCTAssertEqual(105, message.optionalSint32);
XCTAssertEqual(106LL, message.optionalSint64);
XCTAssertEqual(107U, message.optionalFixed32);
XCTAssertEqual(108ULL, message.optionalFixed64);
XCTAssertEqual(109, message.optionalSfixed32);
XCTAssertEqual(110LL, message.optionalSfixed64);
XCTAssertEqualWithAccuracy(111.0f, message.optionalFloat, 0.1);
XCTAssertEqualWithAccuracy(112.0, message.optionalDouble, 0.1);
XCTAssertTrue(message.optionalBool);
XCTAssertEqualObjects(@"115", message.optionalString);
XCTAssertEqualObjects([NSData gpbtu_dataWithEmbeddedNulls],
message.optionalBytes);
XCTAssertEqual(117, message.optionalGroup.a);
XCTAssertEqual(118, message.optionalNestedMessage.bb);
XCTAssertEqual(119, message.optionalForeignMessage.c);
XCTAssertEqual(120, message.optionalImportMessage.d);
XCTAssertEqual(TestAllTypes_NestedEnum_Baz, message.optionalNestedEnum);
XCTAssertEqual(ForeignEnum_ForeignBaz, message.optionalForeignEnum);
XCTAssertEqual(ImportEnum_ImportBaz, message.optionalImportEnum);
XCTAssertEqualObjects(@"124", message.optionalStringPiece);
XCTAssertEqualObjects(@"125", message.optionalCord);
// -----------------------------------------------------------------
XCTAssertEqual(count, message.repeatedInt32Array.count);
XCTAssertEqual(count, message.repeatedInt64Array.count);
XCTAssertEqual(count, message.repeatedUint32Array.count);
XCTAssertEqual(count, message.repeatedUint64Array.count);
XCTAssertEqual(count, message.repeatedSint32Array.count);
XCTAssertEqual(count, message.repeatedSint64Array.count);
XCTAssertEqual(count, message.repeatedFixed32Array.count);
XCTAssertEqual(count, message.repeatedFixed64Array.count);
XCTAssertEqual(count, message.repeatedSfixed32Array.count);
XCTAssertEqual(count, message.repeatedSfixed64Array.count);
XCTAssertEqual(count, message.repeatedFloatArray.count);
XCTAssertEqual(count, message.repeatedDoubleArray.count);
XCTAssertEqual(count, message.repeatedBoolArray.count);
XCTAssertEqual(count, message.repeatedStringArray.count);
XCTAssertEqual(count, message.repeatedBytesArray.count);
XCTAssertEqual(count, message.repeatedGroupArray.count);
XCTAssertEqual(count, message.repeatedNestedMessageArray.count);
XCTAssertEqual(count, message.repeatedForeignMessageArray.count);
XCTAssertEqual(count, message.repeatedImportMessageArray.count);
XCTAssertEqual(count, message.repeatedNestedEnumArray.count);
XCTAssertEqual(count, message.repeatedForeignEnumArray.count);
XCTAssertEqual(count, message.repeatedImportEnumArray.count);
XCTAssertEqual(count, message.repeatedStringPieceArray.count);
XCTAssertEqual(count, message.repeatedCordArray.count);
XCTAssertEqual(count, message.repeatedInt32Array_Count);
XCTAssertEqual(count, message.repeatedInt64Array_Count);
XCTAssertEqual(count, message.repeatedUint32Array_Count);
XCTAssertEqual(count, message.repeatedUint64Array_Count);
XCTAssertEqual(count, message.repeatedSint32Array_Count);
XCTAssertEqual(count, message.repeatedSint64Array_Count);
XCTAssertEqual(count, message.repeatedFixed32Array_Count);
XCTAssertEqual(count, message.repeatedFixed64Array_Count);
XCTAssertEqual(count, message.repeatedSfixed32Array_Count);
XCTAssertEqual(count, message.repeatedSfixed64Array_Count);
XCTAssertEqual(count, message.repeatedFloatArray_Count);
XCTAssertEqual(count, message.repeatedDoubleArray_Count);
XCTAssertEqual(count, message.repeatedBoolArray_Count);
XCTAssertEqual(count, message.repeatedStringArray_Count);
XCTAssertEqual(count, message.repeatedBytesArray_Count);
XCTAssertEqual(count, message.repeatedGroupArray_Count);
XCTAssertEqual(count, message.repeatedNestedMessageArray_Count);
XCTAssertEqual(count, message.repeatedForeignMessageArray_Count);
XCTAssertEqual(count, message.repeatedImportMessageArray_Count);
XCTAssertEqual(count, message.repeatedNestedEnumArray_Count);
XCTAssertEqual(count, message.repeatedForeignEnumArray_Count);
XCTAssertEqual(count, message.repeatedImportEnumArray_Count);
XCTAssertEqual(count, message.repeatedStringPieceArray_Count);
XCTAssertEqual(count, message.repeatedCordArray_Count);
for (uint32_t i = 0; i < count; ++i) {
XCTAssertEqual((int)(201 + i * 100),
[message.repeatedInt32Array valueAtIndex:i]);
XCTAssertEqual(202 + i * 100, [message.repeatedInt64Array valueAtIndex:i]);
XCTAssertEqual(203 + i * 100, [message.repeatedUint32Array valueAtIndex:i]);
XCTAssertEqual(204 + i * 100, [message.repeatedUint64Array valueAtIndex:i]);
XCTAssertEqual((int)(205 + i * 100),
[message.repeatedSint32Array valueAtIndex:i]);
XCTAssertEqual(206 + i * 100, [message.repeatedSint64Array valueAtIndex:i]);
XCTAssertEqual(207 + i * 100,
[message.repeatedFixed32Array valueAtIndex:i]);
XCTAssertEqual(208 + i * 100,
[message.repeatedFixed64Array valueAtIndex:i]);
XCTAssertEqual((int)(209 + i * 100),
[message.repeatedSfixed32Array valueAtIndex:i]);
XCTAssertEqual(210 + i * 100,
[message.repeatedSfixed64Array valueAtIndex:i]);
XCTAssertEqualWithAccuracy(
211 + i * 100, [message.repeatedFloatArray valueAtIndex:i], 0.1);
XCTAssertEqualWithAccuracy(
212 + i * 100, [message.repeatedDoubleArray valueAtIndex:i], 0.1);
XCTAssertEqual((i % 2) ? YES : NO,
[message.repeatedBoolArray valueAtIndex:i]);
NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
XCTAssertEqualObjects(string, message.repeatedStringArray[i]);
[string release];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
XCTAssertEqualObjects(data, message.repeatedBytesArray[i]);
[data release];
XCTAssertEqual((int)(217 + i * 100), ((TestAllTypes_RepeatedGroup*)message.repeatedGroupArray[i]).a);
XCTAssertEqual((int)(218 + i * 100), ((TestAllTypes_NestedMessage*)message.repeatedNestedMessageArray[i]).bb);
XCTAssertEqual((int)(219 + i * 100), ((ForeignMessage*)message.repeatedForeignMessageArray[i]).c);
XCTAssertEqual((int)(220 + i * 100), ((ImportMessage*)message.repeatedImportMessageArray[i]).d);
XCTAssertEqual((i % 2) ? TestAllTypes_NestedEnum_Bar : TestAllTypes_NestedEnum_Baz, [message.repeatedNestedEnumArray valueAtIndex:i]);
XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz, [message.repeatedForeignEnumArray valueAtIndex:i]);
XCTAssertEqual((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz, [message.repeatedImportEnumArray valueAtIndex:i]);
string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
XCTAssertEqualObjects(string, message.repeatedStringPieceArray[i]);
[string release];
string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
XCTAssertEqualObjects(string, message.repeatedCordArray[i]);
[string release];
}
// -----------------------------------------------------------------
XCTAssertTrue(message.hasDefaultInt32);
XCTAssertTrue(message.hasDefaultInt64);
XCTAssertTrue(message.hasDefaultUint32);
XCTAssertTrue(message.hasDefaultUint64);
XCTAssertTrue(message.hasDefaultSint32);
XCTAssertTrue(message.hasDefaultSint64);
XCTAssertTrue(message.hasDefaultFixed32);
XCTAssertTrue(message.hasDefaultFixed64);
XCTAssertTrue(message.hasDefaultSfixed32);
XCTAssertTrue(message.hasDefaultSfixed64);
XCTAssertTrue(message.hasDefaultFloat);
XCTAssertTrue(message.hasDefaultDouble);
XCTAssertTrue(message.hasDefaultBool);
XCTAssertTrue(message.hasDefaultString);
XCTAssertTrue(message.hasDefaultBytes);
XCTAssertTrue(message.hasDefaultNestedEnum);
XCTAssertTrue(message.hasDefaultForeignEnum);
XCTAssertTrue(message.hasDefaultImportEnum);
XCTAssertTrue(message.hasDefaultStringPiece);
XCTAssertTrue(message.hasDefaultCord);
XCTAssertEqual(401, message.defaultInt32);
XCTAssertEqual(402LL, message.defaultInt64);
XCTAssertEqual(403U, message.defaultUint32);
XCTAssertEqual(404ULL, message.defaultUint64);
XCTAssertEqual(405, message.defaultSint32);
XCTAssertEqual(406LL, message.defaultSint64);
XCTAssertEqual(407U, message.defaultFixed32);
XCTAssertEqual(408ULL, message.defaultFixed64);
XCTAssertEqual(409, message.defaultSfixed32);
XCTAssertEqual(410LL, message.defaultSfixed64);
XCTAssertEqualWithAccuracy(411.0f, message.defaultFloat, 0.1);
XCTAssertEqualWithAccuracy(412.0, message.defaultDouble, 0.1);
XCTAssertFalse(message.defaultBool);
XCTAssertEqualObjects(@"415", message.defaultString);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:416],
message.defaultBytes);
XCTAssertEqual(TestAllTypes_NestedEnum_Foo, message.defaultNestedEnum);
XCTAssertEqual(ForeignEnum_ForeignFoo, message.defaultForeignEnum);
XCTAssertEqual(ImportEnum_ImportFoo, message.defaultImportEnum);
XCTAssertEqualObjects(@"424", message.defaultStringPiece);
XCTAssertEqualObjects(@"425", message.defaultCord);
}
- (void)setAllFields:(TestAllTypes *)message repeatedCount:(uint32_t)count {
[message setOptionalInt32:101];
[message setOptionalInt64:102];
[message setOptionalUint32:103];
[message setOptionalUint64:104];
[message setOptionalSint32:105];
[message setOptionalSint64:106];
[message setOptionalFixed32:107];
[message setOptionalFixed64:108];
[message setOptionalSfixed32:109];
[message setOptionalSfixed64:110];
[message setOptionalFloat:111];
[message setOptionalDouble:112];
[message setOptionalBool:YES];
[message setOptionalString:@"115"];
[message setOptionalBytes:[NSData gpbtu_dataWithEmbeddedNulls]];
TestAllTypes_OptionalGroup *allTypes = [TestAllTypes_OptionalGroup message];
[allTypes setA:117];
[message setOptionalGroup:allTypes];
TestAllTypes_NestedMessage *nestedMessage =
[TestAllTypes_NestedMessage message];
[nestedMessage setBb:118];
[message setOptionalNestedMessage:nestedMessage];
ForeignMessage *foreignMessage = [ForeignMessage message];
[foreignMessage setC:119];
[message setOptionalForeignMessage:foreignMessage];
ImportMessage *importMessage = [ImportMessage message];
[importMessage setD:120];
[message setOptionalImportMessage:importMessage];
[message setOptionalNestedEnum:TestAllTypes_NestedEnum_Baz];
[message setOptionalForeignEnum:ForeignEnum_ForeignBaz];
[message setOptionalImportEnum:ImportEnum_ImportBaz];
[message setOptionalStringPiece:@"124"];
[message setOptionalCord:@"125"];
// -----------------------------------------------------------------
for (uint32_t i = 0; i < count; i++) {
[message.repeatedInt32Array addValue:201 + i * 100];
[message.repeatedInt64Array addValue:202 + i * 100];
[message.repeatedUint32Array addValue:203 + i * 100];
[message.repeatedUint64Array addValue:204 + i * 100];
[message.repeatedSint32Array addValue:205 + i * 100];
[message.repeatedSint64Array addValue:206 + i * 100];
[message.repeatedFixed32Array addValue:207 + i * 100];
[message.repeatedFixed64Array addValue:208 + i * 100];
[message.repeatedSfixed32Array addValue:209 + i * 100];
[message.repeatedSfixed64Array addValue:210 + i * 100];
[message.repeatedFloatArray addValue:211 + i * 100];
[message.repeatedDoubleArray addValue:212 + i * 100];
[message.repeatedBoolArray addValue:(i % 2)];
NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
[message.repeatedStringArray addObject:string];
[string release];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
[message.repeatedBytesArray addObject:data];
[data release];
TestAllTypes_RepeatedGroup *testAll =
[[TestAllTypes_RepeatedGroup alloc] init];
[testAll setA:217 + i * 100];
[message.repeatedGroupArray addObject:testAll];
[testAll release];
nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
[nestedMessage setBb:218 + i * 100];
[message.repeatedNestedMessageArray addObject:nestedMessage];
[nestedMessage release];
foreignMessage = [[ForeignMessage alloc] init];
[foreignMessage setC:219 + i * 100];
[message.repeatedForeignMessageArray addObject:foreignMessage];
[foreignMessage release];
importMessage = [[ImportMessage alloc] init];
[importMessage setD:220 + i * 100];
[message.repeatedImportMessageArray addObject:importMessage];
[importMessage release];
[message.repeatedNestedEnumArray addValue:(i % 2) ? TestAllTypes_NestedEnum_Bar : TestAllTypes_NestedEnum_Baz];
[message.repeatedForeignEnumArray addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
[message.repeatedImportEnumArray addValue:(i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz];
string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
[message.repeatedStringPieceArray addObject:string];
[string release];
string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
[message.repeatedCordArray addObject:string];
[string release];
}
// -----------------------------------------------------------------
message.defaultInt32 = 401;
message.defaultInt64 = 402;
message.defaultUint32 = 403;
message.defaultUint64 = 404;
message.defaultSint32 = 405;
message.defaultSint64 = 406;
message.defaultFixed32 = 407;
message.defaultFixed64 = 408;
message.defaultSfixed32 = 409;
message.defaultSfixed64 = 410;
message.defaultFloat = 411;
message.defaultDouble = 412;
message.defaultBool = NO;
message.defaultString = @"415";
message.defaultBytes = [NSData gpbtu_dataWithUint32:416];
message.defaultNestedEnum = TestAllTypes_NestedEnum_Foo;
message.defaultForeignEnum = ForeignEnum_ForeignFoo;
message.defaultImportEnum = ImportEnum_ImportFoo;
message.defaultStringPiece = @"424";
message.defaultCord = @"425";
}
- (void)clearAllFields:(TestAllTypes *)message {
message.hasOptionalInt32 = NO;
message.hasOptionalInt64 = NO;
message.hasOptionalUint32 = NO;
message.hasOptionalUint64 = NO;
message.hasOptionalSint32 = NO;
message.hasOptionalSint64 = NO;
message.hasOptionalFixed32 = NO;
message.hasOptionalFixed64 = NO;
message.hasOptionalSfixed32 = NO;
message.hasOptionalSfixed64 = NO;
message.hasOptionalFloat = NO;
message.hasOptionalDouble = NO;
message.hasOptionalBool = NO;
message.hasOptionalString = NO;
message.hasOptionalBytes = NO;
message.hasOptionalGroup = NO;
message.hasOptionalNestedMessage = NO;
message.hasOptionalForeignMessage = NO;
message.hasOptionalImportMessage = NO;
message.hasOptionalNestedEnum = NO;
message.hasOptionalForeignEnum = NO;
message.hasOptionalImportEnum = NO;
message.hasOptionalStringPiece = NO;
message.hasOptionalCord = NO;
// -----------------------------------------------------------------
[message.repeatedInt32Array removeAll];
[message.repeatedInt64Array removeAll];
[message.repeatedUint32Array removeAll];
[message.repeatedUint64Array removeAll];
[message.repeatedSint32Array removeAll];
[message.repeatedSint64Array removeAll];
[message.repeatedFixed32Array removeAll];
[message.repeatedFixed64Array removeAll];
[message.repeatedSfixed32Array removeAll];
[message.repeatedSfixed64Array removeAll];
[message.repeatedFloatArray removeAll];
[message.repeatedDoubleArray removeAll];
[message.repeatedBoolArray removeAll];
[message.repeatedStringArray removeAllObjects];
[message.repeatedBytesArray removeAllObjects];
[message.repeatedGroupArray removeAllObjects];
[message.repeatedNestedMessageArray removeAllObjects];
[message.repeatedForeignMessageArray removeAllObjects];
[message.repeatedImportMessageArray removeAllObjects];
[message.repeatedNestedEnumArray removeAll];
[message.repeatedForeignEnumArray removeAll];
[message.repeatedImportEnumArray removeAll];
[message.repeatedStringPieceArray removeAllObjects];
[message.repeatedCordArray removeAllObjects];
// -----------------------------------------------------------------
message.hasDefaultInt32 = NO;
message.hasDefaultInt64 = NO;
message.hasDefaultUint32 = NO;
message.hasDefaultUint64 = NO;
message.hasDefaultSint32 = NO;
message.hasDefaultSint64 = NO;
message.hasDefaultFixed32 = NO;
message.hasDefaultFixed64 = NO;
message.hasDefaultSfixed32 = NO;
message.hasDefaultSfixed64 = NO;
message.hasDefaultFloat = NO;
message.hasDefaultDouble = NO;
message.hasDefaultBool = NO;
message.hasDefaultString = NO;
message.hasDefaultBytes = NO;
message.hasDefaultNestedEnum = NO;
message.hasDefaultForeignEnum = NO;
message.hasDefaultImportEnum = NO;
message.hasDefaultStringPiece = NO;
message.hasDefaultCord = NO;
}
- (void)setAllExtensions:(TestAllExtensions *)message
repeatedCount:(uint32_t)count {
[message setExtension:[UnittestRoot optionalInt32Extension] value:@101];
[message setExtension:[UnittestRoot optionalInt64Extension] value:@102L];
[message setExtension:[UnittestRoot optionalUint32Extension] value:@103];
[message setExtension:[UnittestRoot optionalUint64Extension] value:@104L];
[message setExtension:[UnittestRoot optionalSint32Extension] value:@105];
[message setExtension:[UnittestRoot optionalSint64Extension] value:@106L];
[message setExtension:[UnittestRoot optionalFixed32Extension] value:@107];
[message setExtension:[UnittestRoot optionalFixed64Extension] value:@108L];
[message setExtension:[UnittestRoot optionalSfixed32Extension] value:@109];
[message setExtension:[UnittestRoot optionalSfixed64Extension] value:@110L];
[message setExtension:[UnittestRoot optionalFloatExtension] value:@111.0f];
[message setExtension:[UnittestRoot optionalDoubleExtension] value:@112.0];
[message setExtension:[UnittestRoot optionalBoolExtension] value:@YES];
[message setExtension:[UnittestRoot optionalStringExtension] value:@"115"];
[message setExtension:[UnittestRoot optionalBytesExtension]
value:[NSData gpbtu_dataWithEmbeddedNulls]];
OptionalGroup_extension *optionalGroup = [OptionalGroup_extension message];
[optionalGroup setA:117];
[message setExtension:[UnittestRoot optionalGroupExtension]
value:optionalGroup];
TestAllTypes_NestedMessage *nestedMessage =
[TestAllTypes_NestedMessage message];
[nestedMessage setBb:118];
[message setExtension:[UnittestRoot optionalNestedMessageExtension]
value:nestedMessage];
ForeignMessage *foreignMessage = [ForeignMessage message];
[foreignMessage setC:119];
[message setExtension:[UnittestRoot optionalForeignMessageExtension]
value:foreignMessage];
ImportMessage *importMessage = [ImportMessage message];
[importMessage setD:120];
[message setExtension:[UnittestRoot optionalImportMessageExtension]
value:importMessage];
[message setExtension:[UnittestRoot optionalNestedEnumExtension]
value:@(TestAllTypes_NestedEnum_Baz)];
[message setExtension:[UnittestRoot optionalForeignEnumExtension]
value:@(ForeignEnum_ForeignBaz)];
[message setExtension:[UnittestRoot optionalImportEnumExtension]
value:@(ImportEnum_ImportBaz)];
[message setExtension:[UnittestRoot optionalStringPieceExtension]
value:@"124"];
[message setExtension:[UnittestRoot optionalCordExtension] value:@"125"];
for (uint32_t i = 0; i < count; ++i) {
[message addExtension:[UnittestRoot repeatedInt32Extension]
value:@(201 + i * 100)];
[message addExtension:[UnittestRoot repeatedInt64Extension]
value:@(202 + i * 100)];
[message addExtension:[UnittestRoot repeatedUint32Extension]
value:@(203 + i * 100)];
[message addExtension:[UnittestRoot repeatedUint64Extension]
value:@(204 + i * 100)];
[message addExtension:[UnittestRoot repeatedSint32Extension]
value:@(205 + i * 100)];
[message addExtension:[UnittestRoot repeatedSint64Extension]
value:@(206 + i * 100)];
[message addExtension:[UnittestRoot repeatedFixed32Extension]
value:@(207 + i * 100)];
[message addExtension:[UnittestRoot repeatedFixed64Extension]
value:@(208 + i * 100)];
[message addExtension:[UnittestRoot repeatedSfixed32Extension]
value:@(209 + i * 100)];
[message addExtension:[UnittestRoot repeatedSfixed64Extension]
value:@(210 + i * 100)];
[message addExtension:[UnittestRoot repeatedFloatExtension]
value:@(211 + i * 100)];
[message addExtension:[UnittestRoot repeatedDoubleExtension]
value:@(212 + i * 100)];
[message addExtension:[UnittestRoot repeatedBoolExtension]
value:@((i % 2) ? YES : NO)];
NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
[message addExtension:[UnittestRoot repeatedStringExtension] value:string];
[string release];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
[message addExtension:[UnittestRoot repeatedBytesExtension] value:data];
[data release];
RepeatedGroup_extension *repeatedGroup =
[[RepeatedGroup_extension alloc] init];
[repeatedGroup setA:217 + i * 100];
[message addExtension:[UnittestRoot repeatedGroupExtension]
value:repeatedGroup];
[repeatedGroup release];
nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
[nestedMessage setBb:218 + i * 100];
[message addExtension:[UnittestRoot repeatedNestedMessageExtension]
value:nestedMessage];
[nestedMessage release];
foreignMessage = [[ForeignMessage alloc] init];
[foreignMessage setC:219 + i * 100];
[message addExtension:[UnittestRoot repeatedForeignMessageExtension]
value:foreignMessage];
[foreignMessage release];
importMessage = [[ImportMessage alloc] init];
[importMessage setD:220 + i * 100];
[message addExtension:[UnittestRoot repeatedImportMessageExtension]
value:importMessage];
[importMessage release];
[message addExtension:[UnittestRoot repeatedNestedEnumExtension]
value:@((i % 2) ? TestAllTypes_NestedEnum_Bar
: TestAllTypes_NestedEnum_Baz)];
[message addExtension:[UnittestRoot repeatedForeignEnumExtension]
value:@((i % 2) ? ForeignEnum_ForeignBar
: ForeignEnum_ForeignBaz)];
[message
addExtension:[UnittestRoot repeatedImportEnumExtension]
value:@((i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz)];
string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
[message addExtension:[UnittestRoot repeatedStringPieceExtension]
value:string];
[string release];
string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
[message addExtension:[UnittestRoot repeatedCordExtension] value:string];
[string release];
}
// -----------------------------------------------------------------
[message setExtension:[UnittestRoot defaultInt32Extension] value:@401];
[message setExtension:[UnittestRoot defaultInt64Extension] value:@402L];
[message setExtension:[UnittestRoot defaultUint32Extension] value:@403];
[message setExtension:[UnittestRoot defaultUint64Extension] value:@404L];
[message setExtension:[UnittestRoot defaultSint32Extension] value:@405];
[message setExtension:[UnittestRoot defaultSint64Extension] value:@406L];
[message setExtension:[UnittestRoot defaultFixed32Extension] value:@407];
[message setExtension:[UnittestRoot defaultFixed64Extension] value:@408L];
[message setExtension:[UnittestRoot defaultSfixed32Extension] value:@409];
[message setExtension:[UnittestRoot defaultSfixed64Extension] value:@410L];
[message setExtension:[UnittestRoot defaultFloatExtension] value:@411.0f];
[message setExtension:[UnittestRoot defaultDoubleExtension] value:@412.0];
[message setExtension:[UnittestRoot defaultBoolExtension] value:@NO];
[message setExtension:[UnittestRoot defaultStringExtension] value:@"415"];
[message setExtension:[UnittestRoot defaultBytesExtension]
value:[NSData gpbtu_dataWithUint32:416]];
[message setExtension:[UnittestRoot defaultNestedEnumExtension]
value:@(TestAllTypes_NestedEnum_Foo)];
[message setExtension:[UnittestRoot defaultForeignEnumExtension]
value:@(ForeignEnum_ForeignFoo)];
[message setExtension:[UnittestRoot defaultImportEnumExtension]
value:@(ImportEnum_ImportFoo)];
[message setExtension:[UnittestRoot defaultStringPieceExtension]
value:@"424"];
[message setExtension:[UnittestRoot defaultCordExtension] value:@"425"];
}
- (void)setAllMapFields:(TestMap *)message numEntries:(uint32_t)count {
for (uint32_t i = 0; i < count; i++) {
[message.mapInt32Int32 setValue:(i + 1) forKey:100 + i * 100];
[message.mapInt64Int64 setValue:(i + 1) forKey:101 + i * 100];
[message.mapUint32Uint32 setValue:(i + 1) forKey:102 + i * 100];
[message.mapUint64Uint64 setValue:(i + 1) forKey:103 + i * 100];
[message.mapSint32Sint32 setValue:(i + 1) forKey:104 + i * 100];
[message.mapSint64Sint64 setValue:(i + 1) forKey:105 + i * 100];
[message.mapFixed32Fixed32 setValue:(i + 1) forKey:106 + i * 100];
[message.mapFixed64Fixed64 setValue:(i + 1) forKey:107 + i * 100];
[message.mapSfixed32Sfixed32 setValue:(i + 1) forKey:108 + i * 100];
[message.mapSfixed64Sfixed64 setValue:(i + 1) forKey:109 + i * 100];
[message.mapInt32Float setValue:(i + 1) forKey:110 + i * 100];
[message.mapInt32Double setValue:(i + 1) forKey:111 + i * 100];
[message.mapBoolBool setValue:((i % 2) == 1) forKey:((i % 2) == 0)];
NSString *keyStr = [[NSString alloc] initWithFormat:@"%d", 112 + i * 100];
NSString *dataStr = [[NSString alloc] initWithFormat:@"%d", i + 1];
[message.mapStringString setObject:dataStr forKey:keyStr];
[keyStr release];
[dataStr release];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:i + 1];
[message.mapInt32Bytes setObject:data forKey:113 + i * 100];
[data release];
[message.mapInt32Enum
setValue:(i % 2) ? MapEnum_MapEnumBar : MapEnum_MapEnumBaz
forKey:114 + i * 100];
ForeignMessage *subMsg = [[ForeignMessage alloc] init];
subMsg.c = i + 1;
[message.mapInt32ForeignMessage setObject:subMsg forKey:115 + i * 100];
[subMsg release];
}
}
- (void)setAllTestPackedFields:(TestPackedTypes *)message {
// Must match -setAllTestUnpackedFields:
[message.packedInt32Array addValue:101];
[message.packedInt64Array addValue:102];
[message.packedUint32Array addValue:103];
[message.packedUint64Array addValue:104];
[message.packedSint32Array addValue:105];
[message.packedSint64Array addValue:106];
[message.packedFixed32Array addValue:107];
[message.packedFixed64Array addValue:108];
[message.packedSfixed32Array addValue:109];
[message.packedSfixed64Array addValue:110];
[message.packedFloatArray addValue:111.f];
[message.packedDoubleArray addValue:112.];
[message.packedBoolArray addValue:YES];
[message.packedEnumArray addValue:ForeignEnum_ForeignBar];
[message.packedInt32Array addValue:201];
[message.packedInt64Array addValue:302];
[message.packedUint32Array addValue:203];
[message.packedUint64Array addValue:204];
[message.packedSint32Array addValue:205];
[message.packedSint64Array addValue:206];
[message.packedFixed32Array addValue:207];
[message.packedFixed64Array addValue:208];
[message.packedSfixed32Array addValue:209];
[message.packedSfixed64Array addValue:210];
[message.packedFloatArray addValue:211.f];
[message.packedDoubleArray addValue:212.];
[message.packedBoolArray addValue:NO];
[message.packedEnumArray addValue:ForeignEnum_ForeignBaz];
}
- (void)setAllTestUnpackedFields:(TestUnpackedTypes *)message {
// Must match -setAllTestPackedFields:
[message.unpackedInt32Array addValue:101];
[message.unpackedInt64Array addValue:102];
[message.unpackedUint32Array addValue:103];
[message.unpackedUint64Array addValue:104];
[message.unpackedSint32Array addValue:105];
[message.unpackedSint64Array addValue:106];
[message.unpackedFixed32Array addValue:107];
[message.unpackedFixed64Array addValue:108];
[message.unpackedSfixed32Array addValue:109];
[message.unpackedSfixed64Array addValue:110];
[message.unpackedFloatArray addValue:111.f];
[message.unpackedDoubleArray addValue:112.];
[message.unpackedBoolArray addValue:YES];
[message.unpackedEnumArray addValue:ForeignEnum_ForeignBar];
[message.unpackedInt32Array addValue:201];
[message.unpackedInt64Array addValue:302];
[message.unpackedUint32Array addValue:203];
[message.unpackedUint64Array addValue:204];
[message.unpackedSint32Array addValue:205];
[message.unpackedSint64Array addValue:206];
[message.unpackedFixed32Array addValue:207];
[message.unpackedFixed64Array addValue:208];
[message.unpackedSfixed32Array addValue:209];
[message.unpackedSfixed64Array addValue:210];
[message.unpackedFloatArray addValue:211.f];
[message.unpackedDoubleArray addValue:212.];
[message.unpackedBoolArray addValue:NO];
[message.unpackedEnumArray addValue:ForeignEnum_ForeignBaz];
}
- (GPBExtensionRegistry *)extensionRegistry {
return [UnittestRoot extensionRegistry];
}
- (TestAllTypes *)allSetRepeatedCount:(uint32_t)count {
TestAllTypes *message = [TestAllTypes message];
[self setAllFields:message repeatedCount:count];
return message;
}
- (TestAllExtensions *)allExtensionsSetRepeatedCount:(uint32_t)count {
TestAllExtensions *message = [TestAllExtensions message];
[self setAllExtensions:message repeatedCount:count];
return message;
}
- (TestPackedTypes *)packedSetRepeatedCount:(uint32_t)count {
TestPackedTypes *message = [TestPackedTypes message];
[self setPackedFields:message repeatedCount:count];
return message;
}
- (TestPackedExtensions *)packedExtensionsSetRepeatedCount:(uint32_t)count {
TestPackedExtensions *message = [TestPackedExtensions message];
[self setPackedExtensions:message repeatedCount:count];
return message;
}
// -------------------------------------------------------------------
- (void)assertClear:(TestAllTypes *)message {
// hasBlah() should initially be NO for all optional fields.
XCTAssertFalse(message.hasOptionalInt32);
XCTAssertFalse(message.hasOptionalInt64);
XCTAssertFalse(message.hasOptionalUint32);
XCTAssertFalse(message.hasOptionalUint64);
XCTAssertFalse(message.hasOptionalSint32);
XCTAssertFalse(message.hasOptionalSint64);
XCTAssertFalse(message.hasOptionalFixed32);
XCTAssertFalse(message.hasOptionalFixed64);
XCTAssertFalse(message.hasOptionalSfixed32);
XCTAssertFalse(message.hasOptionalSfixed64);
XCTAssertFalse(message.hasOptionalFloat);
XCTAssertFalse(message.hasOptionalDouble);
XCTAssertFalse(message.hasOptionalBool);
XCTAssertFalse(message.hasOptionalString);
XCTAssertFalse(message.hasOptionalBytes);
XCTAssertFalse(message.hasOptionalGroup);
XCTAssertFalse(message.hasOptionalNestedMessage);
XCTAssertFalse(message.hasOptionalForeignMessage);
XCTAssertFalse(message.hasOptionalImportMessage);
XCTAssertFalse(message.hasOptionalNestedEnum);
XCTAssertFalse(message.hasOptionalForeignEnum);
XCTAssertFalse(message.hasOptionalImportEnum);
XCTAssertFalse(message.hasOptionalStringPiece);
XCTAssertFalse(message.hasOptionalCord);
// Optional fields without defaults are set to zero or something like it.
XCTAssertEqual(0, message.optionalInt32);
XCTAssertEqual(0LL, message.optionalInt64);
XCTAssertEqual(0U, message.optionalUint32);
XCTAssertEqual(0ULL, message.optionalUint64);
XCTAssertEqual(0, message.optionalSint32);
XCTAssertEqual(0LL, message.optionalSint64);
XCTAssertEqual(0U, message.optionalFixed32);
XCTAssertEqual(0ULL, message.optionalFixed64);
XCTAssertEqual(0, message.optionalSfixed32);
XCTAssertEqual(0LL, message.optionalSfixed64);
XCTAssertEqual(0.0f, message.optionalFloat);
XCTAssertEqual(0.0, message.optionalDouble);
XCTAssertFalse(message.optionalBool);
XCTAssertEqualObjects(message.optionalString, @"");
XCTAssertEqualObjects(message.optionalBytes, GPBEmptyNSData());
// Embedded messages should also be clear.
XCTAssertFalse(message.hasOptionalGroup);
XCTAssertFalse(message.hasOptionalNestedMessage);
XCTAssertFalse(message.hasOptionalForeignMessage);
XCTAssertFalse(message.hasOptionalImportMessage);
// Enums without defaults are set to the first value in the enum.
XCTAssertEqual(TestAllTypes_NestedEnum_Foo, message.optionalNestedEnum);
XCTAssertEqual(ForeignEnum_ForeignFoo, message.optionalForeignEnum);
XCTAssertEqual(ImportEnum_ImportFoo, message.optionalImportEnum);
XCTAssertEqualObjects(message.optionalStringPiece, @"");
XCTAssertEqualObjects(message.optionalCord, @"");
// Repeated fields are empty.
XCTAssertEqual(0U, message.repeatedInt32Array.count);
XCTAssertEqual(0U, message.repeatedInt64Array.count);
XCTAssertEqual(0U, message.repeatedUint32Array.count);
XCTAssertEqual(0U, message.repeatedUint64Array.count);
XCTAssertEqual(0U, message.repeatedSint32Array.count);
XCTAssertEqual(0U, message.repeatedSint64Array.count);
XCTAssertEqual(0U, message.repeatedFixed32Array.count);
XCTAssertEqual(0U, message.repeatedFixed64Array.count);
XCTAssertEqual(0U, message.repeatedSfixed32Array.count);
XCTAssertEqual(0U, message.repeatedSfixed64Array.count);
XCTAssertEqual(0U, message.repeatedFloatArray.count);
XCTAssertEqual(0U, message.repeatedDoubleArray.count);
XCTAssertEqual(0U, message.repeatedBoolArray.count);
XCTAssertEqual(0U, message.repeatedStringArray.count);
XCTAssertEqual(0U, message.repeatedBytesArray.count);
XCTAssertEqual(0U, message.repeatedGroupArray.count);
XCTAssertEqual(0U, message.repeatedNestedMessageArray.count);
XCTAssertEqual(0U, message.repeatedForeignMessageArray.count);
XCTAssertEqual(0U, message.repeatedImportMessageArray.count);
XCTAssertEqual(0U, message.repeatedNestedEnumArray.count);
XCTAssertEqual(0U, message.repeatedForeignEnumArray.count);
XCTAssertEqual(0U, message.repeatedImportEnumArray.count);
XCTAssertEqual(0U, message.repeatedStringPieceArray.count);
XCTAssertEqual(0U, message.repeatedCordArray.count);
XCTAssertEqual(0U, message.repeatedInt32Array_Count);
XCTAssertEqual(0U, message.repeatedInt64Array_Count);
XCTAssertEqual(0U, message.repeatedUint32Array_Count);
XCTAssertEqual(0U, message.repeatedUint64Array_Count);
XCTAssertEqual(0U, message.repeatedSint32Array_Count);
XCTAssertEqual(0U, message.repeatedSint64Array_Count);
XCTAssertEqual(0U, message.repeatedFixed32Array_Count);
XCTAssertEqual(0U, message.repeatedFixed64Array_Count);
XCTAssertEqual(0U, message.repeatedSfixed32Array_Count);
XCTAssertEqual(0U, message.repeatedSfixed64Array_Count);
XCTAssertEqual(0U, message.repeatedFloatArray_Count);
XCTAssertEqual(0U, message.repeatedDoubleArray_Count);
XCTAssertEqual(0U, message.repeatedBoolArray_Count);
XCTAssertEqual(0U, message.repeatedStringArray_Count);
XCTAssertEqual(0U, message.repeatedBytesArray_Count);
XCTAssertEqual(0U, message.repeatedGroupArray_Count);
XCTAssertEqual(0U, message.repeatedNestedMessageArray_Count);
XCTAssertEqual(0U, message.repeatedForeignMessageArray_Count);
XCTAssertEqual(0U, message.repeatedImportMessageArray_Count);
XCTAssertEqual(0U, message.repeatedNestedEnumArray_Count);
XCTAssertEqual(0U, message.repeatedForeignEnumArray_Count);
XCTAssertEqual(0U, message.repeatedImportEnumArray_Count);
XCTAssertEqual(0U, message.repeatedStringPieceArray_Count);
XCTAssertEqual(0U, message.repeatedCordArray_Count);
// hasBlah() should also be NO for all default fields.
XCTAssertFalse(message.hasDefaultInt32);
XCTAssertFalse(message.hasDefaultInt64);
XCTAssertFalse(message.hasDefaultUint32);
XCTAssertFalse(message.hasDefaultUint64);
XCTAssertFalse(message.hasDefaultSint32);
XCTAssertFalse(message.hasDefaultSint64);
XCTAssertFalse(message.hasDefaultFixed32);
XCTAssertFalse(message.hasDefaultFixed64);
XCTAssertFalse(message.hasDefaultSfixed32);
XCTAssertFalse(message.hasDefaultSfixed64);
XCTAssertFalse(message.hasDefaultFloat);
XCTAssertFalse(message.hasDefaultDouble);
XCTAssertFalse(message.hasDefaultBool);
XCTAssertFalse(message.hasDefaultString);
XCTAssertFalse(message.hasDefaultBytes);
XCTAssertFalse(message.hasDefaultNestedEnum);
XCTAssertFalse(message.hasDefaultForeignEnum);
XCTAssertFalse(message.hasDefaultImportEnum);
XCTAssertFalse(message.hasDefaultStringPiece);
XCTAssertFalse(message.hasDefaultCord);
// Fields with defaults have their default values (duh).
XCTAssertEqual(41, message.defaultInt32);
XCTAssertEqual(42LL, message.defaultInt64);
XCTAssertEqual(43U, message.defaultUint32);
XCTAssertEqual(44ULL, message.defaultUint64);
XCTAssertEqual(-45, message.defaultSint32);
XCTAssertEqual(46LL, message.defaultSint64);
XCTAssertEqual(47U, message.defaultFixed32);
XCTAssertEqual(48ULL, message.defaultFixed64);
XCTAssertEqual(49, message.defaultSfixed32);
XCTAssertEqual(-50LL, message.defaultSfixed64);
XCTAssertEqualWithAccuracy(51.5f, message.defaultFloat, 0.1);
XCTAssertEqualWithAccuracy(52e3, message.defaultDouble, 0.1);
XCTAssertTrue(message.defaultBool);
XCTAssertEqualObjects(@"hello", message.defaultString);
XCTAssertEqualObjects([NSData gpbtu_dataWithCString:"world"],
message.defaultBytes);
XCTAssertEqual(TestAllTypes_NestedEnum_Bar, message.defaultNestedEnum);
XCTAssertEqual(ForeignEnum_ForeignBar, message.defaultForeignEnum);
XCTAssertEqual(ImportEnum_ImportBar, message.defaultImportEnum);
XCTAssertEqualObjects(@"abc", message.defaultStringPiece);
XCTAssertEqualObjects(@"123", message.defaultCord);
}
- (void)assertExtensionsClear:(TestAllExtensions *)message {
// hasBlah() should initially be NO for all optional fields.
XCTAssertFalse([message hasExtension:[UnittestRoot optionalInt32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalInt64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalUint32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalUint64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalSint32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalSint64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalFixed32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalFixed64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalSfixed32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalSfixed64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalFloatExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalDoubleExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalBoolExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalStringExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalBytesExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalGroupExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalNestedMessageExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalForeignMessageExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalImportMessageExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalNestedEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalForeignEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalImportEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalStringPieceExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot optionalCordExtension]]);
// Optional fields without defaults are set to zero or something like it.
XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalInt32Extension]] intValue]);
XCTAssertEqual(0LL,[[message getExtension:[UnittestRoot optionalInt64Extension]] longLongValue]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot optionalUint32Extension]] unsignedIntValue]);
XCTAssertEqual(0ULL, [[message getExtension:[UnittestRoot optionalUint64Extension]] unsignedLongLongValue]);
XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalSint32Extension]] intValue]);
XCTAssertEqual(0LL, [[message getExtension:[UnittestRoot optionalSint64Extension]] longLongValue]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot optionalFixed32Extension]] unsignedIntValue]);
XCTAssertEqual(0ULL, [[message getExtension:[UnittestRoot optionalFixed64Extension]] unsignedLongLongValue]);
XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalSfixed32Extension]] intValue]);
XCTAssertEqual(0LL, [[message getExtension:[UnittestRoot optionalSfixed64Extension]] longLongValue]);
XCTAssertEqualWithAccuracy(0.0f, [[message getExtension:[UnittestRoot optionalFloatExtension]] floatValue], 0.01);
XCTAssertEqualWithAccuracy(0.0, [[message getExtension:[UnittestRoot optionalDoubleExtension]] doubleValue], 0.01);
XCTAssertFalse([[message getExtension:[UnittestRoot optionalBoolExtension]] boolValue]);
XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalStringExtension]]);
XCTAssertEqualObjects(GPBEmptyNSData(), [message getExtension:[UnittestRoot optionalBytesExtension]]);
// Embedded messages should also be clear.
XCTAssertFalse([[message getExtension:[UnittestRoot optionalGroupExtension]] hasA]);
XCTAssertFalse([[message getExtension:[UnittestRoot optionalNestedMessageExtension]] hasBb]);
XCTAssertFalse([[message getExtension:[UnittestRoot optionalForeignMessageExtension]] hasC]);
XCTAssertFalse([[message getExtension:[UnittestRoot optionalImportMessageExtension]] hasD]);
XCTAssertEqual(0, [(TestAllTypes_OptionalGroup*)[message getExtension:[UnittestRoot optionalGroupExtension]] a]);
XCTAssertEqual(0, [(TestAllTypes_NestedMessage*)[message getExtension:[UnittestRoot optionalNestedMessageExtension]] bb]);
XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalForeignMessageExtension]] c]);
XCTAssertEqual(0, [[message getExtension:[UnittestRoot optionalImportMessageExtension]] d]);
// Enums without defaults are set to the first value in the enum.
XCTAssertEqual(TestAllTypes_NestedEnum_Foo,
[[message getExtension:[UnittestRoot optionalNestedEnumExtension]] intValue]);
XCTAssertEqual(ForeignEnum_ForeignFoo,
[[message getExtension:[UnittestRoot optionalForeignEnumExtension]] intValue]);
XCTAssertEqual(ImportEnum_ImportFoo,
[[message getExtension:[UnittestRoot optionalImportEnumExtension]] intValue]);
XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalStringPieceExtension]]);
XCTAssertEqualObjects(@"", [message getExtension:[UnittestRoot optionalCordExtension]]);
// Repeated fields are empty.
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedInt32Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedInt64Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedUint32Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedUint64Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSint32Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSint64Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFixed32Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFixed64Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSfixed32Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedSfixed64Extension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedFloatExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedDoubleExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedBoolExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedStringExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedBytesExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedGroupExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedNestedMessageExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedForeignMessageExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedImportMessageExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedNestedEnumExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedForeignEnumExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedImportEnumExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedStringPieceExtension]] count]);
XCTAssertEqual(0U, [[message getExtension:[UnittestRoot repeatedCordExtension]] count]);
// hasBlah() should also be NO for all default fields.
XCTAssertFalse([message hasExtension:[UnittestRoot defaultInt32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultInt64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultUint32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultUint64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultSint32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultSint64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultFixed32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultFixed64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultSfixed32Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultSfixed64Extension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultFloatExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultDoubleExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultBoolExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultStringExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultBytesExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultNestedEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultForeignEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultImportEnumExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultStringPieceExtension]]);
XCTAssertFalse([message hasExtension:[UnittestRoot defaultCordExtension]]);
// Fields with defaults have their default values (duh).
XCTAssertEqual( 41, [[message getExtension:[UnittestRoot defaultInt32Extension]] intValue]);
XCTAssertEqual( 42LL, [[message getExtension:[UnittestRoot defaultInt64Extension]] longLongValue]);
XCTAssertEqual( 43U, [[message getExtension:[UnittestRoot defaultUint32Extension]] unsignedIntValue]);
XCTAssertEqual( 44ULL, [[message getExtension:[UnittestRoot defaultUint64Extension]] unsignedLongLongValue]);
XCTAssertEqual(-45, [[message getExtension:[UnittestRoot defaultSint32Extension]] intValue]);
XCTAssertEqual( 46LL, [[message getExtension:[UnittestRoot defaultSint64Extension]] longLongValue]);
XCTAssertEqual( 47, [[message getExtension:[UnittestRoot defaultFixed32Extension]] intValue]);
XCTAssertEqual( 48ULL, [[message getExtension:[UnittestRoot defaultFixed64Extension]] unsignedLongLongValue]);
XCTAssertEqual( 49, [[message getExtension:[UnittestRoot defaultSfixed32Extension]] intValue]);
XCTAssertEqual(-50LL, [[message getExtension:[UnittestRoot defaultSfixed64Extension]] longLongValue]);
XCTAssertEqualWithAccuracy( 51.5f, [[message getExtension:[UnittestRoot defaultFloatExtension]] floatValue], 0.01);
XCTAssertEqualWithAccuracy( 52e3, [[message getExtension:[UnittestRoot defaultDoubleExtension]] doubleValue], 0.01);
XCTAssertTrue([[message getExtension:[UnittestRoot defaultBoolExtension]] boolValue]);
XCTAssertEqualObjects(@"hello", [message getExtension:[UnittestRoot defaultStringExtension]]);
XCTAssertEqualObjects([NSData gpbtu_dataWithCString:"world"], [message getExtension:[UnittestRoot defaultBytesExtension]]);
XCTAssertEqual(TestAllTypes_NestedEnum_Bar,
[[message getExtension:[UnittestRoot defaultNestedEnumExtension]] intValue]);
XCTAssertEqual(ForeignEnum_ForeignBar,
[[message getExtension:[UnittestRoot defaultForeignEnumExtension]] intValue]);
XCTAssertEqual(ImportEnum_ImportBar,
[[message getExtension:[UnittestRoot defaultImportEnumExtension]] intValue]);
XCTAssertEqualObjects(@"abc", [message getExtension:[UnittestRoot defaultStringPieceExtension]]);
XCTAssertEqualObjects(@"123", [message getExtension:[UnittestRoot defaultCordExtension]]);
}
- (void)modifyRepeatedFields:(TestAllTypes *)message {
[message.repeatedInt32Array replaceValueAtIndex:1 withValue:501];
[message.repeatedInt64Array replaceValueAtIndex:1 withValue:502];
[message.repeatedUint32Array replaceValueAtIndex:1 withValue:503];
[message.repeatedUint64Array replaceValueAtIndex:1 withValue:504];
[message.repeatedSint32Array replaceValueAtIndex:1 withValue:505];
[message.repeatedSint64Array replaceValueAtIndex:1 withValue:506];
[message.repeatedFixed32Array replaceValueAtIndex:1 withValue:507];
[message.repeatedFixed64Array replaceValueAtIndex:1 withValue:508];
[message.repeatedSfixed32Array replaceValueAtIndex:1 withValue:509];
[message.repeatedSfixed64Array replaceValueAtIndex:1 withValue:510];
[message.repeatedFloatArray replaceValueAtIndex:1 withValue:511];
[message.repeatedDoubleArray replaceValueAtIndex:1 withValue:512];
[message.repeatedBoolArray replaceValueAtIndex:1 withValue:YES];
[message.repeatedStringArray replaceObjectAtIndex:1 withObject:@"515"];
NSData *data = [[NSData alloc] initWithUint32_gpbtu:516];
[message.repeatedBytesArray replaceObjectAtIndex:1 withObject:data];
[data release];
TestAllTypes_RepeatedGroup *testAll =
[[TestAllTypes_RepeatedGroup alloc] init];
[testAll setA:517];
[message.repeatedGroupArray replaceObjectAtIndex:1 withObject:testAll];
[testAll release];
TestAllTypes_NestedMessage *nestedMessage =
[[TestAllTypes_NestedMessage alloc] init];
[nestedMessage setBb:518];
[message.repeatedNestedMessageArray replaceObjectAtIndex:1
withObject:nestedMessage];
[nestedMessage release];
ForeignMessage *foreignMessage = [[ForeignMessage alloc] init];
[foreignMessage setC:519];
[message.repeatedForeignMessageArray replaceObjectAtIndex:1
withObject:foreignMessage];
[foreignMessage release];
ImportMessage *importMessage = [[ImportMessage alloc] init];
[importMessage setD:520];
[message.repeatedImportMessageArray replaceObjectAtIndex:1
withObject:importMessage];
[importMessage release];
[message.repeatedNestedEnumArray replaceValueAtIndex:1 withValue:TestAllTypes_NestedEnum_Foo];
[message.repeatedForeignEnumArray replaceValueAtIndex:1 withValue:ForeignEnum_ForeignFoo];
[message.repeatedImportEnumArray replaceValueAtIndex:1 withValue:ImportEnum_ImportFoo];
[message.repeatedStringPieceArray replaceObjectAtIndex:1 withObject:@"524"];
[message.repeatedCordArray replaceObjectAtIndex:1 withObject:@"525"];
}
- (void)assertRepeatedFieldsModified:(TestAllTypes *)message
repeatedCount:(uint32_t)count {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
XCTAssertEqual(count, message.repeatedInt32Array.count);
XCTAssertEqual(count, message.repeatedInt64Array.count);
XCTAssertEqual(count, message.repeatedUint32Array.count);
XCTAssertEqual(count, message.repeatedUint64Array.count);
XCTAssertEqual(count, message.repeatedSint32Array.count);
XCTAssertEqual(count, message.repeatedSint64Array.count);
XCTAssertEqual(count, message.repeatedFixed32Array.count);
XCTAssertEqual(count, message.repeatedFixed64Array.count);
XCTAssertEqual(count, message.repeatedSfixed32Array.count);
XCTAssertEqual(count, message.repeatedSfixed64Array.count);
XCTAssertEqual(count, message.repeatedFloatArray.count);
XCTAssertEqual(count, message.repeatedDoubleArray.count);
XCTAssertEqual(count, message.repeatedBoolArray.count);
XCTAssertEqual(count, message.repeatedStringArray.count);
XCTAssertEqual(count, message.repeatedBytesArray.count);
XCTAssertEqual(count, message.repeatedGroupArray.count);
XCTAssertEqual(count, message.repeatedNestedMessageArray.count);
XCTAssertEqual(count, message.repeatedForeignMessageArray.count);
XCTAssertEqual(count, message.repeatedImportMessageArray.count);
XCTAssertEqual(count, message.repeatedNestedEnumArray.count);
XCTAssertEqual(count, message.repeatedForeignEnumArray.count);
XCTAssertEqual(count, message.repeatedImportEnumArray.count);
XCTAssertEqual(count, message.repeatedStringPieceArray.count);
XCTAssertEqual(count, message.repeatedCordArray.count);
XCTAssertEqual(count, message.repeatedInt32Array_Count);
XCTAssertEqual(count, message.repeatedInt64Array_Count);
XCTAssertEqual(count, message.repeatedUint32Array_Count);
XCTAssertEqual(count, message.repeatedUint64Array_Count);
XCTAssertEqual(count, message.repeatedSint32Array_Count);
XCTAssertEqual(count, message.repeatedSint64Array_Count);
XCTAssertEqual(count, message.repeatedFixed32Array_Count);
XCTAssertEqual(count, message.repeatedFixed64Array_Count);
XCTAssertEqual(count, message.repeatedSfixed32Array_Count);
XCTAssertEqual(count, message.repeatedSfixed64Array_Count);
XCTAssertEqual(count, message.repeatedFloatArray_Count);
XCTAssertEqual(count, message.repeatedDoubleArray_Count);
XCTAssertEqual(count, message.repeatedBoolArray_Count);
XCTAssertEqual(count, message.repeatedStringArray_Count);
XCTAssertEqual(count, message.repeatedBytesArray_Count);
XCTAssertEqual(count, message.repeatedGroupArray_Count);
XCTAssertEqual(count, message.repeatedNestedMessageArray_Count);
XCTAssertEqual(count, message.repeatedForeignMessageArray_Count);
XCTAssertEqual(count, message.repeatedImportMessageArray_Count);
XCTAssertEqual(count, message.repeatedNestedEnumArray_Count);
XCTAssertEqual(count, message.repeatedForeignEnumArray_Count);
XCTAssertEqual(count, message.repeatedImportEnumArray_Count);
XCTAssertEqual(count, message.repeatedStringPieceArray_Count);
XCTAssertEqual(count, message.repeatedCordArray_Count);
XCTAssertEqual(201, [message.repeatedInt32Array valueAtIndex:0]);
XCTAssertEqual(202LL, [message.repeatedInt64Array valueAtIndex:0]);
XCTAssertEqual(203U, [message.repeatedUint32Array valueAtIndex:0]);
XCTAssertEqual(204ULL, [message.repeatedUint64Array valueAtIndex:0]);
XCTAssertEqual(205, [message.repeatedSint32Array valueAtIndex:0]);
XCTAssertEqual(206LL, [message.repeatedSint64Array valueAtIndex:0]);
XCTAssertEqual(207U, [message.repeatedFixed32Array valueAtIndex:0]);
XCTAssertEqual(208ULL, [message.repeatedFixed64Array valueAtIndex:0]);
XCTAssertEqual(209, [message.repeatedSfixed32Array valueAtIndex:0]);
XCTAssertEqual(210LL, [message.repeatedSfixed64Array valueAtIndex:0]);
XCTAssertEqualWithAccuracy(211.0f, [message.repeatedFloatArray valueAtIndex:0], 0.01);
XCTAssertEqualWithAccuracy(212.0, [message.repeatedDoubleArray valueAtIndex:0], 0.01);
XCTAssertFalse([message.repeatedBoolArray valueAtIndex:0]);
XCTAssertEqualObjects(@"215", message.repeatedStringArray[0]);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:216],
message.repeatedBytesArray[0]);
XCTAssertEqual(217, ((TestAllTypes_RepeatedGroup*)message.repeatedGroupArray[0]).a);
XCTAssertEqual(218, ((TestAllTypes_NestedMessage*)message.repeatedNestedMessageArray[0]).bb);
XCTAssertEqual(219, ((ForeignMessage*)message.repeatedForeignMessageArray[0]).c);
XCTAssertEqual(220, ((ImportMessage*)message.repeatedImportMessageArray[0]).d);
XCTAssertEqual(TestAllTypes_NestedEnum_Baz, [message.repeatedNestedEnumArray valueAtIndex:0]);
XCTAssertEqual(ForeignEnum_ForeignBaz, [message.repeatedForeignEnumArray valueAtIndex:0]);
XCTAssertEqual(ImportEnum_ImportBaz, [message.repeatedImportEnumArray valueAtIndex:0]);
XCTAssertEqualObjects(@"224", message.repeatedStringPieceArray[0]);
XCTAssertEqualObjects(@"225", message.repeatedCordArray[0]);
// Actually verify the second (modified) elements now.
XCTAssertEqual(501, [message.repeatedInt32Array valueAtIndex:1]);
XCTAssertEqual(502LL, [message.repeatedInt64Array valueAtIndex:1]);
XCTAssertEqual(503U, [message.repeatedUint32Array valueAtIndex:1]);
XCTAssertEqual(504ULL, [message.repeatedUint64Array valueAtIndex:1]);
XCTAssertEqual(505, [message.repeatedSint32Array valueAtIndex:1]);
XCTAssertEqual(506LL, [message.repeatedSint64Array valueAtIndex:1]);
XCTAssertEqual(507U, [message.repeatedFixed32Array valueAtIndex:1]);
XCTAssertEqual(508ULL, [message.repeatedFixed64Array valueAtIndex:1]);
XCTAssertEqual(509, [message.repeatedSfixed32Array valueAtIndex:1]);
XCTAssertEqual(510LL, [message.repeatedSfixed64Array valueAtIndex:1]);
XCTAssertEqualWithAccuracy(511.0f, [message.repeatedFloatArray valueAtIndex:1], 0.01);
XCTAssertEqualWithAccuracy(512.0, [message.repeatedDoubleArray valueAtIndex:1], 0.01);
XCTAssertTrue([message.repeatedBoolArray valueAtIndex:1]);
XCTAssertEqualObjects(@"515", message.repeatedStringArray[1]);
XCTAssertEqualObjects([NSData gpbtu_dataWithUint32:516],
message.repeatedBytesArray[1]);
XCTAssertEqual(517, ((TestAllTypes_RepeatedGroup*)message.repeatedGroupArray[1]).a);
XCTAssertEqual(518, ((TestAllTypes_NestedMessage*)message.repeatedNestedMessageArray[1]).bb);
XCTAssertEqual(519, ((ForeignMessage*)message.repeatedForeignMessageArray[1]).c);
XCTAssertEqual(520, ((ImportMessage*)message.repeatedImportMessageArray[1]).d);
XCTAssertEqual(TestAllTypes_NestedEnum_Foo, [message.repeatedNestedEnumArray valueAtIndex:1]);
XCTAssertEqual(ForeignEnum_ForeignFoo, [message.repeatedForeignEnumArray valueAtIndex:1]);
XCTAssertEqual(ImportEnum_ImportFoo, [message.repeatedImportEnumArray valueAtIndex:1]);
XCTAssertEqualObjects(@"524", message.repeatedStringPieceArray[1]);
XCTAssertEqualObjects(@"525", message.repeatedCordArray[1]);
}
- (void)setPackedFields:(TestPackedTypes *)message
repeatedCount:(uint32_t)count {
// Must match -setUnpackedFields:repeatedCount:
// Must match -setPackedExtensions:repeatedCount:
// Must match -setUnpackedExtensions:repeatedCount:
for (uint32_t i = 0; i < count; ++i) {
[message.packedInt32Array addValue:601 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedInt64Array addValue:602 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedUint32Array addValue:603 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedUint64Array addValue:604 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedSint32Array addValue:605 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedSint64Array addValue:606 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedFixed32Array addValue:607 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedFixed64Array addValue:608 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedSfixed32Array addValue:609 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedSfixed64Array addValue:610 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedFloatArray addValue:611 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedDoubleArray addValue:612 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedBoolArray addValue:(i % 2) ? YES : NO];
}
for (uint32_t i = 0; i < count; ++i) {
[message.packedEnumArray
addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
}
}
- (void)setUnpackedFields:(TestUnpackedTypes *)message
repeatedCount:(uint32_t)count {
// Must match -setPackedFields:repeatedCount:
// Must match -setPackedExtensions:repeatedCount:
// Must match -setUnpackedExtensions:repeatedCount:
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedInt32Array addValue:601 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedInt64Array addValue:602 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedUint32Array addValue:603 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedUint64Array addValue:604 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedSint32Array addValue:605 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedSint64Array addValue:606 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedFixed32Array addValue:607 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedFixed64Array addValue:608 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedSfixed32Array addValue:609 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedSfixed64Array addValue:610 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedFloatArray addValue:611 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedDoubleArray addValue:612 + i * 100];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedBoolArray addValue:(i % 2) ? YES : NO];
}
for (uint32_t i = 0; i < count; ++i) {
[message.unpackedEnumArray
addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
}
}
- (void)assertPackedFieldsSet:(TestPackedTypes *)message
repeatedCount:(uint32_t)count {
XCTAssertEqual(count, message.packedInt32Array.count);
XCTAssertEqual(count, message.packedInt64Array.count);
XCTAssertEqual(count, message.packedUint32Array.count);
XCTAssertEqual(count, message.packedUint64Array.count);
XCTAssertEqual(count, message.packedSint32Array.count);
XCTAssertEqual(count, message.packedSint64Array.count);
XCTAssertEqual(count, message.packedFixed32Array.count);
XCTAssertEqual(count, message.packedFixed64Array.count);
XCTAssertEqual(count, message.packedSfixed32Array.count);
XCTAssertEqual(count, message.packedSfixed64Array.count);
XCTAssertEqual(count, message.packedFloatArray.count);
XCTAssertEqual(count, message.packedDoubleArray.count);
XCTAssertEqual(count, message.packedBoolArray.count);
XCTAssertEqual(count, message.packedEnumArray.count);
for (uint32_t i = 0; i < count; ++i) {
XCTAssertEqual((int)(601 + i * 100),
[message.packedInt32Array valueAtIndex:i]);
XCTAssertEqual(602 + i * 100, [message.packedInt64Array valueAtIndex:i]);
XCTAssertEqual(603 + i * 100, [message.packedUint32Array valueAtIndex:i]);
XCTAssertEqual(604 + i * 100, [message.packedUint64Array valueAtIndex:i]);
XCTAssertEqual((int)(605 + i * 100),
[message.packedSint32Array valueAtIndex:i]);
XCTAssertEqual(606 + i * 100, [message.packedSint64Array valueAtIndex:i]);
XCTAssertEqual(607 + i * 100, [message.packedFixed32Array valueAtIndex:i]);
XCTAssertEqual(608 + i * 100, [message.packedFixed64Array valueAtIndex:i]);
XCTAssertEqual((int)(609 + i * 100),
[message.packedSfixed32Array valueAtIndex:i]);
XCTAssertEqual(610 + i * 100, [message.packedSfixed64Array valueAtIndex:i]);
XCTAssertEqualWithAccuracy(611 + i * 100,
[message.packedFloatArray valueAtIndex:i], 0.01);
XCTAssertEqualWithAccuracy(
612 + i * 100, [message.packedDoubleArray valueAtIndex:i], 0.01);
XCTAssertEqual((i % 2) ? YES : NO,
[message.packedBoolArray valueAtIndex:i]);
XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz,
[message.packedEnumArray valueAtIndex:i]);
}
}
- (void)setPackedExtensions:(TestPackedExtensions *)message
repeatedCount:(uint32_t)count {
// Must match -setPackedFields:repeatedCount:
// Must match -setUnpackedFields:repeatedCount:
// Must match -setUnpackedExtensions:repeatedCount:
for (uint32_t i = 0; i < count; i++) {
[message addExtension:[UnittestRoot packedInt32Extension]
value:@(601 + i * 100)];
[message addExtension:[UnittestRoot packedInt64Extension]
value:@(602 + i * 100)];
[message addExtension:[UnittestRoot packedUint32Extension]
value:@(603 + i * 100)];
[message addExtension:[UnittestRoot packedUint64Extension]
value:@(604 + i * 100)];
[message addExtension:[UnittestRoot packedSint32Extension]
value:@(605 + i * 100)];
[message addExtension:[UnittestRoot packedSint64Extension]
value:@(606 + i * 100)];
[message addExtension:[UnittestRoot packedFixed32Extension]
value:@(607 + i * 100)];
[message addExtension:[UnittestRoot packedFixed64Extension]
value:@(608 + i * 100)];
[message addExtension:[UnittestRoot packedSfixed32Extension]
value:@(609 + i * 100)];
[message addExtension:[UnittestRoot packedSfixed64Extension]
value:@(610 + i * 100)];
[message addExtension:[UnittestRoot packedFloatExtension]
value:@(611 + i * 100)];
[message addExtension:[UnittestRoot packedDoubleExtension]
value:@(612 + i * 100)];
[message addExtension:[UnittestRoot packedBoolExtension]
value:@((i % 2) ? YES : NO)];
[message addExtension:[UnittestRoot packedEnumExtension]
value:@((i % 2) ? ForeignEnum_ForeignBar
: ForeignEnum_ForeignBaz)];
}
}
- (void)setUnpackedExtensions:(TestUnpackedExtensions *)message
repeatedCount:(uint32_t)count {
// Must match -setPackedFields:repeatedCount:
// Must match -setUnpackedFields:repeatedCount:
// Must match -setPackedExtensions:repeatedCount:
for (uint32_t i = 0; i < count; i++) {
[message addExtension:[UnittestRoot unpackedInt32Extension]
value:@(601 + i * 100)];
[message addExtension:[UnittestRoot unpackedInt64Extension]
value:@(602 + i * 100)];
[message addExtension:[UnittestRoot unpackedUint32Extension]
value:@(603 + i * 100)];
[message addExtension:[UnittestRoot unpackedUint64Extension]
value:@(604 + i * 100)];
[message addExtension:[UnittestRoot unpackedSint32Extension]
value:@(605 + i * 100)];
[message addExtension:[UnittestRoot unpackedSint64Extension]
value:@(606 + i * 100)];
[message addExtension:[UnittestRoot unpackedFixed32Extension]
value:@(607 + i * 100)];
[message addExtension:[UnittestRoot unpackedFixed64Extension]
value:@(608 + i * 100)];
[message addExtension:[UnittestRoot unpackedSfixed32Extension]
value:@(609 + i * 100)];
[message addExtension:[UnittestRoot unpackedSfixed64Extension]
value:@(610 + i * 100)];
[message addExtension:[UnittestRoot unpackedFloatExtension]
value:@(611 + i * 100)];
[message addExtension:[UnittestRoot unpackedDoubleExtension]
value:@(612 + i * 100)];
[message addExtension:[UnittestRoot unpackedBoolExtension]
value:@((i % 2) ? YES : NO)];
[message addExtension:[UnittestRoot unpackedEnumExtension]
value:@((i % 2) ? ForeignEnum_ForeignBar
: ForeignEnum_ForeignBaz)];
}
}
- (void)assertPackedExtensionsSet:(TestPackedExtensions *)message
repeatedCount:(uint32_t)count{
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedInt32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedInt64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedUint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedUint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSint32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSint64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSfixed32Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedSfixed64Extension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedFloatExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedDoubleExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedBoolExtension]] count]);
XCTAssertEqual(count, [[message getExtension:[UnittestRoot packedEnumExtension]] count]);
for (uint32_t i = 0; i < count; ++i) {
id extension = [message getExtension:[UnittestRoot packedInt32Extension]];
XCTAssertEqual((int)(601 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot packedInt64Extension]];
XCTAssertEqual(602 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot packedUint32Extension]];
XCTAssertEqual(603 + i * 100, [extension[i] unsignedIntValue]);
extension = [message getExtension:[UnittestRoot packedUint64Extension]];
XCTAssertEqual(604 + i * 100, [extension[i] unsignedLongLongValue]);
extension = [message getExtension:[UnittestRoot packedSint32Extension]];
XCTAssertEqual((int)(605 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot packedSint64Extension]];
XCTAssertEqual(606 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot packedFixed32Extension]];
XCTAssertEqual(607 + i * 100, [extension[i] unsignedIntValue]);
extension = [message getExtension:[UnittestRoot packedFixed64Extension]];
XCTAssertEqual(608 + i * 100, [extension[i] unsignedLongLongValue]);
extension = [message getExtension:[UnittestRoot packedSfixed32Extension]];
XCTAssertEqual((int)(609 + i * 100), [extension[i] intValue]);
extension = [message getExtension:[UnittestRoot packedSfixed64Extension]];
XCTAssertEqual(610 + i * 100, [extension[i] longLongValue]);
extension = [message getExtension:[UnittestRoot packedFloatExtension]];
XCTAssertEqualWithAccuracy(611 + i * 100, [extension[i] floatValue], 0.01);
extension = [message getExtension:[UnittestRoot packedDoubleExtension]];
XCTAssertEqualWithAccuracy(612 + i * 100, [extension[i] doubleValue], 0.01);
extension = [message getExtension:[UnittestRoot packedBoolExtension]];
XCTAssertEqual((i % 2) ? YES : NO, [extension[i] boolValue]);
extension = [message getExtension:[UnittestRoot packedEnumExtension]];
XCTAssertEqual((i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz,
[extension[i] intValue]);
}
}
- (void)assertAllFieldsKVCMatch:(TestAllTypes *)message {
XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt32"], @YES);
XCTAssertEqualObjects(@(message.optionalInt32), [message valueForKey:@"optionalInt32"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt64"], @YES);
XCTAssertEqualObjects(@(message.optionalInt64), [message valueForKey:@"optionalInt64"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint32"], @YES);
XCTAssertEqualObjects(@(message.optionalUint32), [message valueForKey:@"optionalUint32"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint64"], @YES);
XCTAssertEqualObjects(@(message.optionalUint64), [message valueForKey:@"optionalUint64"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint32"], @YES);
XCTAssertEqualObjects(@(message.optionalSint32), [message valueForKey:@"optionalSint32"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint64"], @YES);
XCTAssertEqualObjects(@(message.optionalSint64), [message valueForKey:@"optionalSint64"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed32"], @YES);
XCTAssertEqualObjects(@(message.optionalFixed32), [message valueForKey:@"optionalFixed32"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed64"], @YES);
XCTAssertEqualObjects(@(message.optionalFixed64), [message valueForKey:@"optionalFixed64"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed32"], @YES);
XCTAssertEqualObjects(@(message.optionalSfixed32), [message valueForKey:@"optionalSfixed32"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed64"], @YES);
XCTAssertEqualObjects(@(message.optionalSfixed64), [message valueForKey:@"optionalSfixed64"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFloat"], @YES);
XCTAssertEqualObjects(@(message.optionalFloat), [message valueForKey:@"optionalFloat"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalDouble"], @YES);
XCTAssertEqualObjects(@(message.optionalDouble), [message valueForKey:@"optionalDouble"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalBool"], @YES);
XCTAssertEqualObjects(@(message.optionalBool), [message valueForKey:@"optionalBool"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalString"], @YES);
XCTAssertEqualObjects(message.optionalString, [message valueForKey:@"optionalString"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalBytes"], @YES);
XCTAssertEqualObjects(message.optionalBytes, [message valueForKey:@"optionalBytes"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalGroup"], @YES);
XCTAssertNotNil(message.optionalGroup);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.hasA"], @YES);
XCTAssertEqualObjects(@(message.optionalGroup.a), [message valueForKeyPath:@"optionalGroup.a"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedMessage"], @YES);
XCTAssertNotNil(message.optionalNestedMessage);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalNestedMessage.hasBb"], @YES);
XCTAssertEqualObjects(@(message.optionalNestedMessage.bb), [message valueForKeyPath:@"optionalNestedMessage.bb"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignMessage"], @YES);
XCTAssertNotNil(message.optionalForeignMessage);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalForeignMessage.hasC"], @YES);
XCTAssertEqualObjects(@(message.optionalForeignMessage.c), [message valueForKeyPath:@"optionalForeignMessage.c"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportMessage"], @YES);
XCTAssertNotNil(message.optionalForeignMessage);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.hasD"], @YES);
XCTAssertEqualObjects(@(message.optionalImportMessage.d), [message valueForKeyPath:@"optionalImportMessage.d"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedEnum"], @YES);
XCTAssertEqualObjects(@(message.optionalNestedEnum), [message valueForKey:@"optionalNestedEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignEnum"], @YES);
XCTAssertEqualObjects(@(message.optionalForeignEnum), [message valueForKey:@"optionalForeignEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportEnum"], @YES);
XCTAssertEqualObjects(@(message.optionalImportEnum), [message valueForKey:@"optionalImportEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalStringPiece"], @YES);
XCTAssertEqualObjects(message.optionalStringPiece, [message valueForKey:@"optionalStringPiece"]);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalCord"], @YES);
XCTAssertEqualObjects(message.optionalCord, [message valueForKey:@"optionalCord"]);
// -----------------------------------------------------------------
// GPBArray interface for repeated
XCTAssertEqualObjects(message.repeatedInt32Array, [message valueForKey:@"repeatedInt32Array"]);
XCTAssertEqualObjects(message.repeatedInt64Array, [message valueForKey:@"repeatedInt64Array"]);
XCTAssertEqualObjects(message.repeatedUint32Array, [message valueForKey:@"repeatedUint32Array"]);
XCTAssertEqualObjects(message.repeatedUint64Array, [message valueForKey:@"repeatedUint64Array"]);
XCTAssertEqualObjects(message.repeatedSint32Array, [message valueForKey:@"repeatedSint32Array"]);
XCTAssertEqualObjects(message.repeatedSint64Array, [message valueForKey:@"repeatedSint64Array"]);
XCTAssertEqualObjects(message.repeatedFixed32Array, [message valueForKey:@"repeatedFixed32Array"]);
XCTAssertEqualObjects(message.repeatedFixed64Array, [message valueForKey:@"repeatedFixed64Array"]);
XCTAssertEqualObjects(message.repeatedSfixed32Array, [message valueForKey:@"repeatedSfixed32Array"]);
XCTAssertEqualObjects(message.repeatedSfixed64Array, [message valueForKey:@"repeatedSfixed64Array"]);
XCTAssertEqualObjects(message.repeatedFloatArray, [message valueForKey:@"repeatedFloatArray"]);
XCTAssertEqualObjects(message.repeatedDoubleArray, [message valueForKey:@"repeatedDoubleArray"]);
XCTAssertEqualObjects(message.repeatedBoolArray, [message valueForKey:@"repeatedBoolArray"]);
XCTAssertEqualObjects(message.repeatedStringArray, [message valueForKey:@"repeatedStringArray"]);
XCTAssertEqualObjects(message.repeatedBytesArray, [message valueForKey:@"repeatedBytesArray"]);
XCTAssertEqualObjects(message.repeatedGroupArray, [message valueForKey:@"repeatedGroupArray"]);
XCTAssertEqualObjects(message.repeatedNestedMessageArray, [message valueForKey:@"repeatedNestedMessageArray"]);
XCTAssertEqualObjects(message.repeatedForeignMessageArray, [message valueForKey:@"repeatedForeignMessageArray"]);
XCTAssertEqualObjects(message.repeatedImportMessageArray, [message valueForKey:@"repeatedImportMessageArray"]);
XCTAssertEqualObjects(message.repeatedNestedEnumArray, [message valueForKey:@"repeatedNestedEnumArray"]);
XCTAssertEqualObjects(message.repeatedForeignEnumArray, [message valueForKey:@"repeatedForeignEnumArray"]);
XCTAssertEqualObjects(message.repeatedImportEnumArray, [message valueForKey:@"repeatedImportEnumArray"]);
XCTAssertEqualObjects(message.repeatedStringPieceArray, [message valueForKey:@"repeatedStringPieceArray"]);
XCTAssertEqualObjects(message.repeatedCordArray, [message valueForKey:@"repeatedCordArray"]);
XCTAssertEqualObjects(@(message.repeatedInt32Array_Count), [message valueForKey:@"repeatedInt32Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedInt64Array_Count), [message valueForKey:@"repeatedInt64Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedUint32Array_Count), [message valueForKey:@"repeatedUint32Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedUint64Array_Count), [message valueForKey:@"repeatedUint64Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedSint32Array_Count), [message valueForKey:@"repeatedSint32Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedSint64Array_Count), [message valueForKey:@"repeatedSint64Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedFixed32Array_Count), [message valueForKey:@"repeatedFixed32Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedFixed64Array_Count), [message valueForKey:@"repeatedFixed64Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedSfixed32Array_Count), [message valueForKey:@"repeatedSfixed32Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedSfixed64Array_Count), [message valueForKey:@"repeatedSfixed64Array_Count"]);
XCTAssertEqualObjects(@(message.repeatedFloatArray_Count), [message valueForKey:@"repeatedFloatArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedDoubleArray_Count), [message valueForKey:@"repeatedDoubleArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedBoolArray_Count), [message valueForKey:@"repeatedBoolArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedStringArray_Count), [message valueForKey:@"repeatedStringArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedBytesArray_Count), [message valueForKey:@"repeatedBytesArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedGroupArray_Count), [message valueForKey:@"repeatedGroupArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedNestedMessageArray_Count), [message valueForKey:@"repeatedNestedMessageArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedForeignMessageArray_Count), [message valueForKey:@"repeatedForeignMessageArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedImportMessageArray_Count), [message valueForKey:@"repeatedImportMessageArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedNestedEnumArray_Count), [message valueForKey:@"repeatedNestedEnumArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedForeignEnumArray_Count), [message valueForKey:@"repeatedForeignEnumArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedImportEnumArray_Count), [message valueForKey:@"repeatedImportEnumArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedStringPieceArray_Count), [message valueForKey:@"repeatedStringPieceArray_Count"]);
XCTAssertEqualObjects(@(message.repeatedCordArray_Count), [message valueForKey:@"repeatedCordArray_Count"]);
// -----------------------------------------------------------------
XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt32"], @YES);
XCTAssertEqualObjects(@(message.defaultInt32), [message valueForKey:@"defaultInt32"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt64"], @YES);
XCTAssertEqualObjects(@(message.defaultInt64), [message valueForKey:@"defaultInt64"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint32"], @YES);
XCTAssertEqualObjects(@(message.defaultUint32), [message valueForKey:@"defaultUint32"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint64"], @YES);
XCTAssertEqualObjects(@(message.defaultUint64), [message valueForKey:@"defaultUint64"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint32"], @YES);
XCTAssertEqualObjects(@(message.defaultSint32), [message valueForKey:@"defaultSint32"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint64"], @YES);
XCTAssertEqualObjects(@(message.defaultSint64), [message valueForKey:@"defaultSint64"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed32"], @YES);
XCTAssertEqualObjects(@(message.defaultFixed32), [message valueForKey:@"defaultFixed32"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed64"], @YES);
XCTAssertEqualObjects(@(message.defaultFixed64), [message valueForKey:@"defaultFixed64"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed32"], @YES);
XCTAssertEqualObjects(@(message.defaultSfixed32), [message valueForKey:@"defaultSfixed32"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed64"], @YES);
XCTAssertEqualObjects(@(message.defaultSfixed64), [message valueForKey:@"defaultSfixed64"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFloat"], @YES);
XCTAssertEqualObjects(@(message.defaultFloat), [message valueForKey:@"defaultFloat"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultDouble"], @YES);
XCTAssertEqualObjects(@(message.defaultDouble), [message valueForKey:@"defaultDouble"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultBool"], @YES);
XCTAssertEqualObjects(@(message.defaultBool), [message valueForKey:@"defaultBool"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultString"], @YES);
XCTAssertEqualObjects(message.defaultString, [message valueForKey:@"defaultString"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultBytes"], @YES);
XCTAssertEqualObjects(message.defaultBytes, [message valueForKey:@"defaultBytes"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultNestedEnum"], @YES);
XCTAssertEqualObjects(@(message.defaultNestedEnum), [message valueForKey:@"defaultNestedEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultForeignEnum"], @YES);
XCTAssertEqualObjects(@(message.defaultForeignEnum), [message valueForKey:@"defaultForeignEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultImportEnum"], @YES);
XCTAssertEqualObjects(@(message.defaultImportEnum), [message valueForKey:@"defaultImportEnum"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultStringPiece"], @YES);
XCTAssertEqualObjects(message.defaultStringPiece, [message valueForKey:@"defaultStringPiece"]);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultCord"], @YES);
XCTAssertEqualObjects(message.defaultCord, [message valueForKey:@"defaultCord"]);
}
- (void)setAllFieldsViaKVC:(TestAllTypes *)message
repeatedCount:(uint32_t)count {
[message setValue:@101 forKey:@"optionalInt32"];
[message setValue:@102 forKey:@"optionalInt64"];
[message setValue:@103 forKey:@"optionalUint32"];
[message setValue:@104 forKey:@"optionalUint64"];
[message setValue:@105 forKey:@"optionalSint32"];
[message setValue:@106 forKey:@"optionalSint64"];
[message setValue:@107 forKey:@"optionalFixed32"];
[message setValue:@108 forKey:@"optionalFixed64"];
[message setValue:@109 forKey:@"optionalSfixed32"];
[message setValue:@110 forKey:@"optionalSfixed64"];
[message setValue:@111 forKey:@"optionalFloat"];
[message setValue:@112 forKey:@"optionalDouble"];
[message setValue:@YES forKey:@"optionalBool"];
[message setValue:@"115" forKey:@"optionalString"];
[message setValue:[NSData gpbtu_dataWithEmbeddedNulls]
forKey:@"optionalBytes"];
TestAllTypes_OptionalGroup *allTypes = [TestAllTypes_OptionalGroup message];
[allTypes setValue:@117 forKey:@"a"];
[message setValue:allTypes forKey:@"optionalGroup"];
TestAllTypes_NestedMessage *nestedMessage =
[TestAllTypes_NestedMessage message];
[nestedMessage setValue:@118 forKey:@"bb"];
[message setValue:nestedMessage forKey:@"optionalNestedMessage"];
ForeignMessage *foreignMessage = [ForeignMessage message];
[foreignMessage setValue:@119 forKey:@"c"];
[message setValue:foreignMessage forKey:@"optionalForeignMessage"];
ImportMessage *importMessage = [ImportMessage message];
[importMessage setValue:@120 forKey:@"d"];
[message setValue:importMessage forKey:@"optionalImportMessage"];
[message setValue:@(TestAllTypes_NestedEnum_Baz)
forKey:@"optionalNestedEnum"];
[message setValue:@(ForeignEnum_ForeignBaz) forKey:@"optionalForeignEnum"];
[message setValue:@(ImportEnum_ImportBaz) forKey:@"optionalImportEnum"];
[message setValue:@"124" forKey:@"optionalStringPiece"];
[message setValue:@"125" forKey:@"optionalCord"];
// -----------------------------------------------------------------
{
GPBInt32Array *scratch = [GPBInt32Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:201 + i * 100];
}
[message setValue:scratch forKey:@"repeatedInt32Array"];
}
{
GPBInt64Array *scratch = [GPBInt64Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:202 + i * 100];
}
[message setValue:scratch forKey:@"repeatedInt64Array"];
}
{
GPBUInt32Array *scratch = [GPBUInt32Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:203 + i * 100];
}
[message setValue:scratch forKey:@"repeatedUint32Array"];
}
{
GPBUInt64Array *scratch = [GPBUInt64Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:204 + i * 100];
}
[message setValue:scratch forKey:@"repeatedUint64Array"];
}
{
GPBInt32Array *scratch = [GPBInt32Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:205 + i * 100];
}
[message setValue:scratch forKey:@"repeatedSint32Array"];
}
{
GPBInt64Array *scratch = [GPBInt64Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:206 + i * 100];
}
[message setValue:scratch forKey:@"repeatedSint64Array"];
}
{
GPBUInt32Array *scratch = [GPBUInt32Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:207 + i * 100];
}
[message setValue:scratch forKey:@"repeatedFixed32Array"];
}
{
GPBUInt64Array *scratch = [GPBUInt64Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:208 + i * 100];
}
[message setValue:scratch forKey:@"repeatedFixed64Array"];
}
{
GPBInt32Array *scratch = [GPBInt32Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:209 + i * 100];
}
[message setValue:scratch forKey:@"repeatedSfixed32Array"];
}
{
GPBInt64Array *scratch = [GPBInt64Array array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:210 + i * 100];
}
[message setValue:scratch forKey:@"repeatedSfixed64Array"];
}
{
GPBFloatArray *scratch = [GPBFloatArray array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:211 + i * 100];
}
[message setValue:scratch forKey:@"repeatedFloatArray"];
}
{
GPBDoubleArray *scratch = [GPBDoubleArray array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:212 + i * 100];
}
[message setValue:scratch forKey:@"repeatedDoubleArray"];
}
{
GPBBoolArray *scratch = [GPBBoolArray array];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:(i % 2) ? YES : NO];
}
[message setValue:scratch forKey:@"repeatedBoolArray"];
}
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
NSString *string = [[NSString alloc] initWithFormat:@"%d", 215 + i * 100];
[array addObject:string];
[string release];
}
[message setValue:array forKey:@"repeatedStringArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
NSData *data = [[NSData alloc] initWithUint32_gpbtu:216 + i * 100];
[array addObject:data];
[data release];
}
[message setValue:array forKey:@"repeatedBytesArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
TestAllTypes_RepeatedGroup *testAll =
[[TestAllTypes_RepeatedGroup alloc] init];
[testAll setA:217 + i * 100];
[array addObject:testAll];
[testAll release];
}
[message setValue:array forKey:@"repeatedGroupArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
nestedMessage = [[TestAllTypes_NestedMessage alloc] init];
[nestedMessage setBb:218 + i * 100];
[array addObject:nestedMessage];
[nestedMessage release];
}
[message setValue:array forKey:@"repeatedNestedMessageArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
foreignMessage = [[ForeignMessage alloc] init];
[foreignMessage setC:219 + i * 100];
[array addObject:foreignMessage];
[foreignMessage release];
}
[message setValue:array forKey:@"repeatedForeignMessageArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
importMessage = [[ImportMessage alloc] init];
[importMessage setD:220 + i * 100];
[array addObject:importMessage];
[importMessage release];
}
[message setValue:array forKey:@"repeatedImportMessageArray"];
[array release];
{
GPBEnumArray *scratch = [GPBEnumArray
arrayWithValidationFunction:TestAllTypes_NestedEnum_IsValidValue];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:(i % 2) ? TestAllTypes_NestedEnum_Bar
: TestAllTypes_NestedEnum_Baz];
}
[message setValue:scratch forKey:@"repeatedNestedEnumArray"];
}
{
GPBEnumArray *scratch =
[GPBEnumArray arrayWithValidationFunction:ForeignEnum_IsValidValue];
for (uint32_t i = 0; i < count; ++i) {
[scratch
addValue:(i % 2) ? ForeignEnum_ForeignBar : ForeignEnum_ForeignBaz];
}
[message setValue:scratch forKey:@"repeatedForeignEnumArray"];
}
{
GPBEnumArray *scratch =
[GPBEnumArray arrayWithValidationFunction:ImportEnum_IsValidValue];
for (uint32_t i = 0; i < count; ++i) {
[scratch addValue:(i % 2) ? ImportEnum_ImportBar : ImportEnum_ImportBaz];
}
[message setValue:scratch forKey:@"repeatedImportEnumArray"];
}
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
NSString *string = [[NSString alloc] initWithFormat:@"%d", 224 + i * 100];
[array addObject:string];
[string release];
}
[message setValue:array forKey:@"repeatedStringPieceArray"];
[array release];
array = [[NSMutableArray alloc] initWithCapacity:count];
for (uint32_t i = 0; i < count; ++i) {
NSString *string = [[NSString alloc] initWithFormat:@"%d", 225 + i * 100];
[array addObject:string];
[string release];
}
[message setValue:array forKey:@"repeatedCordArray"];
[array release];
// -----------------------------------------------------------------
[message setValue:@401 forKey:@"defaultInt32"];
[message setValue:@402 forKey:@"defaultInt64"];
[message setValue:@403 forKey:@"defaultUint32"];
[message setValue:@404 forKey:@"defaultUint64"];
[message setValue:@405 forKey:@"defaultSint32"];
[message setValue:@406 forKey:@"defaultSint64"];
[message setValue:@407 forKey:@"defaultFixed32"];
[message setValue:@408 forKey:@"defaultFixed64"];
[message setValue:@409 forKey:@"defaultSfixed32"];
[message setValue:@410 forKey:@"defaultSfixed64"];
[message setValue:@411 forKey:@"defaultFloat"];
[message setValue:@412 forKey:@"defaultDouble"];
[message setValue:@NO forKey:@"defaultBool"];
[message setValue:@"415" forKey:@"defaultString"];
[message setValue:[NSData gpbtu_dataWithUint32:416] forKey:@"defaultBytes"];
[message setValue:@(TestAllTypes_NestedEnum_Foo) forKey:@"defaultNestedEnum"];
[message setValue:@(ForeignEnum_ForeignFoo) forKey:@"defaultForeignEnum"];
[message setValue:@(ImportEnum_ImportFoo) forKey:@"defaultImportEnum"];
[message setValue:@"424" forKey:@"defaultStringPiece"];
[message setValue:@"425" forKey:@"defaultCord"];
}
- (void)assertClearKVC:(TestAllTypes *)message {
XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalInt64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalUint64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSint64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFixed64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalSfixed64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalFloat"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalDouble"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalBool"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalString"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalBytes"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalGroup"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedMessage"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignMessage"],
@NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportMessage"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalNestedEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalForeignEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalImportEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalStringPiece"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasOptionalCord"], @NO);
// Optional fields without defaults are set to zero or something like it.
XCTAssertEqualObjects([message valueForKey:@"optionalInt32"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalInt64"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalUint32"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalUint64"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalSint32"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalSint64"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalFixed32"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalFixed64"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalSfixed32"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalSfixed64"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalFloat"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalDouble"], @0);
XCTAssertEqualObjects([message valueForKey:@"optionalBool"], @NO);
XCTAssertEqualObjects([message valueForKey:@"optionalString"], @"");
XCTAssertEqualObjects([message valueForKey:@"optionalBytes"],
GPBEmptyNSData());
// Embedded messages should also be exist, but be clear.
XCTAssertNotNil([message valueForKeyPath:@"optionalGroup"]);
XCTAssertNotNil([message valueForKeyPath:@"optionalNestedMessage"]);
XCTAssertNotNil([message valueForKeyPath:@"optionalForeignMessage"]);
XCTAssertNotNil([message valueForKeyPath:@"optionalImportMessage"]);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.hasA"], @NO);
XCTAssertEqualObjects(
[message valueForKeyPath:@"optionalNestedMessage.hasBb"], @NO);
XCTAssertEqualObjects(
[message valueForKeyPath:@"optionalForeignMessage.hasC"], @NO);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.hasD"],
@NO);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalGroup.a"], @0);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalNestedMessage.bb"],
@0);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalForeignMessage.c"],
@0);
XCTAssertEqualObjects([message valueForKeyPath:@"optionalImportMessage.d"],
@0);
// Enums without defaults are set to the first value in the enum.
XCTAssertEqualObjects([message valueForKey:@"optionalNestedEnum"],
@(TestAllTypes_NestedEnum_Foo));
XCTAssertEqualObjects([message valueForKey:@"optionalForeignEnum"],
@(ForeignEnum_ForeignFoo));
XCTAssertEqualObjects([message valueForKey:@"optionalImportEnum"],
@(ImportEnum_ImportFoo));
XCTAssertEqualObjects([message valueForKey:@"optionalStringPiece"], @"");
XCTAssertEqualObjects([message valueForKey:@"optionalCord"], @"");
// NSArray interface for repeated doesn't have has*, nil means no value.
XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultInt64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultUint64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSint64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFixed64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed32"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultSfixed64"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultFloat"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultDouble"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultBool"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultString"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultBytes"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultNestedEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultForeignEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultImportEnum"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultStringPiece"], @NO);
XCTAssertEqualObjects([message valueForKey:@"hasDefaultCord"], @NO);
// Fields with defaults have their default values (duh).
XCTAssertEqualObjects([message valueForKey:@"defaultInt32"], @41);
XCTAssertEqualObjects([message valueForKey:@"defaultInt64"], @42);
XCTAssertEqualObjects([message valueForKey:@"defaultUint32"], @43);
XCTAssertEqualObjects([message valueForKey:@"defaultUint64"], @44);
XCTAssertEqualObjects([message valueForKey:@"defaultSint32"], @-45);
XCTAssertEqualObjects([message valueForKey:@"defaultSint64"], @46);
XCTAssertEqualObjects([message valueForKey:@"defaultFixed32"], @47);
XCTAssertEqualObjects([message valueForKey:@"defaultFixed64"], @48);
XCTAssertEqualObjects([message valueForKey:@"defaultSfixed32"], @49);
XCTAssertEqualObjects([message valueForKey:@"defaultSfixed64"], @-50);
XCTAssertEqualObjects([message valueForKey:@"defaultFloat"], @51.5);
XCTAssertEqualObjects([message valueForKey:@"defaultDouble"], @52e3);
XCTAssertEqualObjects([message valueForKey:@"defaultBool"], @YES);
XCTAssertEqualObjects([message valueForKey:@"defaultString"], @"hello");
XCTAssertEqualObjects([message valueForKey:@"defaultBytes"],
[NSData gpbtu_dataWithCString:"world"]);
XCTAssertEqualObjects([message valueForKey:@"defaultNestedEnum"],
@(TestAllTypes_NestedEnum_Bar));
XCTAssertEqualObjects([message valueForKey:@"defaultForeignEnum"],
@(ForeignEnum_ForeignBar));
XCTAssertEqualObjects([message valueForKey:@"defaultImportEnum"],
@(ImportEnum_ImportBar));
XCTAssertEqualObjects([message valueForKey:@"defaultStringPiece"], @"abc");
XCTAssertEqualObjects([message valueForKey:@"defaultCord"], @"123");
}
@end