Skip to content

Commit 44e20b0

Browse files
[camera_avfoundation] Test utils and mocks swift migration - part 3 (#8912)
Migrates camera test utils and mocks as part of flutter/flutter#119109 Migrates to swift following mock classes: - MockAssetWriter - MockAssetWriterInput - MockAssetWriterInputPixelBufferAdaptor - MockCaptureDevice - MockCaptureInput - MockCaptureDeviceInputFactory ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
1 parent a66ac0a commit 44e20b0

22 files changed

+278
-443
lines changed

packages/camera/camera_avfoundation/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.9.18+13
2+
3+
* Migrates test utils and mocks to Swift.
4+
* Aligns `FLTCaptureDevice` more closely with the `AVCaptureDevice` interface.
5+
16
## 0.9.18+12
27

38
* Migrates test utils and mocks to Swift.

packages/camera/camera_avfoundation/example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
7F8FD22C2D4D07DD001AF2C1 /* MockFlutterTextureRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F8FD22B2D4D07DD001AF2C1 /* MockFlutterTextureRegistry.m */; };
1818
7F8FD22F2D4D0B88001AF2C1 /* MockFlutterBinaryMessenger.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F8FD22E2D4D0B88001AF2C1 /* MockFlutterBinaryMessenger.m */; };
1919
7FCEDD352D43C2B900EA1CA8 /* MockDeviceOrientationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FCEDD342D43C2B900EA1CA8 /* MockDeviceOrientationProvider.m */; };
20-
7FCEDD362D43C2B900EA1CA8 /* MockCaptureDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FCEDD322D43C2B900EA1CA8 /* MockCaptureDevice.m */; };
2120
7FD582202D579ECC003B1200 /* MockCapturePhotoOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FD5821F2D579ECC003B1200 /* MockCapturePhotoOutput.m */; };
22-
7FD582272D57C020003B1200 /* MockAssetWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FD582262D57C020003B1200 /* MockAssetWriter.m */; };
2321
7FD582352D57D97C003B1200 /* MockCaptureDeviceFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FD582342D57D97C003B1200 /* MockCaptureDeviceFormat.m */; };
2422
7FD83D2B2D5BA65B00F4DB7C /* MockCaptureConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FD83D2A2D5BA65B00F4DB7C /* MockCaptureConnection.m */; };
2523
970ADABE2D6740A900EFDCD9 /* MockWritableData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970ADABD2D6740A900EFDCD9 /* MockWritableData.swift */; };
@@ -56,6 +54,12 @@
5654
E15139182D80980900FEE47B /* FLTCamSetDeviceOrientationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15139172D80980900FEE47B /* FLTCamSetDeviceOrientationTests.swift */; };
5755
E16602952D8471C0003CFE12 /* FLTCamZoomTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16602942D8471C0003CFE12 /* FLTCamZoomTests.swift */; };
5856
E1A5F4E32D80259C0005BA64 /* FLTCamSetFlashModeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A5F4E22D80259C0005BA64 /* FLTCamSetFlashModeTests.swift */; };
57+
E1ABED6C2D94392500AED9CC /* MockAssetWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15BC7E72D86D29F00F66474 /* MockAssetWriter.swift */; };
58+
E1ABED6D2D94392700AED9CC /* MockAssetWriterInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15BC7E92D86D41F00F66474 /* MockAssetWriterInput.swift */; };
59+
E1ABED6E2D94392900AED9CC /* MockAssetWriterInputPixelBufferAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15BC7EB2D86D50200F66474 /* MockAssetWriterInputPixelBufferAdaptor.swift */; };
60+
E1ABED6F2D943B2500AED9CC /* MockCaptureDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15BC7ED2D86D85500F66474 /* MockCaptureDevice.swift */; };
61+
E1ABED722D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ABED702D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift */; };
62+
E1ABED732D943DC700AED9CC /* MockCaptureInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ABED712D943DC700AED9CC /* MockCaptureInput.swift */; };
5963
E1FFEAAD2D6C8DD700B14107 /* MockFLTCam.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAAC2D6C8DD700B14107 /* MockFLTCam.swift */; };
6064
E1FFEAAF2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAAE2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift */; };
6165
E1FFEAB12D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAB02D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift */; };
@@ -102,14 +106,10 @@
102106
7F8FD22B2D4D07DD001AF2C1 /* MockFlutterTextureRegistry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockFlutterTextureRegistry.m; sourceTree = "<group>"; };
103107
7F8FD22D2D4D0B73001AF2C1 /* MockFlutterBinaryMessenger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockFlutterBinaryMessenger.h; sourceTree = "<group>"; };
104108
7F8FD22E2D4D0B88001AF2C1 /* MockFlutterBinaryMessenger.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockFlutterBinaryMessenger.m; sourceTree = "<group>"; };
105-
7FCEDD312D43C2B900EA1CA8 /* MockCaptureDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockCaptureDevice.h; sourceTree = "<group>"; };
106-
7FCEDD322D43C2B900EA1CA8 /* MockCaptureDevice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockCaptureDevice.m; sourceTree = "<group>"; };
107109
7FCEDD332D43C2B900EA1CA8 /* MockDeviceOrientationProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockDeviceOrientationProvider.h; sourceTree = "<group>"; };
108110
7FCEDD342D43C2B900EA1CA8 /* MockDeviceOrientationProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockDeviceOrientationProvider.m; sourceTree = "<group>"; };
109111
7FD5821F2D579ECC003B1200 /* MockCapturePhotoOutput.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockCapturePhotoOutput.m; sourceTree = "<group>"; };
110112
7FD582212D579ED9003B1200 /* MockCapturePhotoOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockCapturePhotoOutput.h; sourceTree = "<group>"; };
111-
7FD582262D57C020003B1200 /* MockAssetWriter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockAssetWriter.m; sourceTree = "<group>"; };
112-
7FD582282D57C02B003B1200 /* MockAssetWriter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockAssetWriter.h; sourceTree = "<group>"; };
113113
7FD582342D57D97C003B1200 /* MockCaptureDeviceFormat.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockCaptureDeviceFormat.m; sourceTree = "<group>"; };
114114
7FD582362D57D989003B1200 /* MockCaptureDeviceFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockCaptureDeviceFormat.h; sourceTree = "<group>"; };
115115
7FD83D292D5BA49100F4DB7C /* MockCaptureConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockCaptureConnection.h; sourceTree = "<group>"; };
@@ -155,8 +155,14 @@
155155
E142681C2D8483FD0046CBBC /* MockCaptureSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCaptureSession.swift; sourceTree = "<group>"; };
156156
E142681E2D8566230046CBBC /* CameraTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraTestUtils.swift; sourceTree = "<group>"; };
157157
E15139172D80980900FEE47B /* FLTCamSetDeviceOrientationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLTCamSetDeviceOrientationTests.swift; sourceTree = "<group>"; };
158+
E15BC7E72D86D29F00F66474 /* MockAssetWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAssetWriter.swift; sourceTree = "<group>"; };
159+
E15BC7E92D86D41F00F66474 /* MockAssetWriterInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAssetWriterInput.swift; sourceTree = "<group>"; };
160+
E15BC7EB2D86D50200F66474 /* MockAssetWriterInputPixelBufferAdaptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAssetWriterInputPixelBufferAdaptor.swift; sourceTree = "<group>"; };
161+
E15BC7ED2D86D85500F66474 /* MockCaptureDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCaptureDevice.swift; sourceTree = "<group>"; };
158162
E16602942D8471C0003CFE12 /* FLTCamZoomTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLTCamZoomTests.swift; sourceTree = "<group>"; };
159163
E1A5F4E22D80259C0005BA64 /* FLTCamSetFlashModeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLTCamSetFlashModeTests.swift; sourceTree = "<group>"; };
164+
E1ABED702D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockCaptureDeviceInputFactory.swift; sourceTree = "<group>"; };
165+
E1ABED712D943DC700AED9CC /* MockCaptureInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockCaptureInput.swift; sourceTree = "<group>"; };
160166
E1FFEAAC2D6C8DD700B14107 /* MockFLTCam.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockFLTCam.swift; sourceTree = "<group>"; };
161167
E1FFEAAE2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPluginCreateCameraTests.swift; sourceTree = "<group>"; };
162168
E1FFEAB02D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPluginInitializeCameraTests.swift; sourceTree = "<group>"; };
@@ -235,8 +241,9 @@
235241
7F29EB3F2D281C6D00740257 /* Mocks */ = {
236242
isa = PBXGroup;
237243
children = (
238-
7FD582282D57C02B003B1200 /* MockAssetWriter.h */,
239-
7FD582262D57C020003B1200 /* MockAssetWriter.m */,
244+
E15BC7E72D86D29F00F66474 /* MockAssetWriter.swift */,
245+
E15BC7E92D86D41F00F66474 /* MockAssetWriterInput.swift */,
246+
E15BC7EB2D86D50200F66474 /* MockAssetWriterInputPixelBufferAdaptor.swift */,
240247
7F8FD22D2D4D0B73001AF2C1 /* MockFlutterBinaryMessenger.h */,
241248
7F8FD22E2D4D0B88001AF2C1 /* MockFlutterBinaryMessenger.m */,
242249
7F8FD22A2D4D07A6001AF2C1 /* MockFlutterTextureRegistry.h */,
@@ -245,8 +252,9 @@
245252
7F8FD2282D4BFABF001AF2C1 /* MockGlobalEventApi.m */,
246253
7FD83D292D5BA49100F4DB7C /* MockCaptureConnection.h */,
247254
7FD83D2A2D5BA65B00F4DB7C /* MockCaptureConnection.m */,
248-
7FCEDD312D43C2B900EA1CA8 /* MockCaptureDevice.h */,
249-
7FCEDD322D43C2B900EA1CA8 /* MockCaptureDevice.m */,
255+
E15BC7ED2D86D85500F66474 /* MockCaptureDevice.swift */,
256+
E1ABED702D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift */,
257+
E1ABED712D943DC700AED9CC /* MockCaptureInput.swift */,
250258
7FD582362D57D989003B1200 /* MockCaptureDeviceFormat.h */,
251259
7FD582342D57D97C003B1200 /* MockCaptureDeviceFormat.m */,
252260
7FD582212D579ED9003B1200 /* MockCapturePhotoOutput.h */,
@@ -554,8 +562,11 @@
554562
972CA92D2D5A28C4004B846F /* QueueUtilsTests.swift in Sources */,
555563
E1FFEAB12D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift in Sources */,
556564
979B3DFB2D5B6BC7009BDE1A /* ExceptionCatcher.m in Sources */,
565+
E1ABED6E2D94392900AED9CC /* MockAssetWriterInputPixelBufferAdaptor.swift in Sources */,
566+
E1ABED6C2D94392500AED9CC /* MockAssetWriter.swift in Sources */,
557567
E1A5F4E32D80259C0005BA64 /* FLTCamSetFlashModeTests.swift in Sources */,
558568
7FD83D2B2D5BA65B00F4DB7C /* MockCaptureConnection.m in Sources */,
569+
E1ABED6D2D94392700AED9CC /* MockAssetWriterInput.swift in Sources */,
559570
977A25242D5A511600931E34 /* CameraPermissionTests.swift in Sources */,
560571
970ADABE2D6740A900EFDCD9 /* MockWritableData.swift in Sources */,
561572
7F8FD2292D4BFABF001AF2C1 /* MockGlobalEventApi.m in Sources */,
@@ -573,22 +584,23 @@
573584
979B3E002D5B9E6C009BDE1A /* CameraMethodChannelTests.swift in Sources */,
574585
E1FFEAAF2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift in Sources */,
575586
97DB234D2D566D0700CEFE66 /* CameraPreviewPauseTests.swift in Sources */,
587+
E1ABED732D943DC700AED9CC /* MockCaptureInput.swift in Sources */,
576588
970ADAC02D6764CC00EFDCD9 /* MockEventChannel.swift in Sources */,
589+
E1ABED6F2D943B2500AED9CC /* MockCaptureDevice.swift in Sources */,
590+
E1ABED722D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift in Sources */,
577591
977A25202D5A439300931E34 /* AvailableCamerasTests.swift in Sources */,
578592
E142681F2D8566230046CBBC /* CameraTestUtils.swift in Sources */,
579593
E1FFEAAD2D6C8DD700B14107 /* MockFLTCam.swift in Sources */,
580594
7F29EB292D26A59000740257 /* MockCameraDeviceDiscoverer.m in Sources */,
581595
E16602952D8471C0003CFE12 /* FLTCamZoomTests.swift in Sources */,
582596
97BD4A102D5CE13500F857D5 /* CameraSessionPresetsTests.swift in Sources */,
583-
7FD582272D57C020003B1200 /* MockAssetWriter.m in Sources */,
584597
979B3E022D5BA48F009BDE1A /* CameraOrientationTests.swift in Sources */,
585598
E12C4FF62D68C69000515E70 /* CameraPluginDelegatingMethodTests.swift in Sources */,
586599
977A25222D5A49EC00931E34 /* FLTCamFocusTests.swift in Sources */,
587600
978D90B42D5F630300CD817E /* StreamingTests.swift in Sources */,
588601
7FCEDD352D43C2B900EA1CA8 /* MockDeviceOrientationProvider.m in Sources */,
589602
E11D6A8F2D81B81D0031E6C5 /* MockCaptureVideoDataOutput.swift in Sources */,
590603
977CAC9F2D5E5180001E5DC3 /* ThreadSafeEventChannelTests.swift in Sources */,
591-
7FCEDD362D43C2B900EA1CA8 /* MockCaptureDevice.m in Sources */,
592604
7F8FD22C2D4D07DD001AF2C1 /* MockFlutterTextureRegistry.m in Sources */,
593605
97C0FFAE2D5E023200A36284 /* SavePhotoDelegateTests.swift in Sources */,
594606
);

packages/camera/camera_avfoundation/example/ios/RunnerTests/CameraSessionPresetsTests.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ final class CameraSessionPresetsTests: XCTestCase {
2525
let captureDeviceMock = MockCaptureDevice()
2626
captureDeviceMock.formats = [captureFormatMock]
2727
captureDeviceMock.activeFormat = captureFormatMock
28-
captureDeviceMock.lockForConfigurationStub = { error in
28+
captureDeviceMock.lockForConfigurationStub = {
2929
lockForConfigurationExpectation.fulfill()
30-
return true
3130
}
3231

3332
let configuration = CameraTestUtils.createTestCameraConfiguration()

packages/camera/camera_avfoundation/example/ios/RunnerTests/CameraTestUtils.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ enum CameraTestUtils {
4040
captureDeviceFormatMock2.videoSupportedFrameRateRanges = [frameRateRangeMock2]
4141

4242
let captureDeviceMock = MockCaptureDevice()
43-
captureDeviceMock.lockForConfigurationStub = { _ in true }
4443
captureDeviceMock.formats = [captureDeviceFormatMock1, captureDeviceFormatMock2]
4544

4645
var currentFormat: FLTCaptureDeviceFormat = captureDeviceFormatMock1

packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamExposureTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ final class FLTCamExposureTests: XCTestCase {
6464
// UI is currently in landscape left orientation.
6565
mockDeviceOrientationProvider.orientation = .landscapeLeft
6666
// Exposure point of interest is supported.
67-
mockDevice.exposurePointOfInterestSupported = true
67+
mockDevice.isExposurePointOfInterestSupported = true
6868

6969
// Verify the focus point of interest has been set.
7070
var setPoint = CGPoint.zero
@@ -89,7 +89,7 @@ final class FLTCamExposureTests: XCTestCase {
8989
// UI is currently in landscape left orientation.
9090
mockDeviceOrientationProvider.orientation = .landscapeLeft
9191
// Exposure point of interest is not supported.
92-
mockDevice.exposurePointOfInterestSupported = false
92+
mockDevice.isExposurePointOfInterestSupported = false
9393

9494
let expectation = expectation(description: "Completion with error")
9595

packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamFocusTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ final class FLTCamSetFocusModeTests: XCTestCase {
124124
// UI is currently in landscape left orientation.
125125
mockDeviceOrientationProvider.orientation = .landscapeLeft
126126
// Focus point of interest is supported.
127-
mockDevice.focusPointOfInterestSupported = true
127+
mockDevice.isFocusPointOfInterestSupported = true
128128

129129
var setFocusPointOfInterestCalled = false
130130
mockDevice.setFocusPointOfInterestStub = { point in
@@ -145,7 +145,7 @@ final class FLTCamSetFocusModeTests: XCTestCase {
145145
// UI is currently in landscape left orientation.
146146
mockDeviceOrientationProvider.orientation = .landscapeLeft
147147
// Focus point of interest is not supported.
148-
mockDevice.focusPointOfInterestSupported = false
148+
mockDevice.isFocusPointOfInterestSupported = false
149149

150150
let expectation = self.expectation(description: "Completion with error")
151151

packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamZoomTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ final class FLTCamZoomTests: XCTestCase {
2828

2929
var setVideoZoomFactorCalled = false
3030
mockDevice.setVideoZoomFactorStub = { zoom in
31-
XCTAssertEqual(zoom, Float(targetZoom))
31+
XCTAssertEqual(zoom, targetZoom)
3232
setVideoZoomFactorCalled = true
3333
}
3434

@@ -85,7 +85,7 @@ final class FLTCamZoomTests: XCTestCase {
8585

8686
let targetZoom = CGFloat(1.0)
8787

88-
mockDevice.maxAvailableVideoZoomFactor = Float(targetZoom)
88+
mockDevice.maxAvailableVideoZoomFactor = CGFloat(targetZoom)
8989

9090
XCTAssertEqual(camera.maximumAvailableZoomFactor, targetZoom)
9191
}
@@ -95,7 +95,7 @@ final class FLTCamZoomTests: XCTestCase {
9595

9696
let targetZoom = CGFloat(1.0)
9797

98-
mockDevice.minAvailableVideoZoomFactor = Float(targetZoom)
98+
mockDevice.minAvailableVideoZoomFactor = CGFloat(targetZoom)
9999

100100
XCTAssertEqual(camera.minimumAvailableZoomFactor, targetZoom)
101101
}

packages/camera/camera_avfoundation/example/ios/RunnerTests/Mocks/MockAssetWriter.h

Lines changed: 0 additions & 44 deletions
This file was deleted.

packages/camera/camera_avfoundation/example/ios/RunnerTests/Mocks/MockAssetWriter.m

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)