Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix formatting
  • Loading branch information
mchudy committed Feb 8, 2025
commit 8d35b3b85a203c2bef67aeb234b0f2209e29ce47
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@ - (void)setUp {
MockCaptureDevice *mockDevice = [[MockCaptureDevice alloc] init];
_mockDeviceOrientationProvider = [[MockDeviceOrientationProvider alloc] init];
_mockDevice = mockDevice;

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> * _Nonnull{
return mockDevice;
};
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> *_Nonnull { return mockDevice; };
configuration.deviceOrientationProvider = _mockDeviceOrientationProvider;
_camera = FLTCreateCamWithConfiguration(configuration);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,9 @@ - (void)setUp {
MockCaptureDevice *mockDevice = [[MockCaptureDevice alloc] init];
_mockDevice = mockDevice;
_mockDeviceOrientationProvider = [[MockDeviceOrientationProvider alloc] init];

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> * _Nonnull{
return mockDevice;
};
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> *_Nonnull { return mockDevice; };
configuration.deviceOrientationProvider = _mockDeviceOrientationProvider;
_camera = FLTCreateCamWithConfiguration(configuration);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ - (CameraPlugin *)createCameraPluginWithSession:(MockCaptureSession *)mockSessio
- (void)testCreate_ShouldCallResultOnMainThread {
MockCaptureSession *avCaptureSessionMock = [[MockCaptureSession alloc] init];
avCaptureSessionMock.canSetSessionPreset = YES;

CameraPlugin *camera = [self createCameraPluginWithSession:avCaptureSessionMock];

XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
Expand Down Expand Up @@ -67,7 +67,7 @@ - (void)testCreate_ShouldCallResultOnMainThread {
- (void)testDisposeShouldDeallocCamera {
MockCaptureSession *avCaptureSessionMock = [[MockCaptureSession alloc] init];
avCaptureSessionMock.canSetSessionPreset = YES;

CameraPlugin *camera = [self createCameraPluginWithSession:avCaptureSessionMock];

XCTestExpectation *createExpectation =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

@import AVFoundation;
@import XCTest;
#import <OCMock/OCMock.h>

#import "CameraTestUtils.h"
#import "MockCaptureDevice.h"
Expand All @@ -25,39 +24,41 @@ @implementation FLTCamSessionPresetsTest
- (void)testResolutionPresetWithBestFormat_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPresetInputPriority;
XCTestExpectation *presetExpectation = [self expectationWithDescription:@"Expected preset set"];
XCTestExpectation *lockForConfigurationExpectation = [self expectationWithDescription:@"Expected lockForConfiguration called"];
XCTestExpectation *lockForConfigurationExpectation =
[self expectationWithDescription:@"Expected lockForConfiguration called"];

MockCaptureSession *videoSessionMock = [[MockCaptureSession alloc] init];
videoSessionMock.setSessionPresetStub = ^(NSString *preset) {
if (preset == expectedPreset) {
[presetExpectation fulfill];
}
};

MockCaptureDeviceFormat *captureFormatMock = [[MockCaptureDeviceFormat alloc] init];



MockCaptureDevice *captureDeviceMock = [[MockCaptureDevice alloc] init];
captureDeviceMock.formats = @[ captureFormatMock ];
captureDeviceMock.activeFormat = captureFormatMock;
captureDeviceMock.lockForConfigurationStub = ^BOOL(NSError *__autoreleasing _Nullable * _Nullable error) {
[lockForConfigurationExpectation fulfill];
return YES;
};

captureDeviceMock.lockForConfigurationStub =
^BOOL(NSError *__autoreleasing _Nullable *_Nullable error) {
[lockForConfigurationExpectation fulfill];
return YES;
};

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> * _Nonnull{
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> *_Nonnull {
return captureDeviceMock;
};
configuration.videoDimensionsForFormat = ^CMVideoDimensions(NSObject<FLTCaptureDeviceFormat> *format) {
CMVideoDimensions videoDimensions;
videoDimensions.width = 1;
videoDimensions.height = 1;
return videoDimensions;
};
configuration.videoDimensionsForFormat =
^CMVideoDimensions(NSObject<FLTCaptureDeviceFormat> *format) {
CMVideoDimensions videoDimensions;
videoDimensions.width = 1;
videoDimensions.height = 1;
return videoDimensions;
};
configuration.videoCaptureSession = videoSessionMock;
configuration.mediaSettings = FCPGetDefaultMediaSettings(FCPPlatformResolutionPresetMax);

FLTCreateCamWithConfiguration(configuration);

[self waitForExpectationsWithTimeout:1 handler:nil];
Expand All @@ -66,18 +67,18 @@ - (void)testResolutionPresetWithBestFormat_mustUpdateCaptureSessionPreset {
- (void)testResolutionPresetWithCanSetSessionPresetMax_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPreset3840x2160;
XCTestExpectation *expectation = [self expectationWithDescription:@"Expected preset set"];

MockCaptureSession *videoSessionMock = [[MockCaptureSession alloc] init];

// Make sure that setting resolution preset for session always succeeds.
videoSessionMock.canSetSessionPreset = YES;

videoSessionMock.setSessionPresetStub = ^(NSString *preset) {
if (preset == expectedPreset) {
[expectation fulfill];
}
};

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.videoCaptureSession = videoSessionMock;
configuration.mediaSettings = FCPGetDefaultMediaSettings(FCPPlatformResolutionPresetMax);
Expand All @@ -93,9 +94,9 @@ - (void)testResolutionPresetWithCanSetSessionPresetMax_mustUpdateCaptureSessionP
- (void)testResolutionPresetWithCanSetSessionPresetUltraHigh_mustUpdateCaptureSessionPreset {
NSString *expectedPreset = AVCaptureSessionPreset3840x2160;
XCTestExpectation *expectation = [self expectationWithDescription:@"Expected preset set"];

MockCaptureSession *videoSessionMock = [[MockCaptureSession alloc] init];

// Make sure that setting resolution preset for session always succeeds.
videoSessionMock.canSetSessionPreset = YES;

Expand All @@ -105,11 +106,11 @@ - (void)testResolutionPresetWithCanSetSessionPresetUltraHigh_mustUpdateCaptureSe
[expectation fulfill];
}
};

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.videoCaptureSession = videoSessionMock;
configuration.mediaSettings = FCPGetDefaultMediaSettings(FCPPlatformResolutionPresetUltraHigh);

FLTCreateCamWithConfiguration(configuration);

[self waitForExpectationsWithTimeout:1 handler:nil];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
@import AVFoundation;

#import "CameraTestUtils.h"
#import "MockCameraDeviceDiscoverer.h"
#import "MockCaptureDevice.h"
#import "MockCaptureSession.h"
#import "MockCameraDeviceDiscoverer.h"
#import "MockFlutterBinaryMessenger.h"
#import "MockFlutterTextureRegistry.h"
#import "MockGlobalEventApi.h"
Expand Down Expand Up @@ -148,12 +148,12 @@ - (void)testSettings_shouldPassConfigurationToCameraDeviceAndWriter {
enableAudio:gTestEnableAudio];
TestMediaSettingsAVWrapper *injectedWrapper =
[[TestMediaSettingsAVWrapper alloc] initWithTestCase:self];

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.mediaSettingsWrapper = injectedWrapper;
configuration.mediaSettings = settings;
FLTCam *camera = FLTCreateCamWithConfiguration(configuration);

// Expect FPS configuration is passed to camera device.
[self waitForExpectations:@[
injectedWrapper.lockExpectation, injectedWrapper.beginConfigurationExpectation,
Expand All @@ -178,18 +178,19 @@ - (void)testSettings_ShouldBeSupportedByMethodCall {
MockCaptureDevice *mockDevice = [[MockCaptureDevice alloc] init];
MockCaptureSession *mockSession = [[MockCaptureSession alloc] init];
mockSession.canSetSessionPreset = YES;

CameraPlugin *camera = [[CameraPlugin alloc] initWithRegistry:[[MockFlutterTextureRegistry alloc] init]
messenger:[[MockFlutterBinaryMessenger alloc] init]
globalAPI:[[MockGlobalEventApi alloc] init]
deviceDiscoverer:[[MockCameraDeviceDiscoverer alloc] init]
deviceFactory:^NSObject<FLTCaptureDevice> * (NSString *name) {
return mockDevice;
}
captureSessionFactory:^NSObject<FLTCaptureSession> * _Nonnull{
return mockSession;
}
captureDeviceInputFactory:[[MockCaptureDeviceInputFactory alloc] init]];

CameraPlugin *camera =
[[CameraPlugin alloc] initWithRegistry:[[MockFlutterTextureRegistry alloc] init]
messenger:[[MockFlutterBinaryMessenger alloc] init]
globalAPI:[[MockGlobalEventApi alloc] init]
deviceDiscoverer:[[MockCameraDeviceDiscoverer alloc] init]
deviceFactory:^NSObject<FLTCaptureDevice> *(NSString *name) {
return mockDevice;
}
captureSessionFactory:^NSObject<FLTCaptureSession> *_Nonnull {
return mockSession;
}
captureDeviceInputFactory:[[MockCaptureDeviceInputFactory alloc] init]];

XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];

Expand Down Expand Up @@ -227,7 +228,8 @@ - (void)testSettings_ShouldSelectFormatWhichSupports60FPS {
configuration.mediaSettings = settings;
FLTCam *camera = FLTCreateCamWithConfiguration(configuration);

NSObject<FLTFrameRateRange> *range = camera.captureDevice.activeFormat.videoSupportedFrameRateRanges[0];
NSObject<FLTFrameRateRange> *range =
camera.captureDevice.activeFormat.videoSupportedFrameRateRanges[0];
XCTAssertLessThanOrEqual(range.minFrameRate, 60);
XCTAssertGreaterThanOrEqual(range.maxFrameRate, 60);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

NS_ASSUME_NONNULL_BEGIN

extern FCPPlatformMediaSettings *FCPGetDefaultMediaSettings(FCPPlatformResolutionPreset resolutionPreset);
extern FCPPlatformMediaSettings *FCPGetDefaultMediaSettings(
FCPPlatformResolutionPreset resolutionPreset);

/// Creates a test `FLTCamConfiguration` with a default mock setup.
extern FLTCamConfiguration *FLTCreateTestCameraConfiguration(void);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
#import "MockCaptureSession.h"
#import "MockDeviceOrientationProvider.h"

FCPPlatformMediaSettings *FCPGetDefaultMediaSettings(
FCPPlatformResolutionPreset resolutionPreset) {
FCPPlatformMediaSettings *FCPGetDefaultMediaSettings(FCPPlatformResolutionPreset resolutionPreset) {
return [FCPPlatformMediaSettings makeWithResolutionPreset:resolutionPreset
framesPerSecond:nil
videoBitrate:nil
Expand All @@ -24,49 +23,52 @@

FLTCamConfiguration *FLTCreateTestCameraConfiguration(void) {
dispatch_queue_t captureSessionQueue = dispatch_queue_create("capture_session_queue", NULL);

MockCaptureSession *videoSessionMock = [[MockCaptureSession alloc] init];
videoSessionMock.canSetSessionPreset = YES;

MockCaptureSession *audioSessionMock = [[MockCaptureSession alloc] init];
audioSessionMock.canSetSessionPreset = YES;

MockFrameRateRange *frameRateRangeMock1 = [[MockFrameRateRange alloc] initWithMinFrameRate:3 maxFrameRate:30];

MockFrameRateRange *frameRateRangeMock1 = [[MockFrameRateRange alloc] initWithMinFrameRate:3
maxFrameRate:30];
MockCaptureDeviceFormat *captureDeviceFormatMock1 = [[MockCaptureDeviceFormat alloc] init];
captureDeviceFormatMock1.videoSupportedFrameRateRanges = @[frameRateRangeMock1];

MockFrameRateRange *frameRateRangeMock2 = [[MockFrameRateRange alloc] initWithMinFrameRate:3 maxFrameRate:60];
captureDeviceFormatMock1.videoSupportedFrameRateRanges = @[ frameRateRangeMock1 ];

MockFrameRateRange *frameRateRangeMock2 = [[MockFrameRateRange alloc] initWithMinFrameRate:3
maxFrameRate:60];
MockCaptureDeviceFormat *captureDeviceFormatMock2 = [[MockCaptureDeviceFormat alloc] init];
captureDeviceFormatMock2.videoSupportedFrameRateRanges = @[frameRateRangeMock2];
captureDeviceFormatMock2.videoSupportedFrameRateRanges = @[ frameRateRangeMock2 ];

MockCaptureDevice *captureDeviceMock = [[MockCaptureDevice alloc] init];
captureDeviceMock.lockForConfigurationStub = ^BOOL(NSError **error) {
return YES;
};
captureDeviceMock.formats = @[captureDeviceFormatMock1, captureDeviceFormatMock2];
captureDeviceMock.formats = @[ captureDeviceFormatMock1, captureDeviceFormatMock2 ];

__block NSObject<FLTCaptureDeviceFormat> *currentFormat = captureDeviceFormatMock1;
captureDeviceMock.activeFormatStub = ^NSObject<FLTCaptureDeviceFormat> * {
return currentFormat;
};
captureDeviceMock.setActiveFormatStub = ^(NSObject<FLTCaptureDeviceFormat> *format) {
currentFormat = format;
};

FLTCamConfiguration *configuration = [[FLTCamConfiguration alloc] initWithMediaSettings:FCPGetDefaultMediaSettings(FCPPlatformResolutionPresetMedium)
mediaSettingsWrapper:[[FLTCamMediaSettingsAVWrapper alloc] init]
captureDeviceFactory:^NSObject<FLTCaptureDevice> *(void) {
return captureDeviceMock;
}
captureSessionFactory:^NSObject<FLTCaptureSession> *_Nonnull {
return videoSessionMock;
}
captureSessionQueue:captureSessionQueue
captureDeviceInputFactory:[[MockCaptureDeviceInputFactory alloc] init]];

FLTCamConfiguration *configuration = [[FLTCamConfiguration alloc]
initWithMediaSettings:FCPGetDefaultMediaSettings(FCPPlatformResolutionPresetMedium)
mediaSettingsWrapper:[[FLTCamMediaSettingsAVWrapper alloc] init]
captureDeviceFactory:^NSObject<FLTCaptureDevice> *(void) {
return captureDeviceMock;
}
captureSessionFactory:^NSObject<FLTCaptureSession> *_Nonnull {
return videoSessionMock;
}
captureSessionQueue:captureSessionQueue
captureDeviceInputFactory:[[MockCaptureDeviceInputFactory alloc] init]];
configuration.videoCaptureSession = videoSessionMock;
configuration.audioCaptureSession = audioSessionMock;
configuration.orientation = UIDeviceOrientationPortrait;

return configuration;
}

Expand All @@ -76,15 +78,15 @@
return FLTCreateCamWithConfiguration(configuration);
}


FLTCam *FLTCreateCamWithConfiguration(FLTCamConfiguration *configuration) {
id captureVideoDataOutputMock = [OCMockObject niceMockForClass:[AVCaptureVideoDataOutput class]];
OCMStub([captureVideoDataOutputMock new]).andReturn(captureVideoDataOutputMock);
OCMStub([captureVideoDataOutputMock
recommendedVideoSettingsForAssetWriterWithOutputFileType:AVFileTypeMPEG4])
.andReturn(@{});
OCMStub([captureVideoDataOutputMock sampleBufferCallbackQueue]).andReturn(configuration.captureSessionQueue);

OCMStub([captureVideoDataOutputMock sampleBufferCallbackQueue])
.andReturn(configuration.captureSessionQueue);

id videoMock = OCMClassMock([AVAssetWriterInputPixelBufferAdaptor class]);
OCMStub([videoMock assetWriterInputPixelBufferAdaptorWithAssetWriterInput:OCMOCK_ANY
sourcePixelBufferAttributes:OCMOCK_ANY])
Expand All @@ -98,7 +100,7 @@
OCMStub([writerInputMock assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:[OCMArg any]])
.andReturn(writerInputMock);

return [[FLTCam alloc] initWithConfiguration:configuration error:nil];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,12 +192,10 @@ - (void)testCaptureToFile_handlesTorchMode {
dispatch_queue_t captureSessionQueue = dispatch_queue_create("capture_session_queue", NULL);
dispatch_queue_set_specific(captureSessionQueue, FLTCaptureSessionQueueSpecific,
(void *)FLTCaptureSessionQueueSpecific, NULL);

FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.captureSessionQueue = captureSessionQueue;
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> *{
return captureDeviceMock;
};
configuration.captureDeviceFactory = ^NSObject<FLTCaptureDevice> * { return captureDeviceMock; };
FLTCam *cam = FLTCreateCamWithConfiguration(configuration);

AVCapturePhotoSettings *settings = [AVCapturePhotoSettings photoSettings];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@

NS_ASSUME_NONNULL_BEGIN

/// A mock implementation of `FLTDeviceOrientationProviding` that allows mocking the class properties.
/// A mock implementation of `FLTDeviceOrientationProviding` that allows mocking the class
/// properties.
@interface MockCaptureDeviceFormat : NSObject <FLTCaptureDeviceFormat>

/// Initializes a `MockCaptureDeviceFormat` with the given dimensions.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ @implementation StreamingTests

- (void)setUp {
dispatch_queue_t captureSessionQueue = dispatch_queue_create("testing", NULL);
FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
FLTCamConfiguration *configuration = FLTCreateTestCameraConfiguration();
configuration.captureSessionQueue = captureSessionQueue;

_camera = FLTCreateCamWithConfiguration(configuration);
_sampleBuffer = FLTCreateTestSampleBuffer();
}
Expand Down
Loading