|
@@ -2491,6 +2491,72 @@
|
|
|
XCTAssertEqualObjects(@"bar", message.mapStringString[@"foo"]);
|
|
|
}
|
|
|
|
|
|
+- (void)test_StringFieldsCopy {
|
|
|
+ // ObjC conventions call for NSString properites to be copy, ensure
|
|
|
+ // that is done correctly and the string isn't simply retained.
|
|
|
+
|
|
|
+ Message2 *msg1 = [Message2 message];
|
|
|
+ Message2 *msg2 = [Message2 message];
|
|
|
+
|
|
|
+ GPBFieldDescriptor *fieldDesc =
|
|
|
+ [[Message2 descriptor] fieldWithNumber:Message2_FieldNumber_OptionalString];
|
|
|
+ NSMutableString *mutableStr = [NSMutableString stringWithString:@"foo"];
|
|
|
+
|
|
|
+ msg1.optionalString = mutableStr;
|
|
|
+ GPBSetMessageStringField(msg2, fieldDesc, mutableStr);
|
|
|
+
|
|
|
+ XCTAssertEqualObjects(msg1.optionalString, mutableStr);
|
|
|
+ XCTAssertEqualObjects(msg1.optionalString, @"foo");
|
|
|
+ XCTAssertTrue(msg1.optionalString != mutableStr); // Ptr comparision.
|
|
|
+
|
|
|
+ XCTAssertEqualObjects(msg2.optionalString, mutableStr);
|
|
|
+ XCTAssertEqualObjects(msg2.optionalString, @"foo");
|
|
|
+ XCTAssertTrue(msg2.optionalString != mutableStr); // Ptr comparision.
|
|
|
+
|
|
|
+ [mutableStr appendString:@"bar"];
|
|
|
+
|
|
|
+ XCTAssertNotEqualObjects(msg1.optionalString, mutableStr);
|
|
|
+ XCTAssertEqualObjects(msg1.optionalString, @"foo");
|
|
|
+ XCTAssertTrue(msg1.optionalString != mutableStr); // Ptr comparision.
|
|
|
+
|
|
|
+ XCTAssertNotEqualObjects(msg2.optionalString, mutableStr);
|
|
|
+ XCTAssertEqualObjects(msg2.optionalString, @"foo");
|
|
|
+ XCTAssertTrue(msg2.optionalString != mutableStr); // Ptr comparision.
|
|
|
+}
|
|
|
+
|
|
|
+- (void)test_BytesFieldsCopy {
|
|
|
+ // ObjC conventions call for NSData properites to be copy, ensure
|
|
|
+ // that is done correctly and the data isn't simply retained.
|
|
|
+
|
|
|
+ Message2 *msg1 = [Message2 message];
|
|
|
+ Message2 *msg2 = [Message2 message];
|
|
|
+
|
|
|
+ GPBFieldDescriptor *fieldDesc =
|
|
|
+ [[Message2 descriptor] fieldWithNumber:Message2_FieldNumber_OptionalBytes];
|
|
|
+ NSMutableData *mutableData = [NSMutableData dataWithData:DataFromCStr("abc")];
|
|
|
+
|
|
|
+ msg1.optionalBytes = mutableData;
|
|
|
+ GPBSetMessageBytesField(msg2, fieldDesc, mutableData);
|
|
|
+
|
|
|
+ XCTAssertEqualObjects(msg1.optionalBytes, mutableData);
|
|
|
+ XCTAssertEqualObjects(msg1.optionalBytes, DataFromCStr("abc"));
|
|
|
+ XCTAssertTrue(msg1.optionalBytes != mutableData); // Ptr comparision.
|
|
|
+
|
|
|
+ XCTAssertEqualObjects(msg2.optionalBytes, mutableData);
|
|
|
+ XCTAssertEqualObjects(msg2.optionalBytes, DataFromCStr("abc"));
|
|
|
+ XCTAssertTrue(msg2.optionalBytes != mutableData); // Ptr comparision.
|
|
|
+
|
|
|
+ [mutableData appendData:DataFromCStr("123")];
|
|
|
+
|
|
|
+ XCTAssertNotEqualObjects(msg1.optionalBytes, mutableData);
|
|
|
+ XCTAssertEqualObjects(msg1.optionalBytes, DataFromCStr("abc"));
|
|
|
+ XCTAssertTrue(msg1.optionalBytes != mutableData); // Ptr comparision.
|
|
|
+
|
|
|
+ XCTAssertNotEqualObjects(msg2.optionalBytes, mutableData);
|
|
|
+ XCTAssertEqualObjects(msg2.optionalBytes, DataFromCStr("abc"));
|
|
|
+ XCTAssertTrue(msg2.optionalBytes != mutableData); // Ptr comparision.
|
|
|
+}
|
|
|
+
|
|
|
#pragma mark - Subset from from map_tests.cc
|
|
|
|
|
|
// TEST(GeneratedMapFieldTest, IsInitialized)
|