blob: 5be8b6b5be915afc1dab8fa4f16c2ee90b4a4ef0 [file] [log] [blame]
denicijad17d5362016-11-02 02:56:09 -07001/*
2 * Copyright 2016 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#import <OCMock/OCMock.h>
denicija2256e042016-11-09 06:26:18 -080013#import "ARDSettingsModel+Private.h"
14#import "ARDSettingsStore.h"
denicijad17d5362016-11-02 02:56:09 -070015#import "WebRTC/RTCMediaConstraints.h"
16#include "webrtc/base/gunit.h"
17
18
denicija2256e042016-11-09 06:26:18 -080019@interface ARDSettingsModelTests : NSObject {
20 ARDSettingsModel *_model;
denicijad17d5362016-11-02 02:56:09 -070021}
22
23- (void)testStoringInavlidConstraintReturnsNo;
24- (void)testDefaultMediaFromStore;
25- (void)testWidthConstraintFromStore;
26- (void)testHeightConstraintFromStore;
27
28@end
29
denicija2256e042016-11-09 06:26:18 -080030@implementation ARDSettingsModelTests
denicijad17d5362016-11-02 02:56:09 -070031
32- (instancetype)init {
33 self = [super init];
34 if (self) {
denicija2256e042016-11-09 06:26:18 -080035 _model = [[ARDSettingsModel alloc] init];
denicijad17d5362016-11-02 02:56:09 -070036 }
37 return self;
38}
39
40- (id)setupMockStoreWithMediaConstraintString:(NSString *)constraintString {
denicija2256e042016-11-09 06:26:18 -080041 id storeMock = [OCMockObject mockForClass:[ARDSettingsStore class]];
denicijad17d5362016-11-02 02:56:09 -070042 [([[storeMock stub] andReturn:constraintString]) videoResolutionConstraintsSetting];
43
44 id partialMock = [OCMockObject partialMockForObject:_model];
45 [[[partialMock stub] andReturn:storeMock] settingsStore];
46
47 return storeMock;
48}
49
50- (void)testDefaultMediaFromStore {
51 // given
52 id storeMock = [self setupMockStoreWithMediaConstraintString:nil];
53
54 [[storeMock expect] setVideoResolutionConstraintsSetting:@"640x480"];
55
56 // when
57 NSString *string = [_model currentVideoResoultionConstraintFromStore];
58
59 // then
60 EXPECT_TRUE([string isEqualToString:@"640x480"]);
61 [storeMock verify];
62}
63
64- (void)testStoringInavlidConstraintReturnsNo {
65 // given
66 id storeMock = [self setupMockStoreWithMediaConstraintString:@"960x480"];
67
68 // when
69 BOOL result = [_model storeVideoResoultionConstraint:@"960x480"];
70
71 // then
72 EXPECT_TRUE(result);
73}
74
75- (void)testWidthConstraintFromStore {
76 // given
77 [self setupMockStoreWithMediaConstraintString:@"1270x480"];
78
79 // when
80 NSString *width = [_model currentVideoResolutionWidthFromStore];
81
82 // then
83 EXPECT_TRUE([width isEqualToString:@"1270"]);
84}
85
86- (void)testHeightConstraintFromStore {
87 // given
88 [self setupMockStoreWithMediaConstraintString:@"960x540"];
89 // when
90 NSString *height = [_model currentVideoResolutionHeightFromStore];
91
92 // then
93 EXPECT_TRUE([height isEqualToString:@"540"]);
94}
95
96- (void)testConstraintComponentIsNilWhenInvalidConstraintString {
97 // given
98 [self setupMockStoreWithMediaConstraintString:@"invalid"];
99
100 // when
101 NSString *width = [_model currentVideoResolutionWidthFromStore];
102
103 // then
104 EXPECT_TRUE(width == nil);
105}
106
107- (void)testConstraintsDictionaryIsNilWhenInvalidConstraintString {
108 // given
109 [self setupMockStoreWithMediaConstraintString:@"invalid"];
110
111 // when
112 NSDictionary *constraintsDictionary = [_model currentMediaConstraintFromStoreAsRTCDictionary];
113
114 // then
115 EXPECT_TRUE(constraintsDictionary == nil);
116}
117@end
118
denicija2256e042016-11-09 06:26:18 -0800119class ARDSettingsModelTest : public ::testing::Test {
denicijad17d5362016-11-02 02:56:09 -0700120 protected:
denicija2256e042016-11-09 06:26:18 -0800121 ARDSettingsModelTests *test;
122 ARDSettingsModelTest() { test = [[ARDSettingsModelTests alloc] init]; }
denicijad17d5362016-11-02 02:56:09 -0700123};
124
denicija2256e042016-11-09 06:26:18 -0800125TEST_F(ARDSettingsModelTest, DefaultMediaFromStore) {
denicijad17d5362016-11-02 02:56:09 -0700126 @autoreleasepool {
127 [test testDefaultMediaFromStore];
128 }
129}
130
denicija2256e042016-11-09 06:26:18 -0800131TEST_F(ARDSettingsModelTest, StoringInvalidConstraintsReturnsNo) {
denicijad17d5362016-11-02 02:56:09 -0700132 @autoreleasepool {
133 [test testStoringInavlidConstraintReturnsNo];
134 }
135}
136
denicija2256e042016-11-09 06:26:18 -0800137TEST_F(ARDSettingsModelTest, WidthConstraintFromStore) {
denicijad17d5362016-11-02 02:56:09 -0700138 @autoreleasepool {
139 [test testWidthConstraintFromStore];
140 }
141}
142
denicija2256e042016-11-09 06:26:18 -0800143TEST_F(ARDSettingsModelTest, HeightConstraintFromStore) {
denicijad17d5362016-11-02 02:56:09 -0700144 @autoreleasepool {
145 [test testHeightConstraintFromStore];
146 }
147}
148
denicija2256e042016-11-09 06:26:18 -0800149TEST_F(ARDSettingsModelTest, ConstratintIsNil) {
denicijad17d5362016-11-02 02:56:09 -0700150 @autoreleasepool {
151 [test testConstraintComponentIsNilWhenInvalidConstraintString];
152 }
153}
154
denicija2256e042016-11-09 06:26:18 -0800155TEST_F(ARDSettingsModelTest, DictionaryIsNil) {
denicijad17d5362016-11-02 02:56:09 -0700156 @autoreleasepool {
157 [test testConstraintsDictionaryIsNilWhenInvalidConstraintString];
158 }
159}