1ffe3c632Sopenharmony_ci// Protocol Buffers - Google's data interchange format 2ffe3c632Sopenharmony_ci// Copyright 2015 Google Inc. All rights reserved. 3ffe3c632Sopenharmony_ci// https://developers.google.com/protocol-buffers/ 4ffe3c632Sopenharmony_ci// 5ffe3c632Sopenharmony_ci// Redistribution and use in source and binary forms, with or without 6ffe3c632Sopenharmony_ci// modification, are permitted provided that the following conditions are 7ffe3c632Sopenharmony_ci// met: 8ffe3c632Sopenharmony_ci// 9ffe3c632Sopenharmony_ci// * Redistributions of source code must retain the above copyright 10ffe3c632Sopenharmony_ci// notice, this list of conditions and the following disclaimer. 11ffe3c632Sopenharmony_ci// * Redistributions in binary form must reproduce the above 12ffe3c632Sopenharmony_ci// copyright notice, this list of conditions and the following disclaimer 13ffe3c632Sopenharmony_ci// in the documentation and/or other materials provided with the 14ffe3c632Sopenharmony_ci// distribution. 15ffe3c632Sopenharmony_ci// * Neither the name of Google Inc. nor the names of its 16ffe3c632Sopenharmony_ci// contributors may be used to endorse or promote products derived from 17ffe3c632Sopenharmony_ci// this software without specific prior written permission. 18ffe3c632Sopenharmony_ci// 19ffe3c632Sopenharmony_ci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20ffe3c632Sopenharmony_ci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21ffe3c632Sopenharmony_ci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22ffe3c632Sopenharmony_ci// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23ffe3c632Sopenharmony_ci// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24ffe3c632Sopenharmony_ci// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25ffe3c632Sopenharmony_ci// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26ffe3c632Sopenharmony_ci// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27ffe3c632Sopenharmony_ci// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28ffe3c632Sopenharmony_ci// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29ffe3c632Sopenharmony_ci// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30ffe3c632Sopenharmony_ci 31ffe3c632Sopenharmony_ci#import "GPBTestUtilities.h" 32ffe3c632Sopenharmony_ci 33ffe3c632Sopenharmony_ci#import <objc/runtime.h> 34ffe3c632Sopenharmony_ci 35ffe3c632Sopenharmony_ci#import "GPBMessage.h" 36ffe3c632Sopenharmony_ci 37ffe3c632Sopenharmony_ci#import "google/protobuf/MapUnittest.pbobjc.h" 38ffe3c632Sopenharmony_ci#import "google/protobuf/Unittest.pbobjc.h" 39ffe3c632Sopenharmony_ci#import "google/protobuf/UnittestCycle.pbobjc.h" 40ffe3c632Sopenharmony_ci#import "google/protobuf/UnittestObjcStartup.pbobjc.h" 41ffe3c632Sopenharmony_ci#import "google/protobuf/UnittestRuntimeProto2.pbobjc.h" 42ffe3c632Sopenharmony_ci#import "google/protobuf/UnittestRuntimeProto3.pbobjc.h" 43ffe3c632Sopenharmony_ci 44ffe3c632Sopenharmony_ci@interface MessageRuntimeTests : GPBTestCase 45ffe3c632Sopenharmony_ci@end 46ffe3c632Sopenharmony_ci 47ffe3c632Sopenharmony_ci@implementation MessageRuntimeTests 48ffe3c632Sopenharmony_ci 49ffe3c632Sopenharmony_ci// TODO(thomasvl): Pull tests over from GPBMessageTests that are runtime 50ffe3c632Sopenharmony_ci// specific. 51ffe3c632Sopenharmony_ci 52ffe3c632Sopenharmony_ci- (void)testStartupOrdering { 53ffe3c632Sopenharmony_ci // Message class/Root class initialization is a little tricky, so these just 54ffe3c632Sopenharmony_ci // create some possible patterns that can be a problem. The messages don't 55ffe3c632Sopenharmony_ci // have to be exercised, just creating them is enough to test. If there 56ffe3c632Sopenharmony_ci // is a problem, the runtime should assert or hang. 57ffe3c632Sopenharmony_ci // 58ffe3c632Sopenharmony_ci // Note: the messages from these proto files should not be used in any other 59ffe3c632Sopenharmony_ci // tests, that way when they are referenced here it will be the first use and 60ffe3c632Sopenharmony_ci // initialization will take place now. 61ffe3c632Sopenharmony_ci 62ffe3c632Sopenharmony_ci TestObjCStartupMessage *message = [TestObjCStartupMessage message]; 63ffe3c632Sopenharmony_ci XCTAssertNotNil(message); 64ffe3c632Sopenharmony_ci 65ffe3c632Sopenharmony_ci CycleBaz *baz = [CycleBaz message]; 66ffe3c632Sopenharmony_ci CycleBar *bar = [CycleBar message]; 67ffe3c632Sopenharmony_ci CycleFoo *foo = [CycleFoo message]; 68ffe3c632Sopenharmony_ci XCTAssertNotNil(baz); 69ffe3c632Sopenharmony_ci XCTAssertNotNil(bar); 70ffe3c632Sopenharmony_ci XCTAssertNotNil(foo); 71ffe3c632Sopenharmony_ci} 72ffe3c632Sopenharmony_ci 73ffe3c632Sopenharmony_ci- (void)testProto2HasMethodSupport { 74ffe3c632Sopenharmony_ci NSArray *names = @[ 75ffe3c632Sopenharmony_ci @"Int32", 76ffe3c632Sopenharmony_ci @"Int64", 77ffe3c632Sopenharmony_ci @"Uint32", 78ffe3c632Sopenharmony_ci @"Uint64", 79ffe3c632Sopenharmony_ci @"Sint32", 80ffe3c632Sopenharmony_ci @"Sint64", 81ffe3c632Sopenharmony_ci @"Fixed32", 82ffe3c632Sopenharmony_ci @"Fixed64", 83ffe3c632Sopenharmony_ci @"Sfixed32", 84ffe3c632Sopenharmony_ci @"Sfixed64", 85ffe3c632Sopenharmony_ci @"Float", 86ffe3c632Sopenharmony_ci @"Double", 87ffe3c632Sopenharmony_ci @"Bool", 88ffe3c632Sopenharmony_ci @"String", 89ffe3c632Sopenharmony_ci @"Bytes", 90ffe3c632Sopenharmony_ci @"Group", 91ffe3c632Sopenharmony_ci @"Message", 92ffe3c632Sopenharmony_ci @"Enum", 93ffe3c632Sopenharmony_ci ]; 94ffe3c632Sopenharmony_ci 95ffe3c632Sopenharmony_ci // Proto2 gets: 96ffe3c632Sopenharmony_ci 97ffe3c632Sopenharmony_ci // Single fields - has*/setHas* is valid. 98ffe3c632Sopenharmony_ci 99ffe3c632Sopenharmony_ci for (NSString *name in names) { 100ffe3c632Sopenharmony_ci // build the selector, i.e. - hasOptionalInt32/setHasOptionalInt32: 101ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 102ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasOptional%@", name]); 103ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 104ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasOptional%@:", name]); 105ffe3c632Sopenharmony_ci XCTAssertTrue([Message2 instancesRespondToSelector:hasSel], @"field: %@", 106ffe3c632Sopenharmony_ci name); 107ffe3c632Sopenharmony_ci XCTAssertTrue([Message2 instancesRespondToSelector:setHasSel], @"field: %@", 108ffe3c632Sopenharmony_ci name); 109ffe3c632Sopenharmony_ci } 110ffe3c632Sopenharmony_ci 111ffe3c632Sopenharmony_ci // Repeated fields 112ffe3c632Sopenharmony_ci // - no has*/setHas* 113ffe3c632Sopenharmony_ci // - *Count 114ffe3c632Sopenharmony_ci 115ffe3c632Sopenharmony_ci for (NSString *name in names) { 116ffe3c632Sopenharmony_ci // build the selector, i.e. - hasRepeatedInt32Array/setHasRepeatedInt32Array: 117ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 118ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasRepeated%@Array", name]); 119ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 120ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasRepeated%@Array:", name]); 121ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:hasSel], @"field: %@", 122ffe3c632Sopenharmony_ci name); 123ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:setHasSel], 124ffe3c632Sopenharmony_ci @"field: %@", name); 125ffe3c632Sopenharmony_ci // build the selector, i.e. - repeatedInt32Array_Count 126ffe3c632Sopenharmony_ci SEL countSel = NSSelectorFromString( 127ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"repeated%@Array_Count", name]); 128ffe3c632Sopenharmony_ci XCTAssertTrue([Message2 instancesRespondToSelector:countSel], @"field: %@", 129ffe3c632Sopenharmony_ci name); 130ffe3c632Sopenharmony_ci } 131ffe3c632Sopenharmony_ci 132ffe3c632Sopenharmony_ci // OneOf fields - no has*/setHas* 133ffe3c632Sopenharmony_ci 134ffe3c632Sopenharmony_ci for (NSString *name in names) { 135ffe3c632Sopenharmony_ci // build the selector, i.e. - hasOneofInt32/setHasOneofInt32: 136ffe3c632Sopenharmony_ci SEL hasSel = 137ffe3c632Sopenharmony_ci NSSelectorFromString([NSString stringWithFormat:@"hasOneof%@", name]); 138ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 139ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasOneof%@:", name]); 140ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:hasSel], @"field: %@", 141ffe3c632Sopenharmony_ci name); 142ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:setHasSel], 143ffe3c632Sopenharmony_ci @"field: %@", name); 144ffe3c632Sopenharmony_ci } 145ffe3c632Sopenharmony_ci 146ffe3c632Sopenharmony_ci // map<> fields 147ffe3c632Sopenharmony_ci // - no has*/setHas* 148ffe3c632Sopenharmony_ci // - *Count 149ffe3c632Sopenharmony_ci 150ffe3c632Sopenharmony_ci NSArray *mapNames = @[ 151ffe3c632Sopenharmony_ci @"Int32Int32", 152ffe3c632Sopenharmony_ci @"Int64Int64", 153ffe3c632Sopenharmony_ci @"Uint32Uint32", 154ffe3c632Sopenharmony_ci @"Uint64Uint64", 155ffe3c632Sopenharmony_ci @"Sint32Sint32", 156ffe3c632Sopenharmony_ci @"Sint64Sint64", 157ffe3c632Sopenharmony_ci @"Fixed32Fixed32", 158ffe3c632Sopenharmony_ci @"Fixed64Fixed64", 159ffe3c632Sopenharmony_ci @"Sfixed32Sfixed32", 160ffe3c632Sopenharmony_ci @"Sfixed64Sfixed64", 161ffe3c632Sopenharmony_ci @"Int32Float", 162ffe3c632Sopenharmony_ci @"Int32Double", 163ffe3c632Sopenharmony_ci @"BoolBool", 164ffe3c632Sopenharmony_ci @"StringString", 165ffe3c632Sopenharmony_ci @"StringBytes", 166ffe3c632Sopenharmony_ci @"StringMessage", 167ffe3c632Sopenharmony_ci @"Int32Bytes", 168ffe3c632Sopenharmony_ci @"Int32Enum", 169ffe3c632Sopenharmony_ci @"Int32Message", 170ffe3c632Sopenharmony_ci ]; 171ffe3c632Sopenharmony_ci 172ffe3c632Sopenharmony_ci for (NSString *name in mapNames) { 173ffe3c632Sopenharmony_ci // build the selector, i.e. - hasMapInt32Int32/setHasMapInt32Int32: 174ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 175ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasMap%@", name]); 176ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 177ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasMap%@:", name]); 178ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:hasSel], @"field: %@", 179ffe3c632Sopenharmony_ci name); 180ffe3c632Sopenharmony_ci XCTAssertFalse([Message2 instancesRespondToSelector:setHasSel], 181ffe3c632Sopenharmony_ci @"field: %@", name); 182ffe3c632Sopenharmony_ci // build the selector, i.e. - mapInt32Int32Count 183ffe3c632Sopenharmony_ci SEL countSel = NSSelectorFromString( 184ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"map%@_Count", name]); 185ffe3c632Sopenharmony_ci XCTAssertTrue([Message2 instancesRespondToSelector:countSel], @"field: %@", 186ffe3c632Sopenharmony_ci name); 187ffe3c632Sopenharmony_ci } 188ffe3c632Sopenharmony_ci 189ffe3c632Sopenharmony_ci} 190ffe3c632Sopenharmony_ci 191ffe3c632Sopenharmony_ci- (void)testProto3HasMethodSupport { 192ffe3c632Sopenharmony_ci NSArray *names = @[ 193ffe3c632Sopenharmony_ci @"Int32", 194ffe3c632Sopenharmony_ci @"Int64", 195ffe3c632Sopenharmony_ci @"Uint32", 196ffe3c632Sopenharmony_ci @"Uint64", 197ffe3c632Sopenharmony_ci @"Sint32", 198ffe3c632Sopenharmony_ci @"Sint64", 199ffe3c632Sopenharmony_ci @"Fixed32", 200ffe3c632Sopenharmony_ci @"Fixed64", 201ffe3c632Sopenharmony_ci @"Sfixed32", 202ffe3c632Sopenharmony_ci @"Sfixed64", 203ffe3c632Sopenharmony_ci @"Float", 204ffe3c632Sopenharmony_ci @"Double", 205ffe3c632Sopenharmony_ci @"Bool", 206ffe3c632Sopenharmony_ci @"String", 207ffe3c632Sopenharmony_ci @"Bytes", 208ffe3c632Sopenharmony_ci @"Message", 209ffe3c632Sopenharmony_ci @"Enum", 210ffe3c632Sopenharmony_ci ]; 211ffe3c632Sopenharmony_ci 212ffe3c632Sopenharmony_ci // Proto3 gets: 213ffe3c632Sopenharmony_ci 214ffe3c632Sopenharmony_ci // Single fields 215ffe3c632Sopenharmony_ci // - has*/setHas* invalid for primitive types. 216ffe3c632Sopenharmony_ci // - has*/setHas* valid for Message. 217ffe3c632Sopenharmony_ci 218ffe3c632Sopenharmony_ci for (NSString *name in names) { 219ffe3c632Sopenharmony_ci // build the selector, i.e. - hasOptionalInt32/setHasOptionalInt32: 220ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 221ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasOptional%@", name]); 222ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 223ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasOptional%@:", name]); 224ffe3c632Sopenharmony_ci if ([name isEqual:@"Message"]) { 225ffe3c632Sopenharmony_ci // Sub messages/groups are the exception. 226ffe3c632Sopenharmony_ci XCTAssertTrue([Message3 instancesRespondToSelector:hasSel], @"field: %@", 227ffe3c632Sopenharmony_ci name); 228ffe3c632Sopenharmony_ci XCTAssertTrue([Message3 instancesRespondToSelector:setHasSel], 229ffe3c632Sopenharmony_ci @"field: %@", name); 230ffe3c632Sopenharmony_ci } else { 231ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:hasSel], @"field: %@", 232ffe3c632Sopenharmony_ci name); 233ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:setHasSel], 234ffe3c632Sopenharmony_ci @"field: %@", name); 235ffe3c632Sopenharmony_ci } 236ffe3c632Sopenharmony_ci } 237ffe3c632Sopenharmony_ci 238ffe3c632Sopenharmony_ci // Repeated fields 239ffe3c632Sopenharmony_ci // - no has*/setHas* 240ffe3c632Sopenharmony_ci // - *Count 241ffe3c632Sopenharmony_ci 242ffe3c632Sopenharmony_ci for (NSString *name in names) { 243ffe3c632Sopenharmony_ci // build the selector, i.e. - hasRepeatedInt32Array/setHasRepeatedInt32Array: 244ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 245ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasRepeated%@Array", name]); 246ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 247ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasRepeated%@Array:", name]); 248ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:hasSel], @"field: %@", 249ffe3c632Sopenharmony_ci name); 250ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:setHasSel], 251ffe3c632Sopenharmony_ci @"field: %@", name); 252ffe3c632Sopenharmony_ci // build the selector, i.e. - repeatedInt32Array_Count 253ffe3c632Sopenharmony_ci SEL countSel = NSSelectorFromString( 254ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"repeated%@Array_Count", name]); 255ffe3c632Sopenharmony_ci XCTAssertTrue([Message3 instancesRespondToSelector:countSel], @"field: %@", 256ffe3c632Sopenharmony_ci name); 257ffe3c632Sopenharmony_ci } 258ffe3c632Sopenharmony_ci 259ffe3c632Sopenharmony_ci // OneOf fields - no has*/setHas* 260ffe3c632Sopenharmony_ci 261ffe3c632Sopenharmony_ci for (NSString *name in names) { 262ffe3c632Sopenharmony_ci // build the selector, i.e. - hasOneofInt32/setHasOneofInt32: 263ffe3c632Sopenharmony_ci SEL hasSel = 264ffe3c632Sopenharmony_ci NSSelectorFromString([NSString stringWithFormat:@"hasOneof%@", name]); 265ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 266ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasOneof%@:", name]); 267ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:hasSel], @"field: %@", 268ffe3c632Sopenharmony_ci name); 269ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:setHasSel], 270ffe3c632Sopenharmony_ci @"field: %@", name); 271ffe3c632Sopenharmony_ci } 272ffe3c632Sopenharmony_ci 273ffe3c632Sopenharmony_ci // Single Optional fields 274ffe3c632Sopenharmony_ci // - has*/setHas* thanks to the optional keyword in proto3, they exist 275ffe3c632Sopenharmony_ci // for primitive types. 276ffe3c632Sopenharmony_ci // - has*/setHas* valid for Message. 277ffe3c632Sopenharmony_ci 278ffe3c632Sopenharmony_ci for (NSString *name in names) { 279ffe3c632Sopenharmony_ci // build the selector, i.e. - hasOptionalInt32/setHasOptionalInt32: 280ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 281ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasOptional%@", name]); 282ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 283ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasOptional%@:", name]); 284ffe3c632Sopenharmony_ci XCTAssertTrue([Message3Optional instancesRespondToSelector:hasSel], @"field: %@", 285ffe3c632Sopenharmony_ci name); 286ffe3c632Sopenharmony_ci XCTAssertTrue([Message3Optional instancesRespondToSelector:setHasSel], 287ffe3c632Sopenharmony_ci @"field: %@", name); 288ffe3c632Sopenharmony_ci } 289ffe3c632Sopenharmony_ci 290ffe3c632Sopenharmony_ci // map<> fields 291ffe3c632Sopenharmony_ci // - no has*/setHas* 292ffe3c632Sopenharmony_ci // - *Count 293ffe3c632Sopenharmony_ci 294ffe3c632Sopenharmony_ci NSArray *mapNames = @[ 295ffe3c632Sopenharmony_ci @"Int32Int32", 296ffe3c632Sopenharmony_ci @"Int64Int64", 297ffe3c632Sopenharmony_ci @"Uint32Uint32", 298ffe3c632Sopenharmony_ci @"Uint64Uint64", 299ffe3c632Sopenharmony_ci @"Sint32Sint32", 300ffe3c632Sopenharmony_ci @"Sint64Sint64", 301ffe3c632Sopenharmony_ci @"Fixed32Fixed32", 302ffe3c632Sopenharmony_ci @"Fixed64Fixed64", 303ffe3c632Sopenharmony_ci @"Sfixed32Sfixed32", 304ffe3c632Sopenharmony_ci @"Sfixed64Sfixed64", 305ffe3c632Sopenharmony_ci @"Int32Float", 306ffe3c632Sopenharmony_ci @"Int32Double", 307ffe3c632Sopenharmony_ci @"BoolBool", 308ffe3c632Sopenharmony_ci @"StringString", 309ffe3c632Sopenharmony_ci @"StringBytes", 310ffe3c632Sopenharmony_ci @"StringMessage", 311ffe3c632Sopenharmony_ci @"Int32Bytes", 312ffe3c632Sopenharmony_ci @"Int32Enum", 313ffe3c632Sopenharmony_ci @"Int32Message", 314ffe3c632Sopenharmony_ci ]; 315ffe3c632Sopenharmony_ci 316ffe3c632Sopenharmony_ci for (NSString *name in mapNames) { 317ffe3c632Sopenharmony_ci // build the selector, i.e. - hasMapInt32Int32/setHasMapInt32Int32: 318ffe3c632Sopenharmony_ci SEL hasSel = NSSelectorFromString( 319ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"hasMap%@", name]); 320ffe3c632Sopenharmony_ci SEL setHasSel = NSSelectorFromString( 321ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"setHasMap%@:", name]); 322ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:hasSel], @"field: %@", 323ffe3c632Sopenharmony_ci name); 324ffe3c632Sopenharmony_ci XCTAssertFalse([Message3 instancesRespondToSelector:setHasSel], 325ffe3c632Sopenharmony_ci @"field: %@", name); 326ffe3c632Sopenharmony_ci // build the selector, i.e. - mapInt32Int32Count 327ffe3c632Sopenharmony_ci SEL countSel = NSSelectorFromString( 328ffe3c632Sopenharmony_ci [NSString stringWithFormat:@"map%@_Count", name]); 329ffe3c632Sopenharmony_ci XCTAssertTrue([Message3 instancesRespondToSelector:countSel], @"field: %@", 330ffe3c632Sopenharmony_ci name); 331ffe3c632Sopenharmony_ci } 332ffe3c632Sopenharmony_ci} 333ffe3c632Sopenharmony_ci 334ffe3c632Sopenharmony_ci- (void)testProto2SingleFieldHasBehavior { 335ffe3c632Sopenharmony_ci // 336ffe3c632Sopenharmony_ci // Setting to any value including the default value (0) should result has* 337ffe3c632Sopenharmony_ci // being true. 338ffe3c632Sopenharmony_ci // 339ffe3c632Sopenharmony_ci 340ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO2_TEST_HAS_FIELD(FIELD, NON_ZERO_VALUE, ZERO_VALUE) 341ffe3c632Sopenharmony_ci//% { // optional##FIELD :: NON_ZERO_VALUE 342ffe3c632Sopenharmony_ci//% Message2 *msg = [[Message2 alloc] init]; 343ffe3c632Sopenharmony_ci//% XCTAssertFalse(msg.hasOptional##FIELD); 344ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 345ffe3c632Sopenharmony_ci//% msg.optional##FIELD = NON_ZERO_VALUE; 346ffe3c632Sopenharmony_ci//% XCTAssertTrue(msg.hasOptional##FIELD); 347ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 348ffe3c632Sopenharmony_ci//% [msg release]; 349ffe3c632Sopenharmony_ci//% } 350ffe3c632Sopenharmony_ci//% { // optional##FIELD :: ZERO_VALUE 351ffe3c632Sopenharmony_ci//% Message2 *msg = [[Message2 alloc] init]; 352ffe3c632Sopenharmony_ci//% XCTAssertFalse(msg.hasOptional##FIELD); 353ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 354ffe3c632Sopenharmony_ci//% msg.optional##FIELD = ZERO_VALUE; 355ffe3c632Sopenharmony_ci//% XCTAssertTrue(msg.hasOptional##FIELD); 356ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 357ffe3c632Sopenharmony_ci//% [msg release]; 358ffe3c632Sopenharmony_ci//% } 359ffe3c632Sopenharmony_ci//% 360ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO2_TEST_CLEAR_FIELD_WITH_NIL(FIELD, VALUE) 361ffe3c632Sopenharmony_ci//% { // optional##FIELD 362ffe3c632Sopenharmony_ci//% Message2 *msg = [[Message2 alloc] init]; 363ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 364ffe3c632Sopenharmony_ci//% msg.optional##FIELD = VALUE; 365ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 366ffe3c632Sopenharmony_ci//% msg.optional##FIELD = nil; 367ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_Optional##FIELD)); 368ffe3c632Sopenharmony_ci//% [msg release]; 369ffe3c632Sopenharmony_ci//% } 370ffe3c632Sopenharmony_ci//% 371ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO2_TEST_HAS_FIELDS() 372ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Int32, 1, 0) 373ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Int64, 1, 0) 374ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Uint32, 1, 0) 375ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Uint64, 1, 0) 376ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Sint32, 1, 0) 377ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Sint64, 1, 0) 378ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Fixed32, 1, 0) 379ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Fixed64, 1, 0) 380ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Sfixed32, 1, 0) 381ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Sfixed64, 1, 0) 382ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Float, 1.0f, 0.0f) 383ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Double, 1.0, 0.0) 384ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Bool, YES, NO) 385ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(String, @"foo", @"") 386ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Bytes, [@"foo" dataUsingEncoding:NSUTF8StringEncoding], [NSData data]) 387ffe3c632Sopenharmony_ci//% // 388ffe3c632Sopenharmony_ci//% // Test doesn't apply to optionalGroup/optionalMessage. 389ffe3c632Sopenharmony_ci//% // 390ffe3c632Sopenharmony_ci//% 391ffe3c632Sopenharmony_ci//%PROTO2_TEST_HAS_FIELD(Enum, Message2_Enum_Bar, Message2_Enum_Foo) 392ffe3c632Sopenharmony_ci//% // 393ffe3c632Sopenharmony_ci//% // Nil can also be used to clear strings, bytes, groups, and messages. 394ffe3c632Sopenharmony_ci//% // 395ffe3c632Sopenharmony_ci//% 396ffe3c632Sopenharmony_ci//%PROTO2_TEST_CLEAR_FIELD_WITH_NIL(String, @"foo") 397ffe3c632Sopenharmony_ci//%PROTO2_TEST_CLEAR_FIELD_WITH_NIL(Bytes, [@"foo" dataUsingEncoding:NSUTF8StringEncoding]) 398ffe3c632Sopenharmony_ci//%PROTO2_TEST_CLEAR_FIELD_WITH_NIL(Group, [Message2_OptionalGroup message]) 399ffe3c632Sopenharmony_ci//%PROTO2_TEST_CLEAR_FIELD_WITH_NIL(Message, [Message2 message]) 400ffe3c632Sopenharmony_ci//%PDDM-EXPAND PROTO2_TEST_HAS_FIELDS() 401ffe3c632Sopenharmony_ci// This block of code is generated, do not edit it directly. 402ffe3c632Sopenharmony_ci// clang-format off 403ffe3c632Sopenharmony_ci 404ffe3c632Sopenharmony_ci { // optionalInt32 :: 1 405ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 406ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalInt32); 407ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt32)); 408ffe3c632Sopenharmony_ci msg.optionalInt32 = 1; 409ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalInt32); 410ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt32)); 411ffe3c632Sopenharmony_ci [msg release]; 412ffe3c632Sopenharmony_ci } 413ffe3c632Sopenharmony_ci { // optionalInt32 :: 0 414ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 415ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalInt32); 416ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt32)); 417ffe3c632Sopenharmony_ci msg.optionalInt32 = 0; 418ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalInt32); 419ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt32)); 420ffe3c632Sopenharmony_ci [msg release]; 421ffe3c632Sopenharmony_ci } 422ffe3c632Sopenharmony_ci 423ffe3c632Sopenharmony_ci { // optionalInt64 :: 1 424ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 425ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalInt64); 426ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt64)); 427ffe3c632Sopenharmony_ci msg.optionalInt64 = 1; 428ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalInt64); 429ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt64)); 430ffe3c632Sopenharmony_ci [msg release]; 431ffe3c632Sopenharmony_ci } 432ffe3c632Sopenharmony_ci { // optionalInt64 :: 0 433ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 434ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalInt64); 435ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt64)); 436ffe3c632Sopenharmony_ci msg.optionalInt64 = 0; 437ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalInt64); 438ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalInt64)); 439ffe3c632Sopenharmony_ci [msg release]; 440ffe3c632Sopenharmony_ci } 441ffe3c632Sopenharmony_ci 442ffe3c632Sopenharmony_ci { // optionalUint32 :: 1 443ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 444ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalUint32); 445ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint32)); 446ffe3c632Sopenharmony_ci msg.optionalUint32 = 1; 447ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalUint32); 448ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint32)); 449ffe3c632Sopenharmony_ci [msg release]; 450ffe3c632Sopenharmony_ci } 451ffe3c632Sopenharmony_ci { // optionalUint32 :: 0 452ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 453ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalUint32); 454ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint32)); 455ffe3c632Sopenharmony_ci msg.optionalUint32 = 0; 456ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalUint32); 457ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint32)); 458ffe3c632Sopenharmony_ci [msg release]; 459ffe3c632Sopenharmony_ci } 460ffe3c632Sopenharmony_ci 461ffe3c632Sopenharmony_ci { // optionalUint64 :: 1 462ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 463ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalUint64); 464ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint64)); 465ffe3c632Sopenharmony_ci msg.optionalUint64 = 1; 466ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalUint64); 467ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint64)); 468ffe3c632Sopenharmony_ci [msg release]; 469ffe3c632Sopenharmony_ci } 470ffe3c632Sopenharmony_ci { // optionalUint64 :: 0 471ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 472ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalUint64); 473ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint64)); 474ffe3c632Sopenharmony_ci msg.optionalUint64 = 0; 475ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalUint64); 476ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalUint64)); 477ffe3c632Sopenharmony_ci [msg release]; 478ffe3c632Sopenharmony_ci } 479ffe3c632Sopenharmony_ci 480ffe3c632Sopenharmony_ci { // optionalSint32 :: 1 481ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 482ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSint32); 483ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint32)); 484ffe3c632Sopenharmony_ci msg.optionalSint32 = 1; 485ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSint32); 486ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint32)); 487ffe3c632Sopenharmony_ci [msg release]; 488ffe3c632Sopenharmony_ci } 489ffe3c632Sopenharmony_ci { // optionalSint32 :: 0 490ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 491ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSint32); 492ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint32)); 493ffe3c632Sopenharmony_ci msg.optionalSint32 = 0; 494ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSint32); 495ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint32)); 496ffe3c632Sopenharmony_ci [msg release]; 497ffe3c632Sopenharmony_ci } 498ffe3c632Sopenharmony_ci 499ffe3c632Sopenharmony_ci { // optionalSint64 :: 1 500ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 501ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSint64); 502ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint64)); 503ffe3c632Sopenharmony_ci msg.optionalSint64 = 1; 504ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSint64); 505ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint64)); 506ffe3c632Sopenharmony_ci [msg release]; 507ffe3c632Sopenharmony_ci } 508ffe3c632Sopenharmony_ci { // optionalSint64 :: 0 509ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 510ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSint64); 511ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint64)); 512ffe3c632Sopenharmony_ci msg.optionalSint64 = 0; 513ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSint64); 514ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSint64)); 515ffe3c632Sopenharmony_ci [msg release]; 516ffe3c632Sopenharmony_ci } 517ffe3c632Sopenharmony_ci 518ffe3c632Sopenharmony_ci { // optionalFixed32 :: 1 519ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 520ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFixed32); 521ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed32)); 522ffe3c632Sopenharmony_ci msg.optionalFixed32 = 1; 523ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFixed32); 524ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed32)); 525ffe3c632Sopenharmony_ci [msg release]; 526ffe3c632Sopenharmony_ci } 527ffe3c632Sopenharmony_ci { // optionalFixed32 :: 0 528ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 529ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFixed32); 530ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed32)); 531ffe3c632Sopenharmony_ci msg.optionalFixed32 = 0; 532ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFixed32); 533ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed32)); 534ffe3c632Sopenharmony_ci [msg release]; 535ffe3c632Sopenharmony_ci } 536ffe3c632Sopenharmony_ci 537ffe3c632Sopenharmony_ci { // optionalFixed64 :: 1 538ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 539ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFixed64); 540ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed64)); 541ffe3c632Sopenharmony_ci msg.optionalFixed64 = 1; 542ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFixed64); 543ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed64)); 544ffe3c632Sopenharmony_ci [msg release]; 545ffe3c632Sopenharmony_ci } 546ffe3c632Sopenharmony_ci { // optionalFixed64 :: 0 547ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 548ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFixed64); 549ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed64)); 550ffe3c632Sopenharmony_ci msg.optionalFixed64 = 0; 551ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFixed64); 552ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFixed64)); 553ffe3c632Sopenharmony_ci [msg release]; 554ffe3c632Sopenharmony_ci } 555ffe3c632Sopenharmony_ci 556ffe3c632Sopenharmony_ci { // optionalSfixed32 :: 1 557ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 558ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSfixed32); 559ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed32)); 560ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 1; 561ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSfixed32); 562ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed32)); 563ffe3c632Sopenharmony_ci [msg release]; 564ffe3c632Sopenharmony_ci } 565ffe3c632Sopenharmony_ci { // optionalSfixed32 :: 0 566ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 567ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSfixed32); 568ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed32)); 569ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 0; 570ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSfixed32); 571ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed32)); 572ffe3c632Sopenharmony_ci [msg release]; 573ffe3c632Sopenharmony_ci } 574ffe3c632Sopenharmony_ci 575ffe3c632Sopenharmony_ci { // optionalSfixed64 :: 1 576ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 577ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSfixed64); 578ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed64)); 579ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 1; 580ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSfixed64); 581ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed64)); 582ffe3c632Sopenharmony_ci [msg release]; 583ffe3c632Sopenharmony_ci } 584ffe3c632Sopenharmony_ci { // optionalSfixed64 :: 0 585ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 586ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalSfixed64); 587ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed64)); 588ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 0; 589ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalSfixed64); 590ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalSfixed64)); 591ffe3c632Sopenharmony_ci [msg release]; 592ffe3c632Sopenharmony_ci } 593ffe3c632Sopenharmony_ci 594ffe3c632Sopenharmony_ci { // optionalFloat :: 1.0f 595ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 596ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFloat); 597ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFloat)); 598ffe3c632Sopenharmony_ci msg.optionalFloat = 1.0f; 599ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFloat); 600ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFloat)); 601ffe3c632Sopenharmony_ci [msg release]; 602ffe3c632Sopenharmony_ci } 603ffe3c632Sopenharmony_ci { // optionalFloat :: 0.0f 604ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 605ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalFloat); 606ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFloat)); 607ffe3c632Sopenharmony_ci msg.optionalFloat = 0.0f; 608ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalFloat); 609ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalFloat)); 610ffe3c632Sopenharmony_ci [msg release]; 611ffe3c632Sopenharmony_ci } 612ffe3c632Sopenharmony_ci 613ffe3c632Sopenharmony_ci { // optionalDouble :: 1.0 614ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 615ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalDouble); 616ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalDouble)); 617ffe3c632Sopenharmony_ci msg.optionalDouble = 1.0; 618ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalDouble); 619ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalDouble)); 620ffe3c632Sopenharmony_ci [msg release]; 621ffe3c632Sopenharmony_ci } 622ffe3c632Sopenharmony_ci { // optionalDouble :: 0.0 623ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 624ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalDouble); 625ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalDouble)); 626ffe3c632Sopenharmony_ci msg.optionalDouble = 0.0; 627ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalDouble); 628ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalDouble)); 629ffe3c632Sopenharmony_ci [msg release]; 630ffe3c632Sopenharmony_ci } 631ffe3c632Sopenharmony_ci 632ffe3c632Sopenharmony_ci { // optionalBool :: YES 633ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 634ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalBool); 635ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBool)); 636ffe3c632Sopenharmony_ci msg.optionalBool = YES; 637ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalBool); 638ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBool)); 639ffe3c632Sopenharmony_ci [msg release]; 640ffe3c632Sopenharmony_ci } 641ffe3c632Sopenharmony_ci { // optionalBool :: NO 642ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 643ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalBool); 644ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBool)); 645ffe3c632Sopenharmony_ci msg.optionalBool = NO; 646ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalBool); 647ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBool)); 648ffe3c632Sopenharmony_ci [msg release]; 649ffe3c632Sopenharmony_ci } 650ffe3c632Sopenharmony_ci 651ffe3c632Sopenharmony_ci { // optionalString :: @"foo" 652ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 653ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalString); 654ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 655ffe3c632Sopenharmony_ci msg.optionalString = @"foo"; 656ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalString); 657ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 658ffe3c632Sopenharmony_ci [msg release]; 659ffe3c632Sopenharmony_ci } 660ffe3c632Sopenharmony_ci { // optionalString :: @"" 661ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 662ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalString); 663ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 664ffe3c632Sopenharmony_ci msg.optionalString = @""; 665ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalString); 666ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 667ffe3c632Sopenharmony_ci [msg release]; 668ffe3c632Sopenharmony_ci } 669ffe3c632Sopenharmony_ci 670ffe3c632Sopenharmony_ci { // optionalBytes :: [@"foo" dataUsingEncoding:NSUTF8StringEncoding] 671ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 672ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalBytes); 673ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 674ffe3c632Sopenharmony_ci msg.optionalBytes = [@"foo" dataUsingEncoding:NSUTF8StringEncoding]; 675ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalBytes); 676ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 677ffe3c632Sopenharmony_ci [msg release]; 678ffe3c632Sopenharmony_ci } 679ffe3c632Sopenharmony_ci { // optionalBytes :: [NSData data] 680ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 681ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalBytes); 682ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 683ffe3c632Sopenharmony_ci msg.optionalBytes = [NSData data]; 684ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalBytes); 685ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 686ffe3c632Sopenharmony_ci [msg release]; 687ffe3c632Sopenharmony_ci } 688ffe3c632Sopenharmony_ci 689ffe3c632Sopenharmony_ci // 690ffe3c632Sopenharmony_ci // Test doesn't apply to optionalGroup/optionalMessage. 691ffe3c632Sopenharmony_ci // 692ffe3c632Sopenharmony_ci 693ffe3c632Sopenharmony_ci { // optionalEnum :: Message2_Enum_Bar 694ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 695ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalEnum); 696ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalEnum)); 697ffe3c632Sopenharmony_ci msg.optionalEnum = Message2_Enum_Bar; 698ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalEnum); 699ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalEnum)); 700ffe3c632Sopenharmony_ci [msg release]; 701ffe3c632Sopenharmony_ci } 702ffe3c632Sopenharmony_ci { // optionalEnum :: Message2_Enum_Foo 703ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 704ffe3c632Sopenharmony_ci XCTAssertFalse(msg.hasOptionalEnum); 705ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalEnum)); 706ffe3c632Sopenharmony_ci msg.optionalEnum = Message2_Enum_Foo; 707ffe3c632Sopenharmony_ci XCTAssertTrue(msg.hasOptionalEnum); 708ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalEnum)); 709ffe3c632Sopenharmony_ci [msg release]; 710ffe3c632Sopenharmony_ci } 711ffe3c632Sopenharmony_ci 712ffe3c632Sopenharmony_ci // 713ffe3c632Sopenharmony_ci // Nil can also be used to clear strings, bytes, groups, and messages. 714ffe3c632Sopenharmony_ci // 715ffe3c632Sopenharmony_ci 716ffe3c632Sopenharmony_ci { // optionalString 717ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 718ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 719ffe3c632Sopenharmony_ci msg.optionalString = @"foo"; 720ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 721ffe3c632Sopenharmony_ci msg.optionalString = nil; 722ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalString)); 723ffe3c632Sopenharmony_ci [msg release]; 724ffe3c632Sopenharmony_ci } 725ffe3c632Sopenharmony_ci 726ffe3c632Sopenharmony_ci { // optionalBytes 727ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 728ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 729ffe3c632Sopenharmony_ci msg.optionalBytes = [@"foo" dataUsingEncoding:NSUTF8StringEncoding]; 730ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 731ffe3c632Sopenharmony_ci msg.optionalBytes = nil; 732ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalBytes)); 733ffe3c632Sopenharmony_ci [msg release]; 734ffe3c632Sopenharmony_ci } 735ffe3c632Sopenharmony_ci 736ffe3c632Sopenharmony_ci { // optionalGroup 737ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 738ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalGroup)); 739ffe3c632Sopenharmony_ci msg.optionalGroup = [Message2_OptionalGroup message]; 740ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalGroup)); 741ffe3c632Sopenharmony_ci msg.optionalGroup = nil; 742ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalGroup)); 743ffe3c632Sopenharmony_ci [msg release]; 744ffe3c632Sopenharmony_ci } 745ffe3c632Sopenharmony_ci 746ffe3c632Sopenharmony_ci { // optionalMessage 747ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 748ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalMessage)); 749ffe3c632Sopenharmony_ci msg.optionalMessage = [Message2 message]; 750ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalMessage)); 751ffe3c632Sopenharmony_ci msg.optionalMessage = nil; 752ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message2_FieldNumber_OptionalMessage)); 753ffe3c632Sopenharmony_ci [msg release]; 754ffe3c632Sopenharmony_ci } 755ffe3c632Sopenharmony_ci 756ffe3c632Sopenharmony_ci// clang-format on 757ffe3c632Sopenharmony_ci//%PDDM-EXPAND-END PROTO2_TEST_HAS_FIELDS() 758ffe3c632Sopenharmony_ci} 759ffe3c632Sopenharmony_ci 760ffe3c632Sopenharmony_ci- (void)testProto3SingleFieldHasBehavior { 761ffe3c632Sopenharmony_ci // 762ffe3c632Sopenharmony_ci // Setting to any value but the default value (0) should result has* 763ffe3c632Sopenharmony_ci // being true. When set to the default, shouldn't be true. 764ffe3c632Sopenharmony_ci // 765ffe3c632Sopenharmony_ci 766ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO3_TEST_HAS_FIELD(FIELD, NON_ZERO_VALUE, ZERO_VALUE) 767ffe3c632Sopenharmony_ci//% { // optional##FIELD 768ffe3c632Sopenharmony_ci//% Message3 *msg = [[Message3 alloc] init]; 769ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 770ffe3c632Sopenharmony_ci//% msg.optional##FIELD = NON_ZERO_VALUE; 771ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 772ffe3c632Sopenharmony_ci//% msg.optional##FIELD = ZERO_VALUE; 773ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 774ffe3c632Sopenharmony_ci//% [msg release]; 775ffe3c632Sopenharmony_ci//% } 776ffe3c632Sopenharmony_ci//% 777ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO3_TEST_CLEAR_FIELD_WITH_NIL(FIELD, VALUE) 778ffe3c632Sopenharmony_ci//% { // optional##FIELD 779ffe3c632Sopenharmony_ci//% Message3 *msg = [[Message3 alloc] init]; 780ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 781ffe3c632Sopenharmony_ci//% msg.optional##FIELD = VALUE; 782ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 783ffe3c632Sopenharmony_ci//% msg.optional##FIELD = nil; 784ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_Optional##FIELD)); 785ffe3c632Sopenharmony_ci//% [msg release]; 786ffe3c632Sopenharmony_ci//% } 787ffe3c632Sopenharmony_ci//% 788ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO3_TEST_HAS_FIELDS() 789ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Int32, 1, 0) 790ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Int64, 1, 0) 791ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Uint32, 1, 0) 792ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Uint64, 1, 0) 793ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Sint32, 1, 0) 794ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Sint64, 1, 0) 795ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Fixed32, 1, 0) 796ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Fixed64, 1, 0) 797ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Sfixed32, 1, 0) 798ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Sfixed64, 1, 0) 799ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Float, 1.0f, 0.0f) 800ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Double, 1.0, 0.0) 801ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Bool, YES, NO) 802ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(String, @"foo", @"") 803ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Bytes, [@"foo" dataUsingEncoding:NSUTF8StringEncoding], [NSData data]) 804ffe3c632Sopenharmony_ci//% // 805ffe3c632Sopenharmony_ci//% // Test doesn't apply to optionalMessage (no groups in proto3). 806ffe3c632Sopenharmony_ci//% // 807ffe3c632Sopenharmony_ci//% 808ffe3c632Sopenharmony_ci//%PROTO3_TEST_HAS_FIELD(Enum, Message3_Enum_Bar, Message3_Enum_Foo) 809ffe3c632Sopenharmony_ci//% // 810ffe3c632Sopenharmony_ci//% // Nil can also be used to clear strings, bytes, and messages (no groups in proto3). 811ffe3c632Sopenharmony_ci//% // 812ffe3c632Sopenharmony_ci//% 813ffe3c632Sopenharmony_ci//%PROTO3_TEST_CLEAR_FIELD_WITH_NIL(String, @"foo") 814ffe3c632Sopenharmony_ci//%PROTO3_TEST_CLEAR_FIELD_WITH_NIL(Bytes, [@"foo" dataUsingEncoding:NSUTF8StringEncoding]) 815ffe3c632Sopenharmony_ci//%PROTO3_TEST_CLEAR_FIELD_WITH_NIL(Message, [Message3 message]) 816ffe3c632Sopenharmony_ci//%PDDM-EXPAND PROTO3_TEST_HAS_FIELDS() 817ffe3c632Sopenharmony_ci// This block of code is generated, do not edit it directly. 818ffe3c632Sopenharmony_ci// clang-format off 819ffe3c632Sopenharmony_ci 820ffe3c632Sopenharmony_ci { // optionalInt32 821ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 822ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt32)); 823ffe3c632Sopenharmony_ci msg.optionalInt32 = 1; 824ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt32)); 825ffe3c632Sopenharmony_ci msg.optionalInt32 = 0; 826ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt32)); 827ffe3c632Sopenharmony_ci [msg release]; 828ffe3c632Sopenharmony_ci } 829ffe3c632Sopenharmony_ci 830ffe3c632Sopenharmony_ci { // optionalInt64 831ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 832ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt64)); 833ffe3c632Sopenharmony_ci msg.optionalInt64 = 1; 834ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt64)); 835ffe3c632Sopenharmony_ci msg.optionalInt64 = 0; 836ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalInt64)); 837ffe3c632Sopenharmony_ci [msg release]; 838ffe3c632Sopenharmony_ci } 839ffe3c632Sopenharmony_ci 840ffe3c632Sopenharmony_ci { // optionalUint32 841ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 842ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint32)); 843ffe3c632Sopenharmony_ci msg.optionalUint32 = 1; 844ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint32)); 845ffe3c632Sopenharmony_ci msg.optionalUint32 = 0; 846ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint32)); 847ffe3c632Sopenharmony_ci [msg release]; 848ffe3c632Sopenharmony_ci } 849ffe3c632Sopenharmony_ci 850ffe3c632Sopenharmony_ci { // optionalUint64 851ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 852ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint64)); 853ffe3c632Sopenharmony_ci msg.optionalUint64 = 1; 854ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint64)); 855ffe3c632Sopenharmony_ci msg.optionalUint64 = 0; 856ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalUint64)); 857ffe3c632Sopenharmony_ci [msg release]; 858ffe3c632Sopenharmony_ci } 859ffe3c632Sopenharmony_ci 860ffe3c632Sopenharmony_ci { // optionalSint32 861ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 862ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint32)); 863ffe3c632Sopenharmony_ci msg.optionalSint32 = 1; 864ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint32)); 865ffe3c632Sopenharmony_ci msg.optionalSint32 = 0; 866ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint32)); 867ffe3c632Sopenharmony_ci [msg release]; 868ffe3c632Sopenharmony_ci } 869ffe3c632Sopenharmony_ci 870ffe3c632Sopenharmony_ci { // optionalSint64 871ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 872ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint64)); 873ffe3c632Sopenharmony_ci msg.optionalSint64 = 1; 874ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint64)); 875ffe3c632Sopenharmony_ci msg.optionalSint64 = 0; 876ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSint64)); 877ffe3c632Sopenharmony_ci [msg release]; 878ffe3c632Sopenharmony_ci } 879ffe3c632Sopenharmony_ci 880ffe3c632Sopenharmony_ci { // optionalFixed32 881ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 882ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed32)); 883ffe3c632Sopenharmony_ci msg.optionalFixed32 = 1; 884ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed32)); 885ffe3c632Sopenharmony_ci msg.optionalFixed32 = 0; 886ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed32)); 887ffe3c632Sopenharmony_ci [msg release]; 888ffe3c632Sopenharmony_ci } 889ffe3c632Sopenharmony_ci 890ffe3c632Sopenharmony_ci { // optionalFixed64 891ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 892ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed64)); 893ffe3c632Sopenharmony_ci msg.optionalFixed64 = 1; 894ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed64)); 895ffe3c632Sopenharmony_ci msg.optionalFixed64 = 0; 896ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFixed64)); 897ffe3c632Sopenharmony_ci [msg release]; 898ffe3c632Sopenharmony_ci } 899ffe3c632Sopenharmony_ci 900ffe3c632Sopenharmony_ci { // optionalSfixed32 901ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 902ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed32)); 903ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 1; 904ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed32)); 905ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 0; 906ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed32)); 907ffe3c632Sopenharmony_ci [msg release]; 908ffe3c632Sopenharmony_ci } 909ffe3c632Sopenharmony_ci 910ffe3c632Sopenharmony_ci { // optionalSfixed64 911ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 912ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed64)); 913ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 1; 914ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed64)); 915ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 0; 916ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalSfixed64)); 917ffe3c632Sopenharmony_ci [msg release]; 918ffe3c632Sopenharmony_ci } 919ffe3c632Sopenharmony_ci 920ffe3c632Sopenharmony_ci { // optionalFloat 921ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 922ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFloat)); 923ffe3c632Sopenharmony_ci msg.optionalFloat = 1.0f; 924ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFloat)); 925ffe3c632Sopenharmony_ci msg.optionalFloat = 0.0f; 926ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalFloat)); 927ffe3c632Sopenharmony_ci [msg release]; 928ffe3c632Sopenharmony_ci } 929ffe3c632Sopenharmony_ci 930ffe3c632Sopenharmony_ci { // optionalDouble 931ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 932ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalDouble)); 933ffe3c632Sopenharmony_ci msg.optionalDouble = 1.0; 934ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalDouble)); 935ffe3c632Sopenharmony_ci msg.optionalDouble = 0.0; 936ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalDouble)); 937ffe3c632Sopenharmony_ci [msg release]; 938ffe3c632Sopenharmony_ci } 939ffe3c632Sopenharmony_ci 940ffe3c632Sopenharmony_ci { // optionalBool 941ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 942ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBool)); 943ffe3c632Sopenharmony_ci msg.optionalBool = YES; 944ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBool)); 945ffe3c632Sopenharmony_ci msg.optionalBool = NO; 946ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBool)); 947ffe3c632Sopenharmony_ci [msg release]; 948ffe3c632Sopenharmony_ci } 949ffe3c632Sopenharmony_ci 950ffe3c632Sopenharmony_ci { // optionalString 951ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 952ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 953ffe3c632Sopenharmony_ci msg.optionalString = @"foo"; 954ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 955ffe3c632Sopenharmony_ci msg.optionalString = @""; 956ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 957ffe3c632Sopenharmony_ci [msg release]; 958ffe3c632Sopenharmony_ci } 959ffe3c632Sopenharmony_ci 960ffe3c632Sopenharmony_ci { // optionalBytes 961ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 962ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 963ffe3c632Sopenharmony_ci msg.optionalBytes = [@"foo" dataUsingEncoding:NSUTF8StringEncoding]; 964ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 965ffe3c632Sopenharmony_ci msg.optionalBytes = [NSData data]; 966ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 967ffe3c632Sopenharmony_ci [msg release]; 968ffe3c632Sopenharmony_ci } 969ffe3c632Sopenharmony_ci 970ffe3c632Sopenharmony_ci // 971ffe3c632Sopenharmony_ci // Test doesn't apply to optionalMessage (no groups in proto3). 972ffe3c632Sopenharmony_ci // 973ffe3c632Sopenharmony_ci 974ffe3c632Sopenharmony_ci { // optionalEnum 975ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 976ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalEnum)); 977ffe3c632Sopenharmony_ci msg.optionalEnum = Message3_Enum_Bar; 978ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalEnum)); 979ffe3c632Sopenharmony_ci msg.optionalEnum = Message3_Enum_Foo; 980ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalEnum)); 981ffe3c632Sopenharmony_ci [msg release]; 982ffe3c632Sopenharmony_ci } 983ffe3c632Sopenharmony_ci 984ffe3c632Sopenharmony_ci // 985ffe3c632Sopenharmony_ci // Nil can also be used to clear strings, bytes, and messages (no groups in proto3). 986ffe3c632Sopenharmony_ci // 987ffe3c632Sopenharmony_ci 988ffe3c632Sopenharmony_ci { // optionalString 989ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 990ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 991ffe3c632Sopenharmony_ci msg.optionalString = @"foo"; 992ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 993ffe3c632Sopenharmony_ci msg.optionalString = nil; 994ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalString)); 995ffe3c632Sopenharmony_ci [msg release]; 996ffe3c632Sopenharmony_ci } 997ffe3c632Sopenharmony_ci 998ffe3c632Sopenharmony_ci { // optionalBytes 999ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 1000ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 1001ffe3c632Sopenharmony_ci msg.optionalBytes = [@"foo" dataUsingEncoding:NSUTF8StringEncoding]; 1002ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 1003ffe3c632Sopenharmony_ci msg.optionalBytes = nil; 1004ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalBytes)); 1005ffe3c632Sopenharmony_ci [msg release]; 1006ffe3c632Sopenharmony_ci } 1007ffe3c632Sopenharmony_ci 1008ffe3c632Sopenharmony_ci { // optionalMessage 1009ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 1010ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalMessage)); 1011ffe3c632Sopenharmony_ci msg.optionalMessage = [Message3 message]; 1012ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalMessage)); 1013ffe3c632Sopenharmony_ci msg.optionalMessage = nil; 1014ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3_FieldNumber_OptionalMessage)); 1015ffe3c632Sopenharmony_ci [msg release]; 1016ffe3c632Sopenharmony_ci } 1017ffe3c632Sopenharmony_ci 1018ffe3c632Sopenharmony_ci// clang-format on 1019ffe3c632Sopenharmony_ci//%PDDM-EXPAND-END PROTO3_TEST_HAS_FIELDS() 1020ffe3c632Sopenharmony_ci} 1021ffe3c632Sopenharmony_ci 1022ffe3c632Sopenharmony_ci- (void)testProto3SingleOptionalFieldHasBehavior { 1023ffe3c632Sopenharmony_ci // 1024ffe3c632Sopenharmony_ci // Setting to any value including the default (0) should result in true. 1025ffe3c632Sopenharmony_ci // 1026ffe3c632Sopenharmony_ci 1027ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO3_TEST_OPTIONAL_HAS_FIELD(FIELD, NON_ZERO_VALUE, ZERO_VALUE) 1028ffe3c632Sopenharmony_ci//% { // optional##FIELD 1029ffe3c632Sopenharmony_ci//% Message3Optional *msg = [[Message3Optional alloc] init]; 1030ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_Optional##FIELD)); 1031ffe3c632Sopenharmony_ci//% msg.optional##FIELD = NON_ZERO_VALUE; 1032ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_Optional##FIELD)); 1033ffe3c632Sopenharmony_ci//% msg.hasOptional##FIELD = NO; 1034ffe3c632Sopenharmony_ci//% XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_Optional##FIELD)); 1035ffe3c632Sopenharmony_ci//% msg.optional##FIELD = ZERO_VALUE; 1036ffe3c632Sopenharmony_ci//% XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_Optional##FIELD)); 1037ffe3c632Sopenharmony_ci//% [msg release]; 1038ffe3c632Sopenharmony_ci//% } 1039ffe3c632Sopenharmony_ci//% 1040ffe3c632Sopenharmony_ci//%PDDM-DEFINE PROTO3_TEST_OPTIONAL_HAS_FIELDS() 1041ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Int32, 1, 0) 1042ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Int64, 1, 0) 1043ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Uint32, 1, 0) 1044ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Uint64, 1, 0) 1045ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Sint32, 1, 0) 1046ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Sint64, 1, 0) 1047ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Fixed32, 1, 0) 1048ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Fixed64, 1, 0) 1049ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Sfixed32, 1, 0) 1050ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Sfixed64, 1, 0) 1051ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Float, 1.0f, 0.0f) 1052ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Double, 1.0, 0.0) 1053ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Bool, YES, NO) 1054ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(String, @"foo", @"") 1055ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Bytes, [@"foo" dataUsingEncoding:NSUTF8StringEncoding], [NSData data]) 1056ffe3c632Sopenharmony_ci//% // 1057ffe3c632Sopenharmony_ci//% // Test doesn't apply to optionalMessage (no groups in proto3). 1058ffe3c632Sopenharmony_ci//% // 1059ffe3c632Sopenharmony_ci//% 1060ffe3c632Sopenharmony_ci//%PROTO3_TEST_OPTIONAL_HAS_FIELD(Enum, Message3Optional_Enum_Bar, Message3Optional_Enum_Foo) 1061ffe3c632Sopenharmony_ci//%PDDM-EXPAND PROTO3_TEST_OPTIONAL_HAS_FIELDS() 1062ffe3c632Sopenharmony_ci// This block of code is generated, do not edit it directly. 1063ffe3c632Sopenharmony_ci// clang-format off 1064ffe3c632Sopenharmony_ci 1065ffe3c632Sopenharmony_ci { // optionalInt32 1066ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1067ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt32)); 1068ffe3c632Sopenharmony_ci msg.optionalInt32 = 1; 1069ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt32)); 1070ffe3c632Sopenharmony_ci msg.hasOptionalInt32 = NO; 1071ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt32)); 1072ffe3c632Sopenharmony_ci msg.optionalInt32 = 0; 1073ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt32)); 1074ffe3c632Sopenharmony_ci [msg release]; 1075ffe3c632Sopenharmony_ci } 1076ffe3c632Sopenharmony_ci 1077ffe3c632Sopenharmony_ci { // optionalInt64 1078ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1079ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt64)); 1080ffe3c632Sopenharmony_ci msg.optionalInt64 = 1; 1081ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt64)); 1082ffe3c632Sopenharmony_ci msg.hasOptionalInt64 = NO; 1083ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt64)); 1084ffe3c632Sopenharmony_ci msg.optionalInt64 = 0; 1085ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalInt64)); 1086ffe3c632Sopenharmony_ci [msg release]; 1087ffe3c632Sopenharmony_ci } 1088ffe3c632Sopenharmony_ci 1089ffe3c632Sopenharmony_ci { // optionalUint32 1090ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1091ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint32)); 1092ffe3c632Sopenharmony_ci msg.optionalUint32 = 1; 1093ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint32)); 1094ffe3c632Sopenharmony_ci msg.hasOptionalUint32 = NO; 1095ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint32)); 1096ffe3c632Sopenharmony_ci msg.optionalUint32 = 0; 1097ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint32)); 1098ffe3c632Sopenharmony_ci [msg release]; 1099ffe3c632Sopenharmony_ci } 1100ffe3c632Sopenharmony_ci 1101ffe3c632Sopenharmony_ci { // optionalUint64 1102ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1103ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint64)); 1104ffe3c632Sopenharmony_ci msg.optionalUint64 = 1; 1105ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint64)); 1106ffe3c632Sopenharmony_ci msg.hasOptionalUint64 = NO; 1107ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint64)); 1108ffe3c632Sopenharmony_ci msg.optionalUint64 = 0; 1109ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalUint64)); 1110ffe3c632Sopenharmony_ci [msg release]; 1111ffe3c632Sopenharmony_ci } 1112ffe3c632Sopenharmony_ci 1113ffe3c632Sopenharmony_ci { // optionalSint32 1114ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1115ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint32)); 1116ffe3c632Sopenharmony_ci msg.optionalSint32 = 1; 1117ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint32)); 1118ffe3c632Sopenharmony_ci msg.hasOptionalSint32 = NO; 1119ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint32)); 1120ffe3c632Sopenharmony_ci msg.optionalSint32 = 0; 1121ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint32)); 1122ffe3c632Sopenharmony_ci [msg release]; 1123ffe3c632Sopenharmony_ci } 1124ffe3c632Sopenharmony_ci 1125ffe3c632Sopenharmony_ci { // optionalSint64 1126ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1127ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint64)); 1128ffe3c632Sopenharmony_ci msg.optionalSint64 = 1; 1129ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint64)); 1130ffe3c632Sopenharmony_ci msg.hasOptionalSint64 = NO; 1131ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint64)); 1132ffe3c632Sopenharmony_ci msg.optionalSint64 = 0; 1133ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSint64)); 1134ffe3c632Sopenharmony_ci [msg release]; 1135ffe3c632Sopenharmony_ci } 1136ffe3c632Sopenharmony_ci 1137ffe3c632Sopenharmony_ci { // optionalFixed32 1138ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1139ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed32)); 1140ffe3c632Sopenharmony_ci msg.optionalFixed32 = 1; 1141ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed32)); 1142ffe3c632Sopenharmony_ci msg.hasOptionalFixed32 = NO; 1143ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed32)); 1144ffe3c632Sopenharmony_ci msg.optionalFixed32 = 0; 1145ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed32)); 1146ffe3c632Sopenharmony_ci [msg release]; 1147ffe3c632Sopenharmony_ci } 1148ffe3c632Sopenharmony_ci 1149ffe3c632Sopenharmony_ci { // optionalFixed64 1150ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1151ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed64)); 1152ffe3c632Sopenharmony_ci msg.optionalFixed64 = 1; 1153ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed64)); 1154ffe3c632Sopenharmony_ci msg.hasOptionalFixed64 = NO; 1155ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed64)); 1156ffe3c632Sopenharmony_ci msg.optionalFixed64 = 0; 1157ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFixed64)); 1158ffe3c632Sopenharmony_ci [msg release]; 1159ffe3c632Sopenharmony_ci } 1160ffe3c632Sopenharmony_ci 1161ffe3c632Sopenharmony_ci { // optionalSfixed32 1162ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1163ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed32)); 1164ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 1; 1165ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed32)); 1166ffe3c632Sopenharmony_ci msg.hasOptionalSfixed32 = NO; 1167ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed32)); 1168ffe3c632Sopenharmony_ci msg.optionalSfixed32 = 0; 1169ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed32)); 1170ffe3c632Sopenharmony_ci [msg release]; 1171ffe3c632Sopenharmony_ci } 1172ffe3c632Sopenharmony_ci 1173ffe3c632Sopenharmony_ci { // optionalSfixed64 1174ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1175ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed64)); 1176ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 1; 1177ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed64)); 1178ffe3c632Sopenharmony_ci msg.hasOptionalSfixed64 = NO; 1179ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed64)); 1180ffe3c632Sopenharmony_ci msg.optionalSfixed64 = 0; 1181ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalSfixed64)); 1182ffe3c632Sopenharmony_ci [msg release]; 1183ffe3c632Sopenharmony_ci } 1184ffe3c632Sopenharmony_ci 1185ffe3c632Sopenharmony_ci { // optionalFloat 1186ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1187ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFloat)); 1188ffe3c632Sopenharmony_ci msg.optionalFloat = 1.0f; 1189ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFloat)); 1190ffe3c632Sopenharmony_ci msg.hasOptionalFloat = NO; 1191ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFloat)); 1192ffe3c632Sopenharmony_ci msg.optionalFloat = 0.0f; 1193ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalFloat)); 1194ffe3c632Sopenharmony_ci [msg release]; 1195ffe3c632Sopenharmony_ci } 1196ffe3c632Sopenharmony_ci 1197ffe3c632Sopenharmony_ci { // optionalDouble 1198ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1199ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalDouble)); 1200ffe3c632Sopenharmony_ci msg.optionalDouble = 1.0; 1201ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalDouble)); 1202ffe3c632Sopenharmony_ci msg.hasOptionalDouble = NO; 1203ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalDouble)); 1204ffe3c632Sopenharmony_ci msg.optionalDouble = 0.0; 1205ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalDouble)); 1206ffe3c632Sopenharmony_ci [msg release]; 1207ffe3c632Sopenharmony_ci } 1208ffe3c632Sopenharmony_ci 1209ffe3c632Sopenharmony_ci { // optionalBool 1210ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1211ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBool)); 1212ffe3c632Sopenharmony_ci msg.optionalBool = YES; 1213ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBool)); 1214ffe3c632Sopenharmony_ci msg.hasOptionalBool = NO; 1215ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBool)); 1216ffe3c632Sopenharmony_ci msg.optionalBool = NO; 1217ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBool)); 1218ffe3c632Sopenharmony_ci [msg release]; 1219ffe3c632Sopenharmony_ci } 1220ffe3c632Sopenharmony_ci 1221ffe3c632Sopenharmony_ci { // optionalString 1222ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1223ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalString)); 1224ffe3c632Sopenharmony_ci msg.optionalString = @"foo"; 1225ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalString)); 1226ffe3c632Sopenharmony_ci msg.hasOptionalString = NO; 1227ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalString)); 1228ffe3c632Sopenharmony_ci msg.optionalString = @""; 1229ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalString)); 1230ffe3c632Sopenharmony_ci [msg release]; 1231ffe3c632Sopenharmony_ci } 1232ffe3c632Sopenharmony_ci 1233ffe3c632Sopenharmony_ci { // optionalBytes 1234ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1235ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBytes)); 1236ffe3c632Sopenharmony_ci msg.optionalBytes = [@"foo" dataUsingEncoding:NSUTF8StringEncoding]; 1237ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBytes)); 1238ffe3c632Sopenharmony_ci msg.hasOptionalBytes = NO; 1239ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBytes)); 1240ffe3c632Sopenharmony_ci msg.optionalBytes = [NSData data]; 1241ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalBytes)); 1242ffe3c632Sopenharmony_ci [msg release]; 1243ffe3c632Sopenharmony_ci } 1244ffe3c632Sopenharmony_ci 1245ffe3c632Sopenharmony_ci // 1246ffe3c632Sopenharmony_ci // Test doesn't apply to optionalMessage (no groups in proto3). 1247ffe3c632Sopenharmony_ci // 1248ffe3c632Sopenharmony_ci 1249ffe3c632Sopenharmony_ci { // optionalEnum 1250ffe3c632Sopenharmony_ci Message3Optional *msg = [[Message3Optional alloc] init]; 1251ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalEnum)); 1252ffe3c632Sopenharmony_ci msg.optionalEnum = Message3Optional_Enum_Bar; 1253ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalEnum)); 1254ffe3c632Sopenharmony_ci msg.hasOptionalEnum = NO; 1255ffe3c632Sopenharmony_ci XCTAssertFalse(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalEnum)); 1256ffe3c632Sopenharmony_ci msg.optionalEnum = Message3Optional_Enum_Foo; 1257ffe3c632Sopenharmony_ci XCTAssertTrue(GPBMessageHasFieldNumberSet(msg, Message3Optional_FieldNumber_OptionalEnum)); 1258ffe3c632Sopenharmony_ci [msg release]; 1259ffe3c632Sopenharmony_ci } 1260ffe3c632Sopenharmony_ci 1261ffe3c632Sopenharmony_ci// clang-format on 1262ffe3c632Sopenharmony_ci//%PDDM-EXPAND-END PROTO3_TEST_OPTIONAL_HAS_FIELDS() 1263ffe3c632Sopenharmony_ci} 1264ffe3c632Sopenharmony_ci 1265ffe3c632Sopenharmony_ci- (void)testAccessingProto2UnknownEnumValues { 1266ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 1267ffe3c632Sopenharmony_ci 1268ffe3c632Sopenharmony_ci // Set it to something non zero, try and confirm it doesn't change. 1269ffe3c632Sopenharmony_ci 1270ffe3c632Sopenharmony_ci msg.optionalEnum = Message2_Enum_Bar; 1271ffe3c632Sopenharmony_ci XCTAssertThrowsSpecificNamed(msg.optionalEnum = 666, NSException, 1272ffe3c632Sopenharmony_ci NSInvalidArgumentException); 1273ffe3c632Sopenharmony_ci XCTAssertEqual(msg.optionalEnum, Message2_Enum_Bar); 1274ffe3c632Sopenharmony_ci 1275ffe3c632Sopenharmony_ci msg.oneofEnum = Message2_Enum_Bar; 1276ffe3c632Sopenharmony_ci XCTAssertThrowsSpecificNamed(msg.oneofEnum = 666, NSException, 1277ffe3c632Sopenharmony_ci NSInvalidArgumentException); 1278ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Bar); 1279ffe3c632Sopenharmony_ci 1280ffe3c632Sopenharmony_ci [msg release]; 1281ffe3c632Sopenharmony_ci} 1282ffe3c632Sopenharmony_ci 1283ffe3c632Sopenharmony_ci- (void)testAccessingProto3UnknownEnumValues { 1284ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 1285ffe3c632Sopenharmony_ci 1286ffe3c632Sopenharmony_ci // Set it to something non zero, try and confirm it doesn't change. 1287ffe3c632Sopenharmony_ci 1288ffe3c632Sopenharmony_ci msg.optionalEnum = Message3_Enum_Bar; 1289ffe3c632Sopenharmony_ci XCTAssertThrowsSpecificNamed(msg.optionalEnum = 666, NSException, 1290ffe3c632Sopenharmony_ci NSInvalidArgumentException); 1291ffe3c632Sopenharmony_ci XCTAssertEqual(msg.optionalEnum, Message3_Enum_Bar); 1292ffe3c632Sopenharmony_ci 1293ffe3c632Sopenharmony_ci msg.oneofEnum = Message3_Enum_Bar; 1294ffe3c632Sopenharmony_ci XCTAssertThrowsSpecificNamed(msg.oneofEnum = 666, NSException, 1295ffe3c632Sopenharmony_ci NSInvalidArgumentException); 1296ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Bar); 1297ffe3c632Sopenharmony_ci 1298ffe3c632Sopenharmony_ci // Set via raw api to confirm it works. 1299ffe3c632Sopenharmony_ci 1300ffe3c632Sopenharmony_ci SetMessage3_OptionalEnum_RawValue(msg, 666); 1301ffe3c632Sopenharmony_ci XCTAssertEqual(msg.optionalEnum, 1302ffe3c632Sopenharmony_ci Message3_Enum_GPBUnrecognizedEnumeratorValue); 1303ffe3c632Sopenharmony_ci XCTAssertEqual(Message3_OptionalEnum_RawValue(msg), 666); 1304ffe3c632Sopenharmony_ci 1305ffe3c632Sopenharmony_ci SetMessage3_OneofEnum_RawValue(msg, 666); 1306ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_GPBUnrecognizedEnumeratorValue); 1307ffe3c632Sopenharmony_ci XCTAssertEqual(Message3_OneofEnum_RawValue(msg), 666); 1308ffe3c632Sopenharmony_ci 1309ffe3c632Sopenharmony_ci [msg release]; 1310ffe3c632Sopenharmony_ci} 1311ffe3c632Sopenharmony_ci 1312ffe3c632Sopenharmony_ci- (void)testProto2OneofBasicBehaviors { 1313ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 1314ffe3c632Sopenharmony_ci 1315ffe3c632Sopenharmony_ci NSString *oneofStringDefault = @"string"; 1316ffe3c632Sopenharmony_ci NSData *oneofBytesDefault = [@"data" dataUsingEncoding:NSUTF8StringEncoding]; 1317ffe3c632Sopenharmony_ci 1318ffe3c632Sopenharmony_ci // Nothing set. 1319ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase); 1320ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1321ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1322ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1323ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1324ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1325ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1326ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1327ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1328ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1329ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1330ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1331ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1332ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1333ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1334ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1335ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1336ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1337ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1338ffe3c632Sopenharmony_ci 1339ffe3c632Sopenharmony_ci // Set, check the case, check everyone has default but the one, confirm case 1340ffe3c632Sopenharmony_ci // didn't change. 1341ffe3c632Sopenharmony_ci 1342ffe3c632Sopenharmony_ci msg.oneofInt32 = 1; 1343ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofInt32); 1344ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 1); 1345ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1346ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1347ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1348ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1349ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1350ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1351ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1352ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1353ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1354ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1355ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1356ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1357ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1358ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1359ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1360ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1361ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1362ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofInt32); 1363ffe3c632Sopenharmony_ci 1364ffe3c632Sopenharmony_ci msg.oneofInt64 = 2; 1365ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofInt64); 1366ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1367ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 2); 1368ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1369ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1370ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1371ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1372ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1373ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1374ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1375ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1376ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1377ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1378ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1379ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1380ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1381ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1382ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1383ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1384ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofInt64); 1385ffe3c632Sopenharmony_ci 1386ffe3c632Sopenharmony_ci msg.oneofUint32 = 3; 1387ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofUint32); 1388ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1389ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1390ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 3U); 1391ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1392ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1393ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1394ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1395ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1396ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1397ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1398ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1399ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1400ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1401ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1402ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1403ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1404ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1405ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1406ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofUint32); 1407ffe3c632Sopenharmony_ci 1408ffe3c632Sopenharmony_ci msg.oneofUint64 = 4; 1409ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofUint64); 1410ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1411ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1412ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1413ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 4U); 1414ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1415ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1416ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1417ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1418ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1419ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1420ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1421ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1422ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1423ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1424ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1425ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1426ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1427ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1428ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofUint64); 1429ffe3c632Sopenharmony_ci 1430ffe3c632Sopenharmony_ci msg.oneofSint32 = 5; 1431ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSint32); 1432ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1433ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1434ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1435ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1436ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 5); 1437ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1438ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1439ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1440ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1441ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1442ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1443ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1444ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1445ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1446ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1447ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1448ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1449ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1450ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSint32); 1451ffe3c632Sopenharmony_ci 1452ffe3c632Sopenharmony_ci msg.oneofSint64 = 6; 1453ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSint64); 1454ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1455ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1456ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1457ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1458ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1459ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 6); 1460ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1461ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1462ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1463ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1464ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1465ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1466ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1467ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1468ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1469ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1470ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1471ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1472ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSint64); 1473ffe3c632Sopenharmony_ci 1474ffe3c632Sopenharmony_ci msg.oneofFixed32 = 7; 1475ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFixed32); 1476ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1477ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1478ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1479ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1480ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1481ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1482ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 7U); 1483ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1484ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1485ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1486ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1487ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1488ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1489ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1490ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1491ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1492ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1493ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1494ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFixed32); 1495ffe3c632Sopenharmony_ci 1496ffe3c632Sopenharmony_ci msg.oneofFixed64 = 8; 1497ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFixed64); 1498ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1499ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1500ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1501ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1502ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1503ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1504ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1505ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 8U); 1506ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1507ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1508ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1509ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1510ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1511ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1512ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1513ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1514ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1515ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1516ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFixed64); 1517ffe3c632Sopenharmony_ci 1518ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 9; 1519ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSfixed32); 1520ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1521ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1522ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1523ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1524ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1525ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1526ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1527ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1528ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 9); 1529ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1530ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1531ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1532ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1533ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1534ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1535ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1536ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1537ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1538ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSfixed32); 1539ffe3c632Sopenharmony_ci 1540ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 10; 1541ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSfixed64); 1542ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1543ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1544ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1545ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1546ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1547ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1548ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1549ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1550ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1551ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 10); 1552ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1553ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1554ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1555ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1556ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1557ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1558ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1559ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1560ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofSfixed64); 1561ffe3c632Sopenharmony_ci 1562ffe3c632Sopenharmony_ci msg.oneofFloat = 11.0f; 1563ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFloat); 1564ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1565ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1566ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1567ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1568ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1569ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1570ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1571ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1572ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1573ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1574ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 11.0f); 1575ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1576ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1577ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1578ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1579ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1580ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1581ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1582ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofFloat); 1583ffe3c632Sopenharmony_ci 1584ffe3c632Sopenharmony_ci msg.oneofDouble = 12.0; 1585ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofDouble); 1586ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1587ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1588ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1589ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1590ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1591ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1592ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1593ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1594ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1595ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1596ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1597ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 12.0); 1598ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1599ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1600ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1601ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1602ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1603ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1604ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofDouble); 1605ffe3c632Sopenharmony_ci 1606ffe3c632Sopenharmony_ci msg.oneofBool = NO; 1607ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofBool); 1608ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1609ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1610ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1611ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1612ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1613ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1614ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1615ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1616ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1617ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1618ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1619ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1620ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1621ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1622ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1623ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1624ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1625ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1626ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofBool); 1627ffe3c632Sopenharmony_ci 1628ffe3c632Sopenharmony_ci msg.oneofString = @"foo"; 1629ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofString); 1630ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1631ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1632ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1633ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1634ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1635ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1636ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1637ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1638ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1639ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1640ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1641ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1642ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1643ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, @"foo"); 1644ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1645ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1646ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1647ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1648ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofString); 1649ffe3c632Sopenharmony_ci 1650ffe3c632Sopenharmony_ci msg.oneofBytes = [@"bar" dataUsingEncoding:NSUTF8StringEncoding]; 1651ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofBytes); 1652ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1653ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1654ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1655ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1656ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1657ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1658ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1659ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1660ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1661ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1662ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1663ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1664ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1665ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1666ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, 1667ffe3c632Sopenharmony_ci [@"bar" dataUsingEncoding:NSUTF8StringEncoding]); 1668ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1669ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1670ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1671ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofBytes); 1672ffe3c632Sopenharmony_ci 1673ffe3c632Sopenharmony_ci Message2_OneofGroup *group = [Message2_OneofGroup message]; 1674ffe3c632Sopenharmony_ci msg.oneofGroup = group; 1675ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofGroup); 1676ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1677ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1678ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1679ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1680ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1681ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1682ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1683ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1684ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1685ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1686ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1687ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1688ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1689ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1690ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1691ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofGroup, group); // Pointer compare. 1692ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1693ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1694ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofGroup); 1695ffe3c632Sopenharmony_ci 1696ffe3c632Sopenharmony_ci Message2 *subMessage = [Message2 message]; 1697ffe3c632Sopenharmony_ci msg.oneofMessage = subMessage; 1698ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofMessage); 1699ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1700ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1701ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1702ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1703ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1704ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1705ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1706ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1707ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1708ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1709ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1710ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1711ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1712ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1713ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1714ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1715ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofGroup, group); // Pointer compare. 1716ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofMessage, subMessage); // Pointer compare. 1717ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz); 1718ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofMessage); 1719ffe3c632Sopenharmony_ci 1720ffe3c632Sopenharmony_ci msg.oneofEnum = Message2_Enum_Bar; 1721ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofEnum); 1722ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100); 1723ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101); 1724ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U); 1725ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U); 1726ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104); 1727ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105); 1728ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U); 1729ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U); 1730ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108); 1731ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109); 1732ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f); 1733ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0); 1734ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 1735ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1736ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1737ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 1738ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofGroup, group); // Pointer compare. 1739ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1740ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofMessage, subMessage); // Pointer compare. 1741ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Bar); 1742ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_OneofEnum); 1743ffe3c632Sopenharmony_ci 1744ffe3c632Sopenharmony_ci // Test setting/calling clear clearing. 1745ffe3c632Sopenharmony_ci 1746ffe3c632Sopenharmony_ci [msg release]; 1747ffe3c632Sopenharmony_ci msg = [[Message2 alloc] init]; 1748ffe3c632Sopenharmony_ci 1749ffe3c632Sopenharmony_ci int32_t values[] = { 1750ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofInt32, 1751ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofInt64, 1752ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofUint32, 1753ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofUint64, 1754ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSint32, 1755ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSint64, 1756ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFixed32, 1757ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFixed64, 1758ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSfixed32, 1759ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSfixed64, 1760ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFloat, 1761ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofDouble, 1762ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofBool, 1763ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofString, 1764ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofBytes, 1765ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofGroup, 1766ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofMessage, 1767ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofEnum, 1768ffe3c632Sopenharmony_ci }; 1769ffe3c632Sopenharmony_ci 1770ffe3c632Sopenharmony_ci for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) { 1771ffe3c632Sopenharmony_ci switch (values[i]) { 1772ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofInt32: 1773ffe3c632Sopenharmony_ci msg.oneofInt32 = 1; 1774ffe3c632Sopenharmony_ci break; 1775ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofInt64: 1776ffe3c632Sopenharmony_ci msg.oneofInt64 = 2; 1777ffe3c632Sopenharmony_ci break; 1778ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofUint32: 1779ffe3c632Sopenharmony_ci msg.oneofUint32 = 3; 1780ffe3c632Sopenharmony_ci break; 1781ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofUint64: 1782ffe3c632Sopenharmony_ci msg.oneofUint64 = 4; 1783ffe3c632Sopenharmony_ci break; 1784ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSint32: 1785ffe3c632Sopenharmony_ci msg.oneofSint32 = 5; 1786ffe3c632Sopenharmony_ci break; 1787ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSint64: 1788ffe3c632Sopenharmony_ci msg.oneofSint64 = 6; 1789ffe3c632Sopenharmony_ci break; 1790ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFixed32: 1791ffe3c632Sopenharmony_ci msg.oneofFixed32 = 7; 1792ffe3c632Sopenharmony_ci break; 1793ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFixed64: 1794ffe3c632Sopenharmony_ci msg.oneofFixed64 = 8; 1795ffe3c632Sopenharmony_ci break; 1796ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSfixed32: 1797ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 9; 1798ffe3c632Sopenharmony_ci break; 1799ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSfixed64: 1800ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 10; 1801ffe3c632Sopenharmony_ci break; 1802ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFloat: 1803ffe3c632Sopenharmony_ci msg.oneofFloat = 11.0f; 1804ffe3c632Sopenharmony_ci break; 1805ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofDouble: 1806ffe3c632Sopenharmony_ci msg.oneofDouble = 12.0; 1807ffe3c632Sopenharmony_ci break; 1808ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofBool: 1809ffe3c632Sopenharmony_ci msg.oneofBool = YES; 1810ffe3c632Sopenharmony_ci break; 1811ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofString: 1812ffe3c632Sopenharmony_ci msg.oneofString = @"foo"; 1813ffe3c632Sopenharmony_ci break; 1814ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofBytes: 1815ffe3c632Sopenharmony_ci msg.oneofBytes = [@"bar" dataUsingEncoding:NSUTF8StringEncoding]; 1816ffe3c632Sopenharmony_ci break; 1817ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofGroup: 1818ffe3c632Sopenharmony_ci msg.oneofGroup = group; 1819ffe3c632Sopenharmony_ci break; 1820ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofMessage: 1821ffe3c632Sopenharmony_ci msg.oneofMessage = subMessage; 1822ffe3c632Sopenharmony_ci break; 1823ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofEnum: 1824ffe3c632Sopenharmony_ci msg.oneofEnum = Message2_Enum_Bar; 1825ffe3c632Sopenharmony_ci break; 1826ffe3c632Sopenharmony_ci default: 1827ffe3c632Sopenharmony_ci XCTFail(@"shouldn't happen, loop: %zd, value: %d", i, values[i]); 1828ffe3c632Sopenharmony_ci break; 1829ffe3c632Sopenharmony_ci } 1830ffe3c632Sopenharmony_ci 1831ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, values[i], "Loop: %zd", i); 1832ffe3c632Sopenharmony_ci // No need to check the value was set, the above tests did that. 1833ffe3c632Sopenharmony_ci Message2_ClearOOneOfCase(msg); 1834ffe3c632Sopenharmony_ci // Nothing in the case. 1835ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase, 1836ffe3c632Sopenharmony_ci "Loop: %zd", i); 1837ffe3c632Sopenharmony_ci // Confirm everything is back to defaults after a clear. 1838ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100, "Loop: %zd", i); 1839ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101, "Loop: %zd", i); 1840ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U, "Loop: %zd", i); 1841ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U, "Loop: %zd", i); 1842ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104, "Loop: %zd", i); 1843ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105, "Loop: %zd", i); 1844ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U, "Loop: %zd", i); 1845ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U, "Loop: %zd", i); 1846ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108, "Loop: %zd", i); 1847ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109, "Loop: %zd", i); 1848ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f, "Loop: %zd", i); 1849ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0, "Loop: %zd", i); 1850ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES, "Loop: %zd", i); 1851ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault, "Loop: %zd", i); 1852ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault, "Loop: %zd", i); 1853ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup, "Loop: %zd", i); 1854ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofGroup, group, "Loop: %zd", 1855ffe3c632Sopenharmony_ci i); // Pointer compare. 1856ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage, "Loop: %zd", i); 1857ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofMessage, subMessage, "Loop: %zd", 1858ffe3c632Sopenharmony_ci i); // Pointer compare. 1859ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz, "Loop: %zd", i); 1860ffe3c632Sopenharmony_ci } 1861ffe3c632Sopenharmony_ci 1862ffe3c632Sopenharmony_ci [msg release]; 1863ffe3c632Sopenharmony_ci} 1864ffe3c632Sopenharmony_ci 1865ffe3c632Sopenharmony_ci- (void)testProto3OneofBasicBehaviors { 1866ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 1867ffe3c632Sopenharmony_ci 1868ffe3c632Sopenharmony_ci NSString *oneofStringDefault = @""; 1869ffe3c632Sopenharmony_ci NSData *oneofBytesDefault = [NSData data]; 1870ffe3c632Sopenharmony_ci 1871ffe3c632Sopenharmony_ci // Nothing set. 1872ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_GPBUnsetOneOfCase); 1873ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 1874ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 1875ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 1876ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 1877ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 1878ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1879ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1880ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1881ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1882ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1883ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1884ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1885ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1886ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1887ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1888ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1889ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1890ffe3c632Sopenharmony_ci 1891ffe3c632Sopenharmony_ci // Set, check the case, check everyone has default but the one, confirm case 1892ffe3c632Sopenharmony_ci // didn't change. 1893ffe3c632Sopenharmony_ci 1894ffe3c632Sopenharmony_ci msg.oneofInt32 = 1; 1895ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofInt32); 1896ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 1); 1897ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 1898ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 1899ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 1900ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 1901ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1902ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1903ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1904ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1905ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1906ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1907ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1908ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1909ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1910ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1911ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1912ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1913ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofInt32); 1914ffe3c632Sopenharmony_ci 1915ffe3c632Sopenharmony_ci msg.oneofInt64 = 2; 1916ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofInt64); 1917ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 1918ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 2); 1919ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 1920ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 1921ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 1922ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1923ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1924ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1925ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1926ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1927ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1928ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1929ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1930ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1931ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1932ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1933ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1934ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofInt64); 1935ffe3c632Sopenharmony_ci 1936ffe3c632Sopenharmony_ci msg.oneofUint32 = 3; 1937ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofUint32); 1938ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 1939ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 1940ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 3U); 1941ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 1942ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 1943ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1944ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1945ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1946ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1947ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1948ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1949ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1950ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1951ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1952ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1953ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1954ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1955ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofUint32); 1956ffe3c632Sopenharmony_ci 1957ffe3c632Sopenharmony_ci msg.oneofUint64 = 4; 1958ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofUint64); 1959ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 1960ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 1961ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 1962ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 4U); 1963ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 1964ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1965ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1966ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1967ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1968ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1969ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1970ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1971ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1972ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1973ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1974ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1975ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1976ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofUint64); 1977ffe3c632Sopenharmony_ci 1978ffe3c632Sopenharmony_ci msg.oneofSint32 = 5; 1979ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSint32); 1980ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 1981ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 1982ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 1983ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 1984ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 5); 1985ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 1986ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 1987ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 1988ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 1989ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 1990ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 1991ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 1992ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 1993ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 1994ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 1995ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 1996ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 1997ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSint32); 1998ffe3c632Sopenharmony_ci 1999ffe3c632Sopenharmony_ci msg.oneofSint64 = 6; 2000ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSint64); 2001ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2002ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2003ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2004ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2005ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2006ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 6); 2007ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2008ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2009ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2010ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2011ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2012ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2013ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2014ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2015ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2016ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2017ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2018ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSint64); 2019ffe3c632Sopenharmony_ci 2020ffe3c632Sopenharmony_ci msg.oneofFixed32 = 7; 2021ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFixed32); 2022ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2023ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2024ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2025ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2026ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2027ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2028ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 7U); 2029ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2030ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2031ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2032ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2033ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2034ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2035ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2036ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2037ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2038ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2039ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFixed32); 2040ffe3c632Sopenharmony_ci 2041ffe3c632Sopenharmony_ci msg.oneofFixed64 = 8; 2042ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFixed64); 2043ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2044ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2045ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2046ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2047ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2048ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2049ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2050ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 8U); 2051ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2052ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2053ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2054ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2055ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2056ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2057ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2058ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2059ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2060ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFixed64); 2061ffe3c632Sopenharmony_ci 2062ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 9; 2063ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSfixed32); 2064ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2065ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2066ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2067ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2068ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2069ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2070ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2071ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2072ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 9); 2073ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2074ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2075ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2076ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2077ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2078ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2079ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2080ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2081ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSfixed32); 2082ffe3c632Sopenharmony_ci 2083ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 10; 2084ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSfixed64); 2085ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2086ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2087ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2088ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2089ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2090ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2091ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2092ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2093ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2094ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 10); 2095ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2096ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2097ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2098ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2099ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2100ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2101ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2102ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofSfixed64); 2103ffe3c632Sopenharmony_ci 2104ffe3c632Sopenharmony_ci msg.oneofFloat = 11.0f; 2105ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFloat); 2106ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2107ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2108ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2109ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2110ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2111ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2112ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2113ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2114ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2115ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2116ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 11.0f); 2117ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2118ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2119ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2120ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2121ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2122ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2123ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofFloat); 2124ffe3c632Sopenharmony_ci 2125ffe3c632Sopenharmony_ci msg.oneofDouble = 12.0; 2126ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofDouble); 2127ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2128ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2129ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2130ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2131ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2132ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2133ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2134ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2135ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2136ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2137ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2138ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 12.0); 2139ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2140ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2141ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2142ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2143ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2144ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofDouble); 2145ffe3c632Sopenharmony_ci 2146ffe3c632Sopenharmony_ci msg.oneofBool = YES; 2147ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofBool); 2148ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2149ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2150ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2151ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2152ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2153ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2154ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2155ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2156ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2157ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2158ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2159ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2160ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES); 2161ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2162ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2163ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2164ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2165ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofBool); 2166ffe3c632Sopenharmony_ci 2167ffe3c632Sopenharmony_ci msg.oneofString = @"foo"; 2168ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofString); 2169ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2170ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2171ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2172ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2173ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2174ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2175ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2176ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2177ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2178ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2179ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2180ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2181ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2182ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, @"foo"); 2183ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2184ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2185ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2186ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofString); 2187ffe3c632Sopenharmony_ci 2188ffe3c632Sopenharmony_ci msg.oneofBytes = [@"bar" dataUsingEncoding:NSUTF8StringEncoding]; 2189ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofBytes); 2190ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2191ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2192ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2193ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2194ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2195ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2196ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2197ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2198ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2199ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2200ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2201ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2202ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2203ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2204ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, 2205ffe3c632Sopenharmony_ci [@"bar" dataUsingEncoding:NSUTF8StringEncoding]); 2206ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2207ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2208ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofBytes); 2209ffe3c632Sopenharmony_ci 2210ffe3c632Sopenharmony_ci Message3 *subMessage = [Message3 message]; 2211ffe3c632Sopenharmony_ci msg.oneofMessage = subMessage; 2212ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofMessage); 2213ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2214ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2215ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2216ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2217ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2218ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2219ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2220ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2221ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2222ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2223ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2224ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2225ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2226ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2227ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2228ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofMessage, subMessage); // Pointer compare. 2229ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo); 2230ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofMessage); 2231ffe3c632Sopenharmony_ci 2232ffe3c632Sopenharmony_ci msg.oneofEnum = Message3_Enum_Bar; 2233ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofEnum); 2234ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0); 2235ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0); 2236ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U); 2237ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U); 2238ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0); 2239ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0); 2240ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U); 2241ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U); 2242ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0); 2243ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0); 2244ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f); 2245ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0); 2246ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO); 2247ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2248ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2249ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2250ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofMessage, subMessage); // Pointer compare. 2251ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Bar); 2252ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_OneofEnum); 2253ffe3c632Sopenharmony_ci 2254ffe3c632Sopenharmony_ci // Test setting/calling clear clearing. 2255ffe3c632Sopenharmony_ci 2256ffe3c632Sopenharmony_ci [msg release]; 2257ffe3c632Sopenharmony_ci msg = [[Message3 alloc] init]; 2258ffe3c632Sopenharmony_ci 2259ffe3c632Sopenharmony_ci int32_t values[] = { 2260ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofInt32, 2261ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofInt64, 2262ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofUint32, 2263ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofUint64, 2264ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSint32, 2265ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSint64, 2266ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFixed32, 2267ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFixed64, 2268ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSfixed32, 2269ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSfixed64, 2270ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFloat, 2271ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofDouble, 2272ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofBool, 2273ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofString, 2274ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofBytes, 2275ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofMessage, 2276ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofEnum, 2277ffe3c632Sopenharmony_ci }; 2278ffe3c632Sopenharmony_ci 2279ffe3c632Sopenharmony_ci for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) { 2280ffe3c632Sopenharmony_ci switch (values[i]) { 2281ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofInt32: 2282ffe3c632Sopenharmony_ci msg.oneofInt32 = 1; 2283ffe3c632Sopenharmony_ci break; 2284ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofInt64: 2285ffe3c632Sopenharmony_ci msg.oneofInt64 = 2; 2286ffe3c632Sopenharmony_ci break; 2287ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofUint32: 2288ffe3c632Sopenharmony_ci msg.oneofUint32 = 3; 2289ffe3c632Sopenharmony_ci break; 2290ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofUint64: 2291ffe3c632Sopenharmony_ci msg.oneofUint64 = 4; 2292ffe3c632Sopenharmony_ci break; 2293ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSint32: 2294ffe3c632Sopenharmony_ci msg.oneofSint32 = 5; 2295ffe3c632Sopenharmony_ci break; 2296ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSint64: 2297ffe3c632Sopenharmony_ci msg.oneofSint64 = 6; 2298ffe3c632Sopenharmony_ci break; 2299ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFixed32: 2300ffe3c632Sopenharmony_ci msg.oneofFixed32 = 7; 2301ffe3c632Sopenharmony_ci break; 2302ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFixed64: 2303ffe3c632Sopenharmony_ci msg.oneofFixed64 = 8; 2304ffe3c632Sopenharmony_ci break; 2305ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSfixed32: 2306ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 9; 2307ffe3c632Sopenharmony_ci break; 2308ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSfixed64: 2309ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 10; 2310ffe3c632Sopenharmony_ci break; 2311ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFloat: 2312ffe3c632Sopenharmony_ci msg.oneofFloat = 11.0f; 2313ffe3c632Sopenharmony_ci break; 2314ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofDouble: 2315ffe3c632Sopenharmony_ci msg.oneofDouble = 12.0; 2316ffe3c632Sopenharmony_ci break; 2317ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofBool: 2318ffe3c632Sopenharmony_ci msg.oneofBool = YES; 2319ffe3c632Sopenharmony_ci break; 2320ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofString: 2321ffe3c632Sopenharmony_ci msg.oneofString = @"foo"; 2322ffe3c632Sopenharmony_ci break; 2323ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofBytes: 2324ffe3c632Sopenharmony_ci msg.oneofBytes = [@"bar" dataUsingEncoding:NSUTF8StringEncoding]; 2325ffe3c632Sopenharmony_ci break; 2326ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofMessage: 2327ffe3c632Sopenharmony_ci msg.oneofMessage = subMessage; 2328ffe3c632Sopenharmony_ci break; 2329ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofEnum: 2330ffe3c632Sopenharmony_ci msg.oneofEnum = Message3_Enum_Baz; 2331ffe3c632Sopenharmony_ci break; 2332ffe3c632Sopenharmony_ci default: 2333ffe3c632Sopenharmony_ci XCTFail(@"shouldn't happen, loop: %zd, value: %d", i, values[i]); 2334ffe3c632Sopenharmony_ci break; 2335ffe3c632Sopenharmony_ci } 2336ffe3c632Sopenharmony_ci 2337ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, values[i], "Loop: %zd", i); 2338ffe3c632Sopenharmony_ci // No need to check the value was set, the above tests did that. 2339ffe3c632Sopenharmony_ci Message3_ClearOOneOfCase(msg); 2340ffe3c632Sopenharmony_ci // Nothing in the case. 2341ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_GPBUnsetOneOfCase, 2342ffe3c632Sopenharmony_ci "Loop: %zd", i); 2343ffe3c632Sopenharmony_ci // Confirm everything is back to defaults after a clear. 2344ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0, "Loop: %zd", i); 2345ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0, "Loop: %zd", i); 2346ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U, "Loop: %zd", i); 2347ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U, "Loop: %zd", i); 2348ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0, "Loop: %zd", i); 2349ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0, "Loop: %zd", i); 2350ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U, "Loop: %zd", i); 2351ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U, "Loop: %zd", i); 2352ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0, "Loop: %zd", i); 2353ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0, "Loop: %zd", i); 2354ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f, "Loop: %zd", i); 2355ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0, "Loop: %zd", i); 2356ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO, "Loop: %zd", i); 2357ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault, "Loop: %zd", i); 2358ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault, "Loop: %zd", i); 2359ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage, "Loop: %zd", i); 2360ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg.oneofMessage, subMessage, "Loop: %zd", 2361ffe3c632Sopenharmony_ci i); // Pointer compare. 2362ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo, "Loop: %zd", i); 2363ffe3c632Sopenharmony_ci } 2364ffe3c632Sopenharmony_ci 2365ffe3c632Sopenharmony_ci [msg release]; 2366ffe3c632Sopenharmony_ci} 2367ffe3c632Sopenharmony_ci 2368ffe3c632Sopenharmony_ci- (void)testProto2OneofSetToDefault { 2369ffe3c632Sopenharmony_ci 2370ffe3c632Sopenharmony_ci // proto3 doesn't normally write out zero (default) fields, but if they are 2371ffe3c632Sopenharmony_ci // in a oneof it does. proto2 doesn't have this special behavior, but we 2372ffe3c632Sopenharmony_ci // still confirm setting to the explicit default does set the case to be 2373ffe3c632Sopenharmony_ci // sure the runtime is working correctly. 2374ffe3c632Sopenharmony_ci 2375ffe3c632Sopenharmony_ci NSString *oneofStringDefault = @"string"; 2376ffe3c632Sopenharmony_ci NSData *oneofBytesDefault = [@"data" dataUsingEncoding:NSUTF8StringEncoding]; 2377ffe3c632Sopenharmony_ci 2378ffe3c632Sopenharmony_ci Message2 *msg = [[Message2 alloc] init]; 2379ffe3c632Sopenharmony_ci 2380ffe3c632Sopenharmony_ci int32_t values[] = { 2381ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofInt32, 2382ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofInt64, 2383ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofUint32, 2384ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofUint64, 2385ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSint32, 2386ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSint64, 2387ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFixed32, 2388ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFixed64, 2389ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSfixed32, 2390ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofSfixed64, 2391ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofFloat, 2392ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofDouble, 2393ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofBool, 2394ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofString, 2395ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofBytes, 2396ffe3c632Sopenharmony_ci // Skip group 2397ffe3c632Sopenharmony_ci // Skip message 2398ffe3c632Sopenharmony_ci Message2_O_OneOfCase_OneofEnum, 2399ffe3c632Sopenharmony_ci }; 2400ffe3c632Sopenharmony_ci 2401ffe3c632Sopenharmony_ci for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) { 2402ffe3c632Sopenharmony_ci switch (values[i]) { 2403ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofInt32: 2404ffe3c632Sopenharmony_ci msg.oneofInt32 = 100; 2405ffe3c632Sopenharmony_ci break; 2406ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofInt64: 2407ffe3c632Sopenharmony_ci msg.oneofInt64 = 101; 2408ffe3c632Sopenharmony_ci break; 2409ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofUint32: 2410ffe3c632Sopenharmony_ci msg.oneofUint32 = 102; 2411ffe3c632Sopenharmony_ci break; 2412ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofUint64: 2413ffe3c632Sopenharmony_ci msg.oneofUint64 = 103; 2414ffe3c632Sopenharmony_ci break; 2415ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSint32: 2416ffe3c632Sopenharmony_ci msg.oneofSint32 = 104; 2417ffe3c632Sopenharmony_ci break; 2418ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSint64: 2419ffe3c632Sopenharmony_ci msg.oneofSint64 = 105; 2420ffe3c632Sopenharmony_ci break; 2421ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFixed32: 2422ffe3c632Sopenharmony_ci msg.oneofFixed32 = 106; 2423ffe3c632Sopenharmony_ci break; 2424ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFixed64: 2425ffe3c632Sopenharmony_ci msg.oneofFixed64 = 107; 2426ffe3c632Sopenharmony_ci break; 2427ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSfixed32: 2428ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 108; 2429ffe3c632Sopenharmony_ci break; 2430ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofSfixed64: 2431ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 109; 2432ffe3c632Sopenharmony_ci break; 2433ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofFloat: 2434ffe3c632Sopenharmony_ci msg.oneofFloat = 110.0f; 2435ffe3c632Sopenharmony_ci break; 2436ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofDouble: 2437ffe3c632Sopenharmony_ci msg.oneofDouble = 111.0; 2438ffe3c632Sopenharmony_ci break; 2439ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofBool: 2440ffe3c632Sopenharmony_ci msg.oneofBool = YES; 2441ffe3c632Sopenharmony_ci break; 2442ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofString: 2443ffe3c632Sopenharmony_ci msg.oneofString = oneofStringDefault; 2444ffe3c632Sopenharmony_ci break; 2445ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofBytes: 2446ffe3c632Sopenharmony_ci msg.oneofBytes = oneofBytesDefault; 2447ffe3c632Sopenharmony_ci break; 2448ffe3c632Sopenharmony_ci case Message2_O_OneOfCase_OneofEnum: 2449ffe3c632Sopenharmony_ci msg.oneofEnum = Message3_Enum_Baz; 2450ffe3c632Sopenharmony_ci break; 2451ffe3c632Sopenharmony_ci default: 2452ffe3c632Sopenharmony_ci XCTFail(@"shouldn't happen, loop: %zd, value: %d", i, values[i]); 2453ffe3c632Sopenharmony_ci break; 2454ffe3c632Sopenharmony_ci } 2455ffe3c632Sopenharmony_ci 2456ffe3c632Sopenharmony_ci // Should be set to the correct case. 2457ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, values[i], "Loop: %zd", i); 2458ffe3c632Sopenharmony_ci 2459ffe3c632Sopenharmony_ci // Confirm everything is the defaults. 2460ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 100, "Loop: %zd", i); 2461ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 101, "Loop: %zd", i); 2462ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 102U, "Loop: %zd", i); 2463ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 103U, "Loop: %zd", i); 2464ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 104, "Loop: %zd", i); 2465ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 105, "Loop: %zd", i); 2466ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 106U, "Loop: %zd", i); 2467ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 107U, "Loop: %zd", i); 2468ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 108, "Loop: %zd", i); 2469ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 109, "Loop: %zd", i); 2470ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 110.0f, "Loop: %zd", i); 2471ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 111.0, "Loop: %zd", i); 2472ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, YES, "Loop: %zd", i); 2473ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault, "Loop: %zd", i); 2474ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault, "Loop: %zd", i); 2475ffe3c632Sopenharmony_ci // Skip group, no default to consider. 2476ffe3c632Sopenharmony_ci // Skip message, no default to consider. 2477ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message2_Enum_Baz, "Loop: %zd", i); 2478ffe3c632Sopenharmony_ci } 2479ffe3c632Sopenharmony_ci 2480ffe3c632Sopenharmony_ci // We special case nil on string, data, group, and message, ensure they work 2481ffe3c632Sopenharmony_ci // as expected. i.e. - it clears the case. 2482ffe3c632Sopenharmony_ci msg.oneofString = nil; 2483ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2484ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase); 2485ffe3c632Sopenharmony_ci msg.oneofBytes = nil; 2486ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase); 2487ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2488ffe3c632Sopenharmony_ci msg.oneofGroup = nil; 2489ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase); 2490ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofGroup); 2491ffe3c632Sopenharmony_ci msg.oneofMessage = nil; 2492ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase_GPBUnsetOneOfCase); 2493ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2494ffe3c632Sopenharmony_ci 2495ffe3c632Sopenharmony_ci [msg release]; 2496ffe3c632Sopenharmony_ci} 2497ffe3c632Sopenharmony_ci 2498ffe3c632Sopenharmony_ci- (void)testProto3OneofSetToZero { 2499ffe3c632Sopenharmony_ci 2500ffe3c632Sopenharmony_ci // Normally setting a proto3 field to the zero value should result in it being 2501ffe3c632Sopenharmony_ci // reset/cleared. But in a oneof, it still gets recorded so it can go out 2502ffe3c632Sopenharmony_ci // over the wire and the other side can see what was set in the oneof. 2503ffe3c632Sopenharmony_ci 2504ffe3c632Sopenharmony_ci NSString *oneofStringDefault = @""; 2505ffe3c632Sopenharmony_ci NSData *oneofBytesDefault = [NSData data]; 2506ffe3c632Sopenharmony_ci 2507ffe3c632Sopenharmony_ci Message3 *msg = [[Message3 alloc] init]; 2508ffe3c632Sopenharmony_ci 2509ffe3c632Sopenharmony_ci int32_t values[] = { 2510ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofInt32, 2511ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofInt64, 2512ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofUint32, 2513ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofUint64, 2514ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSint32, 2515ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSint64, 2516ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFixed32, 2517ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFixed64, 2518ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSfixed32, 2519ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofSfixed64, 2520ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofFloat, 2521ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofDouble, 2522ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofBool, 2523ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofString, 2524ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofBytes, 2525ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofMessage, 2526ffe3c632Sopenharmony_ci Message3_O_OneOfCase_OneofEnum, 2527ffe3c632Sopenharmony_ci }; 2528ffe3c632Sopenharmony_ci 2529ffe3c632Sopenharmony_ci for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) { 2530ffe3c632Sopenharmony_ci switch (values[i]) { 2531ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofInt32: 2532ffe3c632Sopenharmony_ci msg.oneofInt32 = 0; 2533ffe3c632Sopenharmony_ci break; 2534ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofInt64: 2535ffe3c632Sopenharmony_ci msg.oneofInt64 = 0; 2536ffe3c632Sopenharmony_ci break; 2537ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofUint32: 2538ffe3c632Sopenharmony_ci msg.oneofUint32 = 0; 2539ffe3c632Sopenharmony_ci break; 2540ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofUint64: 2541ffe3c632Sopenharmony_ci msg.oneofUint64 = 0; 2542ffe3c632Sopenharmony_ci break; 2543ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSint32: 2544ffe3c632Sopenharmony_ci msg.oneofSint32 = 0; 2545ffe3c632Sopenharmony_ci break; 2546ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSint64: 2547ffe3c632Sopenharmony_ci msg.oneofSint64 = 0; 2548ffe3c632Sopenharmony_ci break; 2549ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFixed32: 2550ffe3c632Sopenharmony_ci msg.oneofFixed32 = 0; 2551ffe3c632Sopenharmony_ci break; 2552ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFixed64: 2553ffe3c632Sopenharmony_ci msg.oneofFixed64 = 0; 2554ffe3c632Sopenharmony_ci break; 2555ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSfixed32: 2556ffe3c632Sopenharmony_ci msg.oneofSfixed32 = 0; 2557ffe3c632Sopenharmony_ci break; 2558ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofSfixed64: 2559ffe3c632Sopenharmony_ci msg.oneofSfixed64 = 0; 2560ffe3c632Sopenharmony_ci break; 2561ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofFloat: 2562ffe3c632Sopenharmony_ci msg.oneofFloat = 0.0f; 2563ffe3c632Sopenharmony_ci break; 2564ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofDouble: 2565ffe3c632Sopenharmony_ci msg.oneofDouble = 0.0; 2566ffe3c632Sopenharmony_ci break; 2567ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofBool: 2568ffe3c632Sopenharmony_ci msg.oneofBool = NO; 2569ffe3c632Sopenharmony_ci break; 2570ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofString: 2571ffe3c632Sopenharmony_ci msg.oneofString = oneofStringDefault; 2572ffe3c632Sopenharmony_ci break; 2573ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofBytes: 2574ffe3c632Sopenharmony_ci msg.oneofBytes = oneofBytesDefault; 2575ffe3c632Sopenharmony_ci break; 2576ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofMessage: 2577ffe3c632Sopenharmony_ci msg.oneofMessage.optionalInt32 = 0; 2578ffe3c632Sopenharmony_ci break; 2579ffe3c632Sopenharmony_ci case Message3_O_OneOfCase_OneofEnum: 2580ffe3c632Sopenharmony_ci msg.oneofEnum = Message3_Enum_Foo; 2581ffe3c632Sopenharmony_ci break; 2582ffe3c632Sopenharmony_ci default: 2583ffe3c632Sopenharmony_ci XCTFail(@"shouldn't happen, loop: %zd, value: %d", i, values[i]); 2584ffe3c632Sopenharmony_ci break; 2585ffe3c632Sopenharmony_ci } 2586ffe3c632Sopenharmony_ci 2587ffe3c632Sopenharmony_ci // Should be set to the correct case. 2588ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, values[i], "Loop: %zd", i); 2589ffe3c632Sopenharmony_ci 2590ffe3c632Sopenharmony_ci // Confirm everything is still zeros. 2591ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt32, 0, "Loop: %zd", i); 2592ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofInt64, 0, "Loop: %zd", i); 2593ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint32, 0U, "Loop: %zd", i); 2594ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofUint64, 0U, "Loop: %zd", i); 2595ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint32, 0, "Loop: %zd", i); 2596ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSint64, 0, "Loop: %zd", i); 2597ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed32, 0U, "Loop: %zd", i); 2598ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFixed64, 0U, "Loop: %zd", i); 2599ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed32, 0, "Loop: %zd", i); 2600ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofSfixed64, 0, "Loop: %zd", i); 2601ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofFloat, 0.0f, "Loop: %zd", i); 2602ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofDouble, 0.0, "Loop: %zd", i); 2603ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofBool, NO, "Loop: %zd", i); 2604ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault, "Loop: %zd", i); 2605ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault, "Loop: %zd", i); 2606ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage, "Loop: %zd", i); 2607ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oneofEnum, Message3_Enum_Foo, "Loop: %zd", i); 2608ffe3c632Sopenharmony_ci } 2609ffe3c632Sopenharmony_ci 2610ffe3c632Sopenharmony_ci // We special case nil on string, data, message, ensure they work as expected. 2611ffe3c632Sopenharmony_ci msg.oneofString = nil; 2612ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_GPBUnsetOneOfCase); 2613ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofString, oneofStringDefault); 2614ffe3c632Sopenharmony_ci msg.oneofBytes = nil; 2615ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_GPBUnsetOneOfCase); 2616ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg.oneofBytes, oneofBytesDefault); 2617ffe3c632Sopenharmony_ci msg.oneofMessage = nil; 2618ffe3c632Sopenharmony_ci XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase_GPBUnsetOneOfCase); 2619ffe3c632Sopenharmony_ci XCTAssertNotNil(msg.oneofMessage); 2620ffe3c632Sopenharmony_ci 2621ffe3c632Sopenharmony_ci [msg release]; 2622ffe3c632Sopenharmony_ci} 2623ffe3c632Sopenharmony_ci 2624ffe3c632Sopenharmony_ci- (void)testCopyingMakesUniqueObjects { 2625ffe3c632Sopenharmony_ci const int repeatCount = 5; 2626ffe3c632Sopenharmony_ci TestAllTypes *msg1 = [TestAllTypes message]; 2627ffe3c632Sopenharmony_ci [self setAllFields:msg1 repeatedCount:repeatCount]; 2628ffe3c632Sopenharmony_ci 2629ffe3c632Sopenharmony_ci TestAllTypes *msg2 = [[msg1 copy] autorelease]; 2630ffe3c632Sopenharmony_ci 2631ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1, msg2); // Ptr compare, new object. 2632ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1, msg2); // Equal values. 2633ffe3c632Sopenharmony_ci 2634ffe3c632Sopenharmony_ci // Pointer comparisons, different objects. 2635ffe3c632Sopenharmony_ci 2636ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.optionalGroup, msg2.optionalGroup); 2637ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.optionalNestedMessage, msg2.optionalNestedMessage); 2638ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.optionalForeignMessage, msg2.optionalForeignMessage); 2639ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.optionalImportMessage, msg2.optionalImportMessage); 2640ffe3c632Sopenharmony_ci 2641ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedInt32Array, msg2.repeatedInt32Array); 2642ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedInt64Array, msg2.repeatedInt64Array); 2643ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedUint32Array, msg2.repeatedUint32Array); 2644ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedUint64Array, msg2.repeatedUint64Array); 2645ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedSint32Array, msg2.repeatedSint32Array); 2646ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedSint64Array, msg2.repeatedSint64Array); 2647ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedFixed32Array, msg2.repeatedFixed32Array); 2648ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedFixed64Array, msg2.repeatedFixed64Array); 2649ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedSfixed32Array, msg2.repeatedSfixed32Array); 2650ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedSfixed64Array, msg2.repeatedSfixed64Array); 2651ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedFloatArray, msg2.repeatedFloatArray); 2652ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedDoubleArray, msg2.repeatedDoubleArray); 2653ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedBoolArray, msg2.repeatedBoolArray); 2654ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedStringArray, msg2.repeatedStringArray); 2655ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedBytesArray, msg2.repeatedBytesArray); 2656ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedGroupArray, msg2.repeatedGroupArray); 2657ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedNestedMessageArray, 2658ffe3c632Sopenharmony_ci msg2.repeatedNestedMessageArray); 2659ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedForeignMessageArray, 2660ffe3c632Sopenharmony_ci msg2.repeatedForeignMessageArray); 2661ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedImportMessageArray, 2662ffe3c632Sopenharmony_ci msg2.repeatedImportMessageArray); 2663ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedNestedEnumArray, msg2.repeatedNestedEnumArray); 2664ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedForeignEnumArray, 2665ffe3c632Sopenharmony_ci msg2.repeatedForeignEnumArray); 2666ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedImportEnumArray, msg2.repeatedImportEnumArray); 2667ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedStringPieceArray, 2668ffe3c632Sopenharmony_ci msg2.repeatedStringPieceArray); 2669ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedCordArray, msg2.repeatedCordArray); 2670ffe3c632Sopenharmony_ci 2671ffe3c632Sopenharmony_ci for (int i = 0; i < repeatCount; i++) { 2672ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedNestedMessageArray[i], 2673ffe3c632Sopenharmony_ci msg2.repeatedNestedMessageArray[i]); 2674ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedForeignMessageArray[i], 2675ffe3c632Sopenharmony_ci msg2.repeatedForeignMessageArray[i]); 2676ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.repeatedImportMessageArray[i], 2677ffe3c632Sopenharmony_ci msg2.repeatedImportMessageArray[i]); 2678ffe3c632Sopenharmony_ci } 2679ffe3c632Sopenharmony_ci} 2680ffe3c632Sopenharmony_ci 2681ffe3c632Sopenharmony_ci- (void)testCopyingMapsMakesUniqueObjects { 2682ffe3c632Sopenharmony_ci TestMap *msg1 = [TestMap message]; 2683ffe3c632Sopenharmony_ci [self setAllMapFields:msg1 numEntries:5]; 2684ffe3c632Sopenharmony_ci 2685ffe3c632Sopenharmony_ci TestMap *msg2 = [[msg1 copy] autorelease]; 2686ffe3c632Sopenharmony_ci 2687ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1, msg2); // Ptr compare, new object. 2688ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1, msg2); // Equal values. 2689ffe3c632Sopenharmony_ci 2690ffe3c632Sopenharmony_ci // Pointer comparisons, different objects. 2691ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32Int32, msg2.mapInt32Int32); 2692ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt64Int64, msg2.mapInt64Int64); 2693ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapUint32Uint32, msg2.mapUint32Uint32); 2694ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapUint64Uint64, msg2.mapUint64Uint64); 2695ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapSint32Sint32, msg2.mapSint32Sint32); 2696ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapSint64Sint64, msg2.mapSint64Sint64); 2697ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapFixed32Fixed32, msg2.mapFixed32Fixed32); 2698ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapFixed64Fixed64, msg2.mapFixed64Fixed64); 2699ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapSfixed32Sfixed32, msg2.mapSfixed32Sfixed32); 2700ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapSfixed64Sfixed64, msg2.mapSfixed64Sfixed64); 2701ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32Float, msg2.mapInt32Float); 2702ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32Double, msg2.mapInt32Double); 2703ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapBoolBool, msg2.mapBoolBool); 2704ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapStringString, msg2.mapStringString); 2705ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32Bytes, msg2.mapInt32Bytes); 2706ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32Enum, msg2.mapInt32Enum); 2707ffe3c632Sopenharmony_ci XCTAssertNotEqual(msg1.mapInt32ForeignMessage, msg2.mapInt32ForeignMessage); 2708ffe3c632Sopenharmony_ci 2709ffe3c632Sopenharmony_ci // Ensure the messages are unique per map. 2710ffe3c632Sopenharmony_ci [msg1.mapInt32ForeignMessage 2711ffe3c632Sopenharmony_ci enumerateKeysAndObjectsUsingBlock:^(int32_t key, id value, BOOL *stop) { 2712ffe3c632Sopenharmony_ci#pragma unused(stop) 2713ffe3c632Sopenharmony_ci ForeignMessage *subMsg2 = [msg2.mapInt32ForeignMessage objectForKey:key]; 2714ffe3c632Sopenharmony_ci XCTAssertNotEqual(value, subMsg2); // Ptr compare, new object. 2715ffe3c632Sopenharmony_ci }]; 2716ffe3c632Sopenharmony_ci} 2717ffe3c632Sopenharmony_ci 2718ffe3c632Sopenharmony_ci- (void)test_GPBGetMessageRepeatedField { 2719ffe3c632Sopenharmony_ci TestAllTypes *message = [TestAllTypes message]; 2720ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDescriptor = [[message descriptor] fieldWithName:@"repeatedStringArray"]; 2721ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldDescriptor); 2722ffe3c632Sopenharmony_ci NSMutableArray *fieldArray = GPBGetMessageRepeatedField(message, fieldDescriptor); 2723ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldArray); // Should have autocreated. 2724ffe3c632Sopenharmony_ci XCTAssertTrue(fieldArray == message.repeatedStringArray); // Same pointer 2725ffe3c632Sopenharmony_ci} 2726ffe3c632Sopenharmony_ci 2727ffe3c632Sopenharmony_ci- (void)test_GPBSetMessageRepeatedField { 2728ffe3c632Sopenharmony_ci TestAllTypes *message = [TestAllTypes message]; 2729ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDescriptor = [[message descriptor] fieldWithName:@"repeatedStringArray"]; 2730ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldDescriptor); 2731ffe3c632Sopenharmony_ci 2732ffe3c632Sopenharmony_ci NSMutableArray *fieldArray = [NSMutableArray arrayWithObject:@"foo"]; 2733ffe3c632Sopenharmony_ci GPBSetMessageRepeatedField(message, fieldDescriptor, fieldArray); 2734ffe3c632Sopenharmony_ci XCTAssertTrue(fieldArray == message.repeatedStringArray); // Same pointer 2735ffe3c632Sopenharmony_ci XCTAssertEqualObjects(@"foo", message.repeatedStringArray.firstObject); 2736ffe3c632Sopenharmony_ci} 2737ffe3c632Sopenharmony_ci 2738ffe3c632Sopenharmony_ci- (void)test_GPBGetMessageMapField { 2739ffe3c632Sopenharmony_ci TestMap *message = [TestMap message]; 2740ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDescriptor = [[message descriptor] fieldWithName:@"mapStringString"]; 2741ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldDescriptor); 2742ffe3c632Sopenharmony_ci NSMutableDictionary *fieldMap = GPBGetMessageMapField(message, fieldDescriptor); 2743ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldMap); // Should have autocreated. 2744ffe3c632Sopenharmony_ci XCTAssertTrue(fieldMap == message.mapStringString); // Same pointer 2745ffe3c632Sopenharmony_ci} 2746ffe3c632Sopenharmony_ci 2747ffe3c632Sopenharmony_ci- (void)test_GPBSetMessageMapField { 2748ffe3c632Sopenharmony_ci TestMap *message = [TestMap message]; 2749ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDescriptor = [[message descriptor] fieldWithName:@"mapStringString"]; 2750ffe3c632Sopenharmony_ci XCTAssertNotNil(fieldDescriptor); 2751ffe3c632Sopenharmony_ci 2752ffe3c632Sopenharmony_ci NSMutableDictionary *fieldMap = [NSMutableDictionary dictionaryWithObject:@"bar" forKey:@"foo"]; 2753ffe3c632Sopenharmony_ci GPBSetMessageMapField(message, fieldDescriptor, fieldMap); 2754ffe3c632Sopenharmony_ci XCTAssertTrue(fieldMap == message.mapStringString); // Same pointer 2755ffe3c632Sopenharmony_ci XCTAssertEqualObjects(@"bar", message.mapStringString[@"foo"]); 2756ffe3c632Sopenharmony_ci} 2757ffe3c632Sopenharmony_ci 2758ffe3c632Sopenharmony_ci- (void)test_StringFieldsCopy { 2759ffe3c632Sopenharmony_ci // ObjC conventions call for NSString properties to be copy, ensure 2760ffe3c632Sopenharmony_ci // that is done correctly and the string isn't simply retained. 2761ffe3c632Sopenharmony_ci 2762ffe3c632Sopenharmony_ci Message2 *msg1 = [Message2 message]; 2763ffe3c632Sopenharmony_ci Message2 *msg2 = [Message2 message]; 2764ffe3c632Sopenharmony_ci 2765ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDesc = 2766ffe3c632Sopenharmony_ci [[Message2 descriptor] fieldWithNumber:Message2_FieldNumber_OptionalString]; 2767ffe3c632Sopenharmony_ci NSMutableString *mutableStr = [NSMutableString stringWithString:@"foo"]; 2768ffe3c632Sopenharmony_ci 2769ffe3c632Sopenharmony_ci msg1.optionalString = mutableStr; 2770ffe3c632Sopenharmony_ci GPBSetMessageStringField(msg2, fieldDesc, mutableStr); 2771ffe3c632Sopenharmony_ci 2772ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalString, mutableStr); 2773ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalString, @"foo"); 2774ffe3c632Sopenharmony_ci XCTAssertTrue(msg1.optionalString != mutableStr); // Ptr comparison. 2775ffe3c632Sopenharmony_ci 2776ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalString, mutableStr); 2777ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalString, @"foo"); 2778ffe3c632Sopenharmony_ci XCTAssertTrue(msg2.optionalString != mutableStr); // Ptr comparison. 2779ffe3c632Sopenharmony_ci 2780ffe3c632Sopenharmony_ci [mutableStr appendString:@"bar"]; 2781ffe3c632Sopenharmony_ci 2782ffe3c632Sopenharmony_ci XCTAssertNotEqualObjects(msg1.optionalString, mutableStr); 2783ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalString, @"foo"); 2784ffe3c632Sopenharmony_ci XCTAssertTrue(msg1.optionalString != mutableStr); // Ptr comparison. 2785ffe3c632Sopenharmony_ci 2786ffe3c632Sopenharmony_ci XCTAssertNotEqualObjects(msg2.optionalString, mutableStr); 2787ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalString, @"foo"); 2788ffe3c632Sopenharmony_ci XCTAssertTrue(msg2.optionalString != mutableStr); // Ptr comparison. 2789ffe3c632Sopenharmony_ci} 2790ffe3c632Sopenharmony_ci 2791ffe3c632Sopenharmony_ci- (void)test_BytesFieldsCopy { 2792ffe3c632Sopenharmony_ci // ObjC conventions call for NSData properties to be copy, ensure 2793ffe3c632Sopenharmony_ci // that is done correctly and the data isn't simply retained. 2794ffe3c632Sopenharmony_ci 2795ffe3c632Sopenharmony_ci Message2 *msg1 = [Message2 message]; 2796ffe3c632Sopenharmony_ci Message2 *msg2 = [Message2 message]; 2797ffe3c632Sopenharmony_ci 2798ffe3c632Sopenharmony_ci GPBFieldDescriptor *fieldDesc = 2799ffe3c632Sopenharmony_ci [[Message2 descriptor] fieldWithNumber:Message2_FieldNumber_OptionalBytes]; 2800ffe3c632Sopenharmony_ci NSMutableData *mutableData = [NSMutableData dataWithData:DataFromCStr("abc")]; 2801ffe3c632Sopenharmony_ci 2802ffe3c632Sopenharmony_ci msg1.optionalBytes = mutableData; 2803ffe3c632Sopenharmony_ci GPBSetMessageBytesField(msg2, fieldDesc, mutableData); 2804ffe3c632Sopenharmony_ci 2805ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalBytes, mutableData); 2806ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalBytes, DataFromCStr("abc")); 2807ffe3c632Sopenharmony_ci XCTAssertTrue(msg1.optionalBytes != mutableData); // Ptr comparison. 2808ffe3c632Sopenharmony_ci 2809ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalBytes, mutableData); 2810ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalBytes, DataFromCStr("abc")); 2811ffe3c632Sopenharmony_ci XCTAssertTrue(msg2.optionalBytes != mutableData); // Ptr comparison. 2812ffe3c632Sopenharmony_ci 2813ffe3c632Sopenharmony_ci [mutableData appendData:DataFromCStr("123")]; 2814ffe3c632Sopenharmony_ci 2815ffe3c632Sopenharmony_ci XCTAssertNotEqualObjects(msg1.optionalBytes, mutableData); 2816ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg1.optionalBytes, DataFromCStr("abc")); 2817ffe3c632Sopenharmony_ci XCTAssertTrue(msg1.optionalBytes != mutableData); // Ptr comparison. 2818ffe3c632Sopenharmony_ci 2819ffe3c632Sopenharmony_ci XCTAssertNotEqualObjects(msg2.optionalBytes, mutableData); 2820ffe3c632Sopenharmony_ci XCTAssertEqualObjects(msg2.optionalBytes, DataFromCStr("abc")); 2821ffe3c632Sopenharmony_ci XCTAssertTrue(msg2.optionalBytes != mutableData); // Ptr comparison. 2822ffe3c632Sopenharmony_ci} 2823ffe3c632Sopenharmony_ci 2824ffe3c632Sopenharmony_ci#pragma mark - Subset from from map_tests.cc 2825ffe3c632Sopenharmony_ci 2826ffe3c632Sopenharmony_ci// TEST(GeneratedMapFieldTest, IsInitialized) 2827ffe3c632Sopenharmony_ci- (void)testMap_IsInitialized { 2828ffe3c632Sopenharmony_ci TestRequiredMessageMap *msg = [[TestRequiredMessageMap alloc] init]; 2829ffe3c632Sopenharmony_ci 2830ffe3c632Sopenharmony_ci // Add an uninitialized message. 2831ffe3c632Sopenharmony_ci TestRequired *subMsg = [[TestRequired alloc] init]; 2832ffe3c632Sopenharmony_ci [msg.mapField setObject:subMsg forKey:0]; 2833ffe3c632Sopenharmony_ci XCTAssertFalse(msg.initialized); 2834ffe3c632Sopenharmony_ci 2835ffe3c632Sopenharmony_ci // Initialize uninitialized message 2836ffe3c632Sopenharmony_ci subMsg.a = 0; 2837ffe3c632Sopenharmony_ci subMsg.b = 0; 2838ffe3c632Sopenharmony_ci subMsg.c = 0; 2839ffe3c632Sopenharmony_ci XCTAssertTrue(msg.initialized); 2840ffe3c632Sopenharmony_ci 2841ffe3c632Sopenharmony_ci [subMsg release]; 2842ffe3c632Sopenharmony_ci [msg release]; 2843ffe3c632Sopenharmony_ci} 2844ffe3c632Sopenharmony_ci 2845ffe3c632Sopenharmony_ci@end 2846