Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm

Issue 2050153003: Update Unit test for AppRTCMobile app (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Various requested cleanups Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/examples/objc/AppRTCMobile/ARDAppClient.m ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm
diff --git a/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm b/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm
index c1fc08ca8e94e5b5ae7a6500711e45658165cdae..5721b81e87df59c43b77491008f5a7505d0fd2b8 100644
--- a/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm
+++ b/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClientTest.mm
@@ -9,6 +9,7 @@
*/
#import <Foundation/Foundation.h>
+#import <QuartzCore/CoreAnimation.h>
tkchin_webrtc 2016/11/07 19:14:21 alphabetize
#import <OCMock/OCMock.h>
#include "webrtc/base/gunit.h"
@@ -56,8 +57,8 @@ - (void)fulfill {
@interface ARDTestCase : NSObject
- (ARDTestExpectation *)expectationWithDescription:(NSString *)description;
-- (void)waitForExpectationsWithTimeout:(NSTimeInterval)timeout
- handler:(void (^)(NSError *error))handler;
+- (void)waitForExpectationsWithTimeout:(CFTimeInterval)timeout
+ handler:(void (^)(BOOL didError))handler;
tkchin_webrtc 2016/11/07 19:14:21 This was meant to mirror XCTest interfaces so make
afedor 2016/11/07 20:25:25 OK, but to maintain the interface, I should also p
@end
@@ -79,19 +80,20 @@ - (ARDTestExpectation *)expectationWithDescription:(NSString *)description {
return expectation;
}
-- (void)waitForExpectationsWithTimeout:(NSTimeInterval)timeout
- handler:(void (^)(NSError *error))handler {
- NSDate *startDate = [NSDate date];
+- (void)waitForExpectationsWithTimeout:(CFTimeInterval)timeout
+ handler:(void (^)(BOOL didError))handler {
+ CFTimeInterval startTime = CACurrentMediaTime();
+ BOOL didErrorExp = NO;
tkchin_webrtc 2016/11/07 19:14:21 CFTimeInterval change looks good, but please retur
while (![self areExpectationsFulfilled]) {
- NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:startDate];
+ CFTimeInterval duration = CACurrentMediaTime() - startTime;
if (duration > timeout) {
- NSAssert(NO, @"Expectation timed out.");
+ didErrorExp = YES;
break;
}
[[NSRunLoop currentRunLoop]
runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
}
- handler(nil);
+ handler(didErrorExp);
}
- (BOOL)areExpectationsFulfilled {
@@ -137,7 +139,7 @@ - (id)mockRoomServerClientForRoomId:(NSString *)roomId
[[[mockRoomServerClient stub] andDo:^(NSInvocation *invocation) {
__unsafe_unretained void (^completionHandler)(ARDJoinResponse *response,
NSError *error);
- [invocation getArgument:&completionHandler atIndex:3];
+ [invocation getArgument:&completionHandler atIndex:4];
completionHandler(joinResponse, nil);
}] joinRoomWithRoomId:roomId isLoopback:NO completionHandler:[OCMArg any]];
@@ -203,7 +205,7 @@ - (ARDAppClient *)createAppClientForRoomId:(NSString *)roomId
messages:(NSArray *)messages
messageHandler:
(void (^)(ARDSignalingMessage *message))messageHandler
- connectedHandler:(void (^)(void))connectedHandler {
+ connectedHandler:(void (^)(NSString *))connectedHandler {
tkchin_webrtc 2016/11/07 19:14:21 instead of passing the name of the method, just in
id turnClient = [self mockTURNClient];
id signalingChannel = [self mockSignalingChannelForRoomId:roomId
clientId:clientId
@@ -217,9 +219,13 @@ - (ARDAppClient *)createAppClientForRoomId:(NSString *)roomId
id delegate =
[OCMockObject niceMockForProtocol:@protocol(ARDAppClientDelegate)];
[[[delegate stub] andDo:^(NSInvocation *invocation) {
- connectedHandler();
+ connectedHandler(NSStringFromSelector([invocation selector]));
}] appClient:[OCMArg any]
didChangeConnectionState:RTCIceConnectionStateConnected];
+ [[[delegate stub] andDo:^(NSInvocation *invocation) {
+ connectedHandler(NSStringFromSelector([invocation selector]));
+ }] appClient:[OCMArg any]
+ didReceiveLocalVideoTrack:[OCMArg any]];
return [[ARDAppClient alloc] initWithRoomServerClient:roomServerClient
signalingChannel:signalingChannel
@@ -255,8 +261,10 @@ - (void)testSession {
messageHandler:^(ARDSignalingMessage *message) {
ARDAppClient *strongAnswerer = weakAnswerer;
[strongAnswerer channel:strongAnswerer.channel didReceiveMessage:message];
- } connectedHandler:^{
- [callerConnectionExpectation fulfill];
+ } connectedHandler:^(NSString *connectedSelectorString){
+ if ([connectedSelectorString
+ isEqualToString:@"appClient:didChangeConnectionState:"])
+ [callerConnectionExpectation fulfill];
}];
// TODO(tkchin): Figure out why DTLS-SRTP constraint causes thread assertion
// crash in Debug.
@@ -272,8 +280,10 @@ - (void)testSession {
messageHandler:^(ARDSignalingMessage *message) {
ARDAppClient *strongCaller = weakCaller;
[strongCaller channel:strongCaller.channel didReceiveMessage:message];
- } connectedHandler:^{
- [answererConnectionExpectation fulfill];
+ } connectedHandler:^(NSString *connectedSelectorString){
+ if ([connectedSelectorString
+ isEqualToString:@"appClient:didChangeConnectionState:"])
+ [answererConnectionExpectation fulfill];
}];
// TODO(tkchin): Figure out why DTLS-SRTP constraint causes thread assertion
// crash in Debug.
@@ -293,9 +303,48 @@ - (void)testSession {
isAudioOnly:NO
shouldMakeAecDump:NO
shouldUseLevelControl:NO];
- [self waitForExpectationsWithTimeout:20 handler:^(NSError *error) {
- if (error) {
- NSLog(@"Expectations error: %@", error);
+ [self waitForExpectationsWithTimeout:20 handler:^(BOOL didError) {
+ if (didError) {
+ EXPECT_TRUE(0);
+ }
+ }];
+}
+
+// Test to see that we get a local video connection
+// Note this will currently pass even when no camera is connected as a local
+// video track is created regardless (Perhaps there should be a test for that...)
+- (void)testSessionShouldGetLocalVideoTrackCallback {
+ ARDAppClient *caller = nil;
+ NSString *roomId = @"testRoom";
+ NSString *callerId = @"testCallerId";
+
+ ARDTestExpectation *callerConnectionExpectation =
+ [self expectationWithDescription:@"Caller PC connected."];
tkchin_webrtc 2016/11/07 19:14:21 indent 4
+
+ caller = [self createAppClientForRoomId:roomId
+ clientId:callerId
+ isInitiator:YES
+ messages:[NSArray array]
+ messageHandler:^(ARDSignalingMessage *message) {
tkchin_webrtc 2016/11/07 19:14:21 please follow formatting as in other methods do no
+ }
+ connectedHandler:^(NSString *connectedSelectorString) {
+ if ([connectedSelectorString
+ isEqualToString:@"appClient:didReceiveLocalVideoTrack:"])
+ [callerConnectionExpectation fulfill];
+ }];
+ caller.defaultPeerConnectionConstraints =
+ [[RTCMediaConstraints alloc] initWithMandatoryConstraints:nil
tkchin_webrtc 2016/11/07 19:14:21 indent 4
+ optionalConstraints:nil];
+
+ // Kick off connection.
+ [caller connectToRoomWithId:roomId
+ isLoopback:NO
+ isAudioOnly:NO
+ shouldMakeAecDump:NO
+ shouldUseLevelControl:NO];
+ [self waitForExpectationsWithTimeout:20 handler:^(BOOL didError) {
+ if (didError) {
+ EXPECT_TRUE(0);
}
}];
}
@@ -318,7 +367,7 @@ - (void)testPreferVideoCodec {
RTCSessionDescription *h264Desc =
[ARDSDPUtils descriptionForDescription:desc
preferredVideoCodec:@"H264"];
- EXPECT_TRUE([h264Desc.description isEqualToString:expectedSdp]);
+ EXPECT_TRUE([h264Desc.description rangeOfString: expectedSdp].location != NSNotFound);
tkchin_webrtc 2016/11/07 19:14:21 nit: no space after : EXPECT_NE?
}
@end
@@ -340,6 +389,16 @@ static void TearDownTestCase() {
}
}
+#if !TARGET_IPHONE_SIMULATOR
+// Expected fail on iOS Simulator due to no camera support
+TEST_F(SignalingTest, SessionLocalVideoCallbackTest) {
+ @autoreleasepool {
+ ARDAppClientTest *test = [[ARDAppClientTest alloc] init];
+ [test testSessionShouldGetLocalVideoTrackCallback];
+ }
+}
+#endif
+
TEST_F(SignalingTest, SDPTest) {
@autoreleasepool {
ARDSDPUtilsTest *test = [[ARDSDPUtilsTest alloc] init];
@@ -347,4 +406,7 @@ static void TearDownTestCase() {
}
}
-
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
« no previous file with comments | « webrtc/examples/objc/AppRTCMobile/ARDAppClient.m ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698