| /* | |
| * Copyright 2016 The WebRTC project authors. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #import <Foundation/Foundation.h> | |
| #import <OCMock/OCMock.h> | |
| #import <XCTest/XCTest.h> | |
| #import "sdk/objc/api/peerconnection/RTCMediaConstraints.h" | |
| #import "ARDSettingsModel+Private.h" | |
| #import "ARDSettingsStore.h" | |
| @interface ARDSettingsModelTests : XCTestCase { | |
| ARDSettingsModel *_model; | |
| } | |
| @end | |
| @implementation ARDSettingsModelTests | |
| - (id)setupMockStore { | |
| id storeMock = [OCMockObject mockForClass:[ARDSettingsStore class]]; | |
| id partialMock = [OCMockObject partialMockForObject:_model]; | |
| [[[partialMock stub] andReturn:storeMock] settingsStore]; | |
| [[[partialMock stub] andReturn:@[ @"640x480", @"960x540", @"1280x720" ]] | |
| availableVideoResolutions]; | |
| return storeMock; | |
| } | |
| - (void)setUp { | |
| _model = [[ARDSettingsModel alloc] init]; | |
| } | |
| - (void)testRetrievingSetting { | |
| id storeMock = [self setupMockStore]; | |
| [[[storeMock expect] andReturn:@"640x480"] videoResolution]; | |
| NSString *string = [_model currentVideoResolutionSettingFromStore]; | |
| XCTAssertEqualObjects(string, @"640x480"); | |
| [storeMock verify]; | |
| } | |
| - (void)testStoringInvalidConstraintReturnsNo { | |
| id storeMock = [self setupMockStore]; | |
| [([[storeMock stub] andReturn:@"960x480"]) videoResolution]; | |
| XCTAssertFalse([_model storeVideoResolutionSetting:@"960x480"]); | |
| } | |
| - (void)testWidthConstraintFromStore { | |
| id storeMock = [self setupMockStore]; | |
| [([[storeMock stub] andReturn:@"1270x480"]) videoResolution]; | |
| int width = [_model currentVideoResolutionWidthFromStore]; | |
| XCTAssertEqual(width, 1270); | |
| } | |
| - (void)testHeightConstraintFromStore { | |
| id storeMock = [self setupMockStore]; | |
| [([[storeMock stub] andReturn:@"960x540"]) videoResolution]; | |
| int height = [_model currentVideoResolutionHeightFromStore]; | |
| XCTAssertEqual(height, 540); | |
| } | |
| - (void)testConstraintComponentIsNilWhenInvalidConstraintString { | |
| id storeMock = [self setupMockStore]; | |
| [([[storeMock stub] andReturn:@"invalid"]) videoResolution]; | |
| int width = [_model currentVideoResolutionWidthFromStore]; | |
| XCTAssertEqual(width, 0); | |
| } | |
| - (void)testStoringAudioSetting { | |
| id storeMock = [self setupMockStore]; | |
| [[storeMock expect] setAudioOnly:YES]; | |
| [_model storeAudioOnlySetting:YES]; | |
| [storeMock verify]; | |
| } | |
| - (void)testReturningDefaultCallOption { | |
| id storeMock = [self setupMockStore]; | |
| [[[storeMock stub] andReturnValue:@YES] useManualAudioConfig]; | |
| XCTAssertTrue([_model currentUseManualAudioConfigSettingFromStore]); | |
| } | |
| @end |