@@ -15,6 +15,7 @@ final class AvailableCamerasTest: XCTestCase {
15
15
messenger: MockFlutterBinaryMessenger ( ) ,
16
16
globalAPI: MockGlobalEventApi ( ) ,
17
17
deviceDiscoverer: deviceDiscoverer,
18
+ permissionManager: MockFLTCameraPermissionManager ( ) ,
18
19
deviceFactory: { _ in MockCaptureDevice ( ) } ,
19
20
captureSessionFactory: { MockCaptureSession ( ) } ,
20
21
captureDeviceInputFactory: MockCaptureDeviceInputFactory ( )
@@ -26,35 +27,35 @@ final class AvailableCamerasTest: XCTestCase {
26
27
let cameraPlugin = createCameraPlugin ( with: mockDeviceDiscoverer)
27
28
let expectation = self . expectation ( description: " Result finished " )
28
29
29
- // iPhone 13 Cameras:
30
- let wideAngleCamera = MockCaptureDevice ( )
31
- wideAngleCamera. uniqueID = " 0 "
32
- wideAngleCamera. position = . back
33
-
34
- let frontFacingCamera = MockCaptureDevice ( )
35
- frontFacingCamera. uniqueID = " 1 "
36
- frontFacingCamera. position = . front
37
-
38
- let ultraWideCamera = MockCaptureDevice ( )
39
- ultraWideCamera. uniqueID = " 2 "
40
- ultraWideCamera. position = . back
41
-
42
- let telephotoCamera = MockCaptureDevice ( )
43
- telephotoCamera. uniqueID = " 3 "
44
- telephotoCamera. position = . back
45
-
46
- var requiredTypes : [ AVCaptureDevice . DeviceType ] = [
47
- . builtInWideAngleCamera, . builtInTelephotoCamera,
48
- ]
49
- if #available( iOS 13 . 0 , * ) {
50
- requiredTypes. append ( . builtInUltraWideCamera)
51
- }
52
- var cameras : [ MockCaptureDevice ] = [ wideAngleCamera, frontFacingCamera, telephotoCamera]
53
- if #available( iOS 13 . 0 , * ) {
54
- cameras. append ( ultraWideCamera)
55
- }
56
-
57
30
mockDeviceDiscoverer. discoverySessionStub = { deviceTypes, mediaType, position in
31
+ // iPhone 13 Cameras:
32
+ let wideAngleCamera = MockCaptureDevice ( )
33
+ wideAngleCamera. uniqueID = " 0 "
34
+ wideAngleCamera. position = . back
35
+
36
+ let frontFacingCamera = MockCaptureDevice ( )
37
+ frontFacingCamera. uniqueID = " 1 "
38
+ frontFacingCamera. position = . front
39
+
40
+ let ultraWideCamera = MockCaptureDevice ( )
41
+ ultraWideCamera. uniqueID = " 2 "
42
+ ultraWideCamera. position = . back
43
+
44
+ let telephotoCamera = MockCaptureDevice ( )
45
+ telephotoCamera. uniqueID = " 3 "
46
+ telephotoCamera. position = . back
47
+
48
+ var requiredTypes : [ AVCaptureDevice . DeviceType ] = [
49
+ . builtInWideAngleCamera, . builtInTelephotoCamera,
50
+ ]
51
+ if #available( iOS 13 . 0 , * ) {
52
+ requiredTypes. append ( . builtInUltraWideCamera)
53
+ }
54
+ var cameras = [ wideAngleCamera, frontFacingCamera, telephotoCamera]
55
+ if #available( iOS 13 . 0 , * ) {
56
+ cameras. append ( ultraWideCamera)
57
+ }
58
+
58
59
XCTAssertEqual ( deviceTypes, requiredTypes)
59
60
XCTAssertEqual ( mediaType, . video)
60
61
XCTAssertEqual ( position, . unspecified)
@@ -77,29 +78,65 @@ final class AvailableCamerasTest: XCTestCase {
77
78
}
78
79
}
79
80
80
- func testAvailableCamerasShouldReturnOneCameraOnSingleCameraIPhone ( ) {
81
+ func testAvailableCamerasShouldReturnTwoCamerasOnDualCameraIPhone ( ) {
81
82
let mockDeviceDiscoverer = MockCameraDeviceDiscoverer ( )
82
83
let cameraPlugin = createCameraPlugin ( with: mockDeviceDiscoverer)
83
84
let expectation = self . expectation ( description: " Result finished " )
84
85
85
- // iPhone 8 Cameras:
86
- let wideAngleCamera = MockCaptureDevice ( )
87
- wideAngleCamera. uniqueID = " 0 "
88
- wideAngleCamera. position = . back
86
+ mockDeviceDiscoverer. discoverySessionStub = { deviceTypes, mediaType, position in
87
+ // iPhone 8 Cameras:
88
+ let wideAngleCamera = MockCaptureDevice ( )
89
+ wideAngleCamera. uniqueID = " 0 "
90
+ wideAngleCamera. position = . back
91
+
92
+ let frontFacingCamera = MockCaptureDevice ( )
93
+ frontFacingCamera. uniqueID = " 1 "
94
+ frontFacingCamera. position = . front
95
+
96
+ var requiredTypes : [ AVCaptureDevice . DeviceType ] = [
97
+ . builtInWideAngleCamera, . builtInTelephotoCamera,
98
+ ]
99
+ if #available( iOS 13 . 0 , * ) {
100
+ requiredTypes. append ( . builtInUltraWideCamera)
101
+ }
102
+ let cameras = [ wideAngleCamera, frontFacingCamera]
89
103
90
- let frontFacingCamera = MockCaptureDevice ( )
91
- frontFacingCamera. uniqueID = " 1 "
92
- frontFacingCamera. position = . front
104
+ XCTAssertEqual ( deviceTypes, requiredTypes)
105
+ XCTAssertEqual ( mediaType, . video)
106
+ XCTAssertEqual ( position, . unspecified)
107
+ return cameras
108
+ }
93
109
94
- var requiredTypes : [ AVCaptureDevice . DeviceType ] = [
95
- . builtInWideAngleCamera , . builtInTelephotoCamera ,
96
- ]
97
- if #available ( iOS 13 . 0 , * ) {
98
- requiredTypes . append ( . builtInUltraWideCamera )
110
+ var resultValue : [ FCPPlatformCameraDescription ] ?
111
+ cameraPlugin . availableCameras { result , error in
112
+ XCTAssertNil ( error )
113
+ resultValue = result
114
+ expectation . fulfill ( )
99
115
}
100
- let cameras : [ MockCaptureDevice ] = [ wideAngleCamera, frontFacingCamera]
116
+ waitForExpectations ( timeout: 30 , handler: nil )
117
+
118
+ // Verify the result.
119
+ XCTAssertEqual ( resultValue? . count, 2 )
120
+ }
121
+
122
+ func testAvailableCamerasShouldReturnExternalLensDirectionForUnspecifiedCameraPosition( ) {
123
+ let mockDeviceDiscoverer = MockCameraDeviceDiscoverer ( )
124
+ let cameraPlugin = createCameraPlugin ( with: mockDeviceDiscoverer)
125
+ let expectation = self . expectation ( description: " Result finished " )
101
126
102
127
mockDeviceDiscoverer. discoverySessionStub = { deviceTypes, mediaType, position in
128
+ let unspecifiedCamera = MockCaptureDevice ( )
129
+ unspecifiedCamera. uniqueID = " 0 "
130
+ unspecifiedCamera. position = . unspecified
131
+
132
+ var requiredTypes : [ AVCaptureDevice . DeviceType ] = [
133
+ . builtInWideAngleCamera, . builtInTelephotoCamera,
134
+ ]
135
+ if #available( iOS 13 . 0 , * ) {
136
+ requiredTypes. append ( . builtInUltraWideCamera)
137
+ }
138
+ let cameras = [ unspecifiedCamera]
139
+
103
140
XCTAssertEqual ( deviceTypes, requiredTypes)
104
141
XCTAssertEqual ( mediaType, . video)
105
142
XCTAssertEqual ( position, . unspecified)
@@ -114,7 +151,6 @@ final class AvailableCamerasTest: XCTestCase {
114
151
}
115
152
waitForExpectations ( timeout: 30 , handler: nil )
116
153
117
- // Verify the result.
118
- XCTAssertEqual ( resultValue? . count, 2 )
154
+ XCTAssertEqual ( resultValue? . first? . lensDirection, . external)
119
155
}
120
156
}
0 commit comments