diff --git a/src/objective-c/examples/Sample/Podfile.lock b/src/objective-c/examples/Sample/Podfile.lock
deleted file mode 100644
index ccf5aa0f06b2e982c4cbabf01b7636486614084f..0000000000000000000000000000000000000000
--- a/src/objective-c/examples/Sample/Podfile.lock
+++ /dev/null
@@ -1,44 +0,0 @@
-PODS:
-  - gRPC (0.0.1):
-    - gRPC/C-Core (= 0.0.1)
-    - gRPC/GRPCClient (= 0.0.1)
-    - gRPC/ProtoRPC (= 0.0.1)
-    - gRPC/RxLibrary (= 0.0.1)
-  - gRPC/C-Core (0.0.1):
-    - OpenSSL (~> 1.0.200)
-  - gRPC/GRPCClient (0.0.1):
-    - gRPC/C-Core
-    - gRPC/RxLibrary
-  - gRPC/ProtoRPC (0.0.1):
-    - gRPC/GRPCClient
-    - gRPC/RxLibrary
-  - gRPC/RxLibrary (0.0.1)
-  - OpenSSL (1.0.201)
-  - ProtocolBuffers (1.9.8)
-  - RemoteTest (0.0.1):
-    - gRPC (~> 0.0)
-    - ProtocolBuffers (~> 1.9)
-  - Route_guide (0.0.1):
-    - ProtocolBuffers (~> 1.9)
-
-DEPENDENCIES:
-  - gRPC (from `../../../..`)
-  - RemoteTest (from `RemoteTestClient`)
-  - Route_guide (from `RouteGuideClient`)
-
-EXTERNAL SOURCES:
-  gRPC:
-    :path: ../../../..
-  RemoteTest:
-    :path: RemoteTestClient
-  Route_guide:
-    :path: RouteGuideClient
-
-SPEC CHECKSUMS:
-  gRPC: f6c1bf5dde59ab543e4bd1d5e2ea56da4a9a0253
-  OpenSSL: 4e990d04b14015c49c800c400b86ae44a4818a5c
-  ProtocolBuffers: 9a4a171c0c7cc8f21dd29aeca4f9ac775d84a880
-  RemoteTest: 021a51c04d5795f286b379ca5ef14d0be5b2fb9b
-  Route_guide: a277da8eef182774abb050d7b81109f5878f8652
-
-COCOAPODS: 0.36.0
diff --git a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
index 6c5de812770d038b09b9157cde60f44ec4f6cff1..2ef6a6e4ab9aaf33abb0641b68ce767ce01f5af1 100644
--- a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
+++ b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
@@ -34,6 +34,7 @@
 #import <UIKit/UIKit.h>
 #import <XCTest/XCTest.h>
 
+#import <gRPC/GRXWriter+Immediate.h>
 #import <RemoteTest/Messages.pb.h>
 #import <RemoteTest/Test.pb.h>
 
@@ -48,43 +49,85 @@
   _service = [[RMTTestService alloc] initWithHost:@"grpc-test.sandbox.google.com"];
 }
 
-- (void)testEmptyRPC {
-  __weak XCTestExpectation *noRPCError = [self expectationWithDescription:@"RPC succeeded."];
-  __weak XCTestExpectation *responded = [self expectationWithDescription:@"Response received."];
+// Tests as described here: https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md
 
-  [_service emptyCallWithRequest:[RMTEmpty defaultInstance]
-                         handler:^(RMTEmpty *response, NSError *error) {
+- (void)testEmptyUnaryRPC {
+  __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"];
+
+  RMTEmpty *request = [RMTEmpty defaultInstance];
+
+  [_service emptyCallWithRequest:request handler:^(RMTEmpty *response, NSError *error) {
     XCTAssertNil(error, @"Finished with unexpected error: %@", error);
-    [noRPCError fulfill];
-    XCTAssertNotNil(response, @"nil response received.");
-    [responded fulfill];
+
+    id expectedResponse = [RMTEmpty defaultInstance];
+    XCTAssertEqualObjects(response, expectedResponse);
+
+    [expectation fulfill];
   }];
 
   [self waitForExpectationsWithTimeout:2. handler:nil];
 }
 
-- (void)testSimpleProtoRPC {
-  __weak XCTestExpectation *noRPCError = [self expectationWithDescription:@"RPC succeeded."];
-  __weak XCTestExpectation *responded = [self expectationWithDescription:@"Response received."];
-  __weak XCTestExpectation *validResponse = [self expectationWithDescription:@"Valid response."];
+- (void)testLargeUnaryRPC {
+  __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"];
 
   RMTSimpleRequest *request = [[[[[[RMTSimpleRequestBuilder alloc] init]
-                                  setResponseSize:100]
-                                 setFillUsername:YES]
-                                setFillOauthScope:YES]
+                                  setResponseType:RMTPayloadTypeCompressable]
+                                 setResponseSize:314159]
+                                setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
+                                             setBody:[NSMutableData dataWithLength:271828]]]
                                build];
+
   [_service unaryCallWithRequest:request handler:^(RMTSimpleResponse *response, NSError *error) {
     XCTAssertNil(error, @"Finished with unexpected error: %@", error);
-    [noRPCError fulfill];
-    XCTAssertNotNil(response, @"nil response received.");
-    [responded fulfill];
-    // We expect empty strings, not nil:
-    XCTAssertNotNil(response.username, @"Response's username is nil.");
-    XCTAssertNotNil(response.oauthScope, @"Response's OAuth scope is nil.");
-    [validResponse fulfill];
+
+    id expectedResponse = [[[[RMTSimpleResponseBuilder alloc] init]
+                            setPayloadBuilder:[[[[RMTPayloadBuilder alloc] init]
+                                                setType:RMTPayloadTypeCompressable]
+                                               setBody:[NSMutableData dataWithLength:314159]]]
+                           build];
+    XCTAssertEqualObjects(response, expectedResponse);
+
+    [expectation fulfill];
   }];
 
-  [self waitForExpectationsWithTimeout:2. handler:nil];
+  [self waitForExpectationsWithTimeout:4. handler:nil];
+}
+
+- (void)testClientStreamingRPC {
+  __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"];
+
+  id request1 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
+                  setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
+                                     setBody:[NSMutableData dataWithLength:27182]]]
+                 build];
+  id request2 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
+                  setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
+                                     setBody:[NSMutableData dataWithLength:8]]]
+                 build];
+  id request3 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
+                  setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
+                                     setBody:[NSMutableData dataWithLength:1828]]]
+                 build];
+  id request4 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
+                  setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
+                                     setBody:[NSMutableData dataWithLength:45904]]]
+                 build];
+  id<GRXWriter> writer = [GRXWriter writerWithContainer:@[request1, request2, request3, request4]];
+
+  [_service streamingInputCallWithRequestsWriter:writer
+                                         handler:^(RMTStreamingInputCallResponse *response, NSError *error) {
+    XCTAssertNil(error, @"Finished with unexpected error: %@", error);
+
+    id expectedResponse = [[[[RMTStreamingInputCallResponseBuilder alloc] init]
+                            setAggregatedPayloadSize:74922]
+                           build];
+    XCTAssertEqualObjects(response, expectedResponse);
+
+    [expectation fulfill];
+  }];
+
+  [self waitForExpectationsWithTimeout:4. handler:nil];
 }
 
 @end