blob: 28f8d5de4e9311745d11429677e3e4c5df38328e [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@import camera_avfoundation;
@import camera_avfoundation.Test;
@import AVFoundation;
@import XCTest;
#import <OCMock/OCMock.h>
#import "CameraTestUtils.h"
/// Includes test cases related to resolution presets setting operations for FLTCam class.
@interface FLTCamSessionPresetsTest : XCTestCase
@end
@implementation FLTCamSessionPresetsTest
- (void)testResolutionPresetWithBestFormat_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPresetInputPriority;
id videoSessionMock = OCMClassMock([AVCaptureSession class]);
OCMStub([videoSessionMock addInputWithNoConnections:[OCMArg any]]);
id captureFormatMock = OCMClassMock([AVCaptureDeviceFormat class]);
id captureDeviceMock = OCMClassMock([AVCaptureDevice class]);
OCMStub([captureDeviceMock formats]).andReturn(@[ captureFormatMock ]);
OCMExpect([captureDeviceMock activeFormat]).andReturn(captureFormatMock);
OCMExpect([captureDeviceMock lockForConfiguration:NULL]).andReturn(YES);
OCMExpect([videoSessionMock setSessionPreset:expectedPreset]);
FLTCreateCamWithVideoDimensionsForFormat(videoSessionMock, FCPPlatformResolutionPresetMax,
captureDeviceMock,
^CMVideoDimensions(AVCaptureDeviceFormat *format) {
CMVideoDimensions videoDimensions;
videoDimensions.width = 1;
videoDimensions.height = 1;
return videoDimensions;
});
OCMVerifyAll(captureDeviceMock);
OCMVerifyAll(videoSessionMock);
}
- (void)testResolutionPresetWithCanSetSessionPresetMax_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPreset3840x2160;
id videoSessionMock = OCMClassMock([AVCaptureSession class]);
OCMStub([videoSessionMock addInputWithNoConnections:[OCMArg any]]);
// Make sure that setting resolution preset for session always succeeds.
OCMStub([videoSessionMock canSetSessionPreset:[OCMArg any]]).andReturn(YES);
OCMExpect([videoSessionMock setSessionPreset:expectedPreset]);
FLTCreateCamWithVideoCaptureSession(videoSessionMock, FCPPlatformResolutionPresetMax);
OCMVerifyAll(videoSessionMock);
}
- (void)testResolutionPresetWithCanSetSessionPresetUltraHigh_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPreset3840x2160;
id videoSessionMock = OCMClassMock([AVCaptureSession class]);
OCMStub([videoSessionMock addInputWithNoConnections:[OCMArg any]]);
// Make sure that setting resolution preset for session always succeeds.
OCMStub([videoSessionMock canSetSessionPreset:[OCMArg any]]).andReturn(YES);
// Expect that setting "ultraHigh" resolutionPreset correctly updates videoCaptureSession.
OCMExpect([videoSessionMock setSessionPreset:expectedPreset]);
FLTCreateCamWithVideoCaptureSession(videoSessionMock, FCPPlatformResolutionPresetUltraHigh);
OCMVerifyAll(videoSessionMock);
}
@end