1/* 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11#import <Foundation/Foundation.h> 12 13#include "webrtc/base/gunit.h" 14 15#import "webrtc/api/objc/RTCMediaConstraints.h" 16#import "webrtc/api/objc/RTCMediaConstraints+Private.h" 17#import "webrtc/base/objc/NSString+StdString.h" 18 19@interface RTCMediaConstraintsTest : NSObject 20- (void)testMediaConstraints; 21@end 22 23@implementation RTCMediaConstraintsTest 24 25- (void)testMediaConstraints { 26 NSDictionary *mandatory = @{@"key1": @"value1", @"key2": @"value2"}; 27 NSDictionary *optional = @{@"key3": @"value3", @"key4": @"value4"}; 28 29 RTCMediaConstraints *constraints = [[RTCMediaConstraints alloc] 30 initWithMandatoryConstraints:mandatory 31 optionalConstraints:optional]; 32 rtc::scoped_ptr<webrtc::MediaConstraints> nativeConstraints = 33 [constraints nativeConstraints]; 34 35 webrtc::MediaConstraintsInterface::Constraints nativeMandatory = 36 nativeConstraints->GetMandatory(); 37 [self expectConstraints:mandatory inNativeConstraints:nativeMandatory]; 38 39 webrtc::MediaConstraintsInterface::Constraints nativeOptional = 40 nativeConstraints->GetOptional(); 41 [self expectConstraints:optional inNativeConstraints:nativeOptional]; 42} 43 44- (void)expectConstraints:(NSDictionary *)constraints 45 inNativeConstraints: 46 (webrtc::MediaConstraintsInterface::Constraints)nativeConstraints { 47 EXPECT_EQ(constraints.count, nativeConstraints.size()); 48 49 for (NSString *key in constraints) { 50 NSString *value = constraints[key]; 51 52 std::string nativeValue; 53 bool found = nativeConstraints.FindFirst(key.stdString, &nativeValue); 54 EXPECT_TRUE(found); 55 EXPECT_EQ(value.stdString, nativeValue); 56 } 57} 58 59@end 60 61TEST(RTCMediaConstraintsTest, MediaConstraintsTest) { 62 @autoreleasepool { 63 RTCMediaConstraintsTest *test = [[RTCMediaConstraintsTest alloc] init]; 64 [test testMediaConstraints]; 65 } 66} 67