| Index: third_party/protobuf/objectivec/Tests/GPBMessageTests.m
|
| diff --git a/third_party/protobuf/objectivec/Tests/GPBMessageTests.m b/third_party/protobuf/objectivec/Tests/GPBMessageTests.m
|
| index f79b8128ff207a6a1880b55f57c94d797657b211..89d1fce2c366080c0efc17ab5c80467feebccc0a 100644
|
| --- a/third_party/protobuf/objectivec/Tests/GPBMessageTests.m
|
| +++ b/third_party/protobuf/objectivec/Tests/GPBMessageTests.m
|
| @@ -55,7 +55,6 @@
|
| [message setOptionalInt32:1];
|
| [message setOptionalString:@"foo"];
|
| [message setOptionalForeignMessage:[ForeignMessage message]];
|
| - message.repeatedStringArray = [NSMutableArray array];
|
| [message.repeatedStringArray addObject:@"bar"];
|
| return message;
|
| }
|
| @@ -67,7 +66,6 @@
|
| ForeignMessage *foreignMessage = [ForeignMessage message];
|
| [foreignMessage setC:3];
|
| [message setOptionalForeignMessage:foreignMessage];
|
| - message.repeatedStringArray = [NSMutableArray array];
|
| [message.repeatedStringArray addObject:@"qux"];
|
| return message;
|
| }
|
| @@ -76,7 +74,6 @@
|
| TestAllTypes *message = [TestAllTypes message];
|
| [message setOptionalInt64:2];
|
| [message setOptionalString:@"baz"];
|
| - message.repeatedStringArray = [NSMutableArray array];
|
| [message.repeatedStringArray addObject:@"qux"];
|
| return message;
|
| }
|
| @@ -89,7 +86,6 @@
|
| ForeignMessage *foreignMessage = [ForeignMessage message];
|
| [foreignMessage setC:3];
|
| [message setOptionalForeignMessage:foreignMessage];
|
| - message.repeatedStringArray = [NSMutableArray array];
|
| [message.repeatedStringArray addObject:@"qux"];
|
| [message.repeatedStringArray addObject:@"bar"];
|
| return message;
|
| @@ -102,7 +98,6 @@
|
| [message setOptionalString:@"foo"];
|
| ForeignMessage *foreignMessage = [ForeignMessage message];
|
| [message setOptionalForeignMessage:foreignMessage];
|
| - message.repeatedStringArray = [NSMutableArray array];
|
| [message.repeatedStringArray addObject:@"qux"];
|
| [message.repeatedStringArray addObject:@"bar"];
|
| return message;
|
| @@ -248,7 +243,6 @@
|
| [message setOptionalMessage:self.testRequiredInitialized];
|
| XCTAssertTrue(message.initialized);
|
|
|
| - message.repeatedMessageArray = [NSMutableArray array];
|
| [message.repeatedMessageArray addObject:[TestRequired message]];
|
| XCTAssertFalse(message.initialized);
|
|
|
| @@ -300,7 +294,6 @@
|
| - (void)testDataFromNestedUninitialized {
|
| TestRequiredForeign *message = [TestRequiredForeign message];
|
| [message setOptionalMessage:[TestRequired message]];
|
| - message.repeatedMessageArray = [NSMutableArray array];
|
| [message.repeatedMessageArray addObject:[TestRequired message]];
|
| [message.repeatedMessageArray addObject:[TestRequired message]];
|
| NSData *data = [message data];
|
| @@ -319,7 +312,6 @@
|
|
|
| TestRequiredForeign *message = [TestRequiredForeign message];
|
| [message setOptionalMessage:[TestRequired message]];
|
| - message.repeatedMessageArray = [NSMutableArray array];
|
| [message.repeatedMessageArray addObject:[TestRequired message]];
|
| [message.repeatedMessageArray addObject:[TestRequired message]];
|
|
|
| @@ -1828,6 +1820,24 @@
|
| XCTAssertEqualObjects(enumDescriptor, expectedDescriptor);
|
| }
|
|
|
| +- (void)testPropertyNaming {
|
| + // objectivec_helpers.cc has some special handing to get proper all caps
|
| + // for a few cases to meet objc developer expectations.
|
| + //
|
| + // This "test" confirms that the expected names are generated, otherwise the
|
| + // test itself will fail to compile.
|
| + ObjCPropertyNaming *msg = [ObjCPropertyNaming message];
|
| + // On their own, at the end, in the middle.
|
| + msg.URL = @"good";
|
| + msg.thumbnailURL = @"good";
|
| + msg.URLFoo = @"good";
|
| + msg.someURLBlah = @"good";
|
| + msg.HTTP = @"good";
|
| + msg.HTTPS = @"good";
|
| + // No caps since it was "urls".
|
| + [msg.urlsArray addObject:@"good"];
|
| +}
|
| +
|
| - (void)testEnumNaming {
|
| // objectivec_helpers.cc has some interesting cases to deal with in
|
| // EnumValueName/EnumValueShortName. Confirm that things generated as
|
| @@ -1937,4 +1947,76 @@
|
| EnumTestMsg_MyEnum_NegTwo);
|
| }
|
|
|
| +- (void)testOneBasedEnumHolder {
|
| + // Test case for https://github.com/google/protobuf/issues/1453
|
| + // Message with no explicit defaults, but a non zero default for an enum.
|
| + MessageWithOneBasedEnum *enumMsg = [MessageWithOneBasedEnum message];
|
| + XCTAssertEqual(enumMsg.enumField, MessageWithOneBasedEnum_OneBasedEnum_One);
|
| +}
|
| +
|
| +- (void)testBoolOffsetUsage {
|
| + // Bools use storage within has_bits; this test ensures that this is honored
|
| + // in all places where things should crash or fail based on reading out of
|
| + // field storage instead.
|
| + BoolOnlyMessage *msg1 = [BoolOnlyMessage message];
|
| + BoolOnlyMessage *msg2 = [BoolOnlyMessage message];
|
| +
|
| + msg1.boolField1 = YES;
|
| + msg2.boolField1 = YES;
|
| + msg1.boolField3 = YES;
|
| + msg2.boolField3 = YES;
|
| + msg1.boolField5 = YES;
|
| + msg2.boolField5 = YES;
|
| + msg1.boolField7 = YES;
|
| + msg2.boolField7 = YES;
|
| + msg1.boolField9 = YES;
|
| + msg2.boolField9 = YES;
|
| + msg1.boolField11 = YES;
|
| + msg2.boolField11 = YES;
|
| + msg1.boolField13 = YES;
|
| + msg2.boolField13 = YES;
|
| + msg1.boolField15 = YES;
|
| + msg2.boolField15 = YES;
|
| + msg1.boolField17 = YES;
|
| + msg2.boolField17 = YES;
|
| + msg1.boolField19 = YES;
|
| + msg2.boolField19 = YES;
|
| + msg1.boolField21 = YES;
|
| + msg2.boolField21 = YES;
|
| + msg1.boolField23 = YES;
|
| + msg2.boolField23 = YES;
|
| + msg1.boolField25 = YES;
|
| + msg2.boolField25 = YES;
|
| + msg1.boolField27 = YES;
|
| + msg2.boolField27 = YES;
|
| + msg1.boolField29 = YES;
|
| + msg2.boolField29 = YES;
|
| + msg1.boolField31 = YES;
|
| + msg2.boolField31 = YES;
|
| +
|
| + msg1.boolField32 = YES;
|
| + msg2.boolField32 = YES;
|
| +
|
| + XCTAssertTrue(msg1 != msg2); // Different pointers.
|
| + XCTAssertEqual([msg1 hash], [msg2 hash]);
|
| + XCTAssertEqualObjects(msg1, msg2);
|
| +
|
| + BoolOnlyMessage *msg1Prime = [[msg1 copy] autorelease];
|
| + XCTAssertTrue(msg1Prime != msg1); // Different pointers.
|
| + XCTAssertEqual([msg1 hash], [msg1Prime hash]);
|
| + XCTAssertEqualObjects(msg1, msg1Prime);
|
| +
|
| + // Field set in one, but not the other means they don't match (even if
|
| + // set to default value).
|
| + msg1Prime.boolField2 = NO;
|
| + XCTAssertNotEqualObjects(msg1Prime, msg1);
|
| + // And when set to different values.
|
| + msg1.boolField2 = YES;
|
| + XCTAssertNotEqualObjects(msg1Prime, msg1);
|
| + // And then they match again.
|
| + msg1.boolField2 = NO;
|
| + XCTAssertEqualObjects(msg1Prime, msg1);
|
| + XCTAssertEqual([msg1 hash], [msg1Prime hash]);
|
| +}
|
| +
|
| @end
|
|
|