| Index: third_party/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m
|
| diff --git a/third_party/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m b/third_party/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m
|
| index 78f4e63722763698287366e7771c9b6cabaafe3d..041841dd544ce1cb0f77db6e5fa6d768fbd2ecb5 100644
|
| --- a/third_party/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m
|
| +++ b/third_party/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m
|
| @@ -32,6 +32,8 @@
|
|
|
| #import <XCTest/XCTest.h>
|
|
|
| +#import "google/protobuf/AnyTest.pbobjc.h"
|
| +
|
| // A basically random interval into the future for testing with.
|
| static const NSTimeInterval kFutureOffsetInterval = 15000;
|
|
|
| @@ -99,4 +101,58 @@ static const NSTimeInterval kTimeAccuracy = 1e-9;
|
| [duration2 release];
|
| }
|
|
|
| +- (void)testAnyHelpers {
|
| +
|
| + // Set and extract covers most of the code.
|
| +
|
| + TestAny *subMessage = [TestAny message];
|
| + subMessage.int32Value = 12345;
|
| + TestAny *message = [TestAny message];
|
| + NSError *err = nil;
|
| + message.anyValue = [GPBAny anyWithMessage:subMessage error:&err];
|
| + XCTAssertNil(err);
|
| +
|
| + NSData *data = message.data;
|
| + XCTAssertNotNil(data);
|
| +
|
| + TestAny *message2 = [TestAny parseFromData:data error:&err];
|
| + XCTAssertNil(err);
|
| + XCTAssertNotNil(message2);
|
| + XCTAssertTrue(message2.hasAnyValue);
|
| +
|
| + TestAny *subMessage2 =
|
| + (TestAny *)[message.anyValue unpackMessageClass:[TestAny class]
|
| + error:&err];
|
| + XCTAssertNil(err);
|
| + XCTAssertNotNil(subMessage2);
|
| + XCTAssertEqual(subMessage2.int32Value, 12345);
|
| +
|
| + // NULL errorPtr in the two calls.
|
| +
|
| + message.anyValue = [GPBAny anyWithMessage:subMessage error:NULL];
|
| + NSData *data2 = message.data;
|
| + XCTAssertEqualObjects(data2, data);
|
| +
|
| + TestAny *subMessage3 =
|
| + (TestAny *)[message.anyValue unpackMessageClass:[TestAny class]
|
| + error:NULL];
|
| + XCTAssertNotNil(subMessage3);
|
| + XCTAssertEqualObjects(subMessage2, subMessage3);
|
| +
|
| + // Try to extract wrong type.
|
| +
|
| + GPBTimestamp *wrongMessage =
|
| + (GPBTimestamp *)[message.anyValue unpackMessageClass:[GPBTimestamp class]
|
| + error:&err];
|
| + XCTAssertNotNil(err);
|
| + XCTAssertNil(wrongMessage);
|
| + XCTAssertEqualObjects(err.domain, GPBWellKnownTypesErrorDomain);
|
| + XCTAssertEqual(err.code, GPBWellKnownTypesErrorCodeTypeURLMismatch);
|
| +
|
| + wrongMessage =
|
| + (GPBTimestamp *)[message.anyValue unpackMessageClass:[GPBTimestamp class]
|
| + error:NULL];
|
| + XCTAssertNil(wrongMessage);
|
| +}
|
| +
|
| @end
|
|
|