Skip to content

Commit 609d643

Browse files
authored
[camera]refactor more types into separate files, and add unit tests (flutter#4704)
1 parent df0ed4c commit 609d643

File tree

10 files changed

+447
-296
lines changed

10 files changed

+447
-296
lines changed

packages/camera/camera/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## NEXT
22

3+
* Minor iOS internal code cleanup related to resolution preset, video format, focus mode, exposure mode and device orientation.
34
* Minor iOS internal code cleanup related to flash mode.
45

56
## 0.9.4+8

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
2323
E01EE4A82799F3A5008C1950 /* QueueHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E01EE4A72799F3A5008C1950 /* QueueHelperTests.m */; };
2424
E032F250279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */; };
25-
E032F2A727A0BF2D009E9028 /* FLTFlashModeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */; };
2625
E0C6E2002770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FD2770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m */; };
2726
E0C6E2012770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FE2770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m */; };
2827
E0C6E2022770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FF2770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m */; };
28+
E0F95E3D27A32AB900699390 /* CameraPropertiesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F95E3C27A32AB900699390 /* CameraPropertiesTests.m */; };
2929
E487C86026D686A10034AC92 /* CameraPreviewPauseTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E487C85F26D686A10034AC92 /* CameraPreviewPauseTests.m */; };
3030
F6EE622F2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m in Sources */ = {isa = PBXBuildFile; fileRef = F6EE622E2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m */; };
3131
/* End PBXBuildFile section */
@@ -82,10 +82,10 @@
8282
A24F9E418BA48BCC7409B117 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
8383
E01EE4A72799F3A5008C1950 /* QueueHelperTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QueueHelperTests.m; sourceTree = "<group>"; };
8484
E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CameraCaptureSessionQueueRaceConditionTests.m; sourceTree = "<group>"; };
85-
E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLTFlashModeTests.m; sourceTree = "<group>"; };
8685
E0C6E1FD2770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeMethodChannelTests.m; sourceTree = "<group>"; };
8786
E0C6E1FE2770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeTextureRegistryTests.m; sourceTree = "<group>"; };
8887
E0C6E1FF2770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeEventChannelTests.m; sourceTree = "<group>"; };
88+
E0F95E3C27A32AB900699390 /* CameraPropertiesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CameraPropertiesTests.m; sourceTree = "<group>"; };
8989
E487C85F26D686A10034AC92 /* CameraPreviewPauseTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CameraPreviewPauseTests.m; sourceTree = "<group>"; };
9090
F63F9EED27143B19002479BF /* MockFLTThreadSafeFlutterResult.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockFLTThreadSafeFlutterResult.h; sourceTree = "<group>"; };
9191
F6EE622E2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MockFLTThreadSafeFlutterResult.m; sourceTree = "<group>"; };
@@ -127,7 +127,7 @@
127127
F6EE622E2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m */,
128128
F63F9EED27143B19002479BF /* MockFLTThreadSafeFlutterResult.h */,
129129
E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */,
130-
E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */,
130+
E0F95E3C27A32AB900699390 /* CameraPropertiesTests.m */,
131131
);
132132
path = RunnerTests;
133133
sourceTree = "<group>";
@@ -391,8 +391,8 @@
391391
buildActionMask = 2147483647;
392392
files = (
393393
03F6F8B226CBB4670024B8D3 /* ThreadSafeFlutterResultTests.m in Sources */,
394-
E032F2A727A0BF2D009E9028 /* FLTFlashModeTests.m in Sources */,
395394
033B94BE269C40A200B4DF97 /* CameraMethodChannelTests.m in Sources */,
395+
E0F95E3D27A32AB900699390 /* CameraPropertiesTests.m in Sources */,
396396
03BB766B2665316900CE5A93 /* CameraFocusTests.m in Sources */,
397397
E487C86026D686A10034AC92 /* CameraPreviewPauseTests.m in Sources */,
398398
F6EE622F2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m in Sources */,
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
@import camera.Test;
6+
@import AVFoundation;
7+
@import XCTest;
8+
9+
@interface CameraPropertiesTests : XCTestCase
10+
11+
@end
12+
13+
@implementation CameraPropertiesTests
14+
15+
#pragma mark - flash mode tests
16+
17+
- (void)testFLTGetFLTFlashModeForString {
18+
XCTAssertEqual(FLTFlashModeOff, FLTGetFLTFlashModeForString(@"off"));
19+
XCTAssertEqual(FLTFlashModeAuto, FLTGetFLTFlashModeForString(@"auto"));
20+
XCTAssertEqual(FLTFlashModeAlways, FLTGetFLTFlashModeForString(@"always"));
21+
XCTAssertEqual(FLTFlashModeTorch, FLTGetFLTFlashModeForString(@"torch"));
22+
XCTAssertThrows(FLTGetFLTFlashModeForString(@"unkwown"));
23+
}
24+
25+
- (void)testFLTGetAVCaptureFlashModeForFLTFlashMode {
26+
XCTAssertEqual(AVCaptureFlashModeOff, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeOff));
27+
XCTAssertEqual(AVCaptureFlashModeAuto, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeAuto));
28+
XCTAssertEqual(AVCaptureFlashModeOn, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeAlways));
29+
XCTAssertEqual(-1, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeTorch));
30+
}
31+
32+
#pragma mark - exposure mode tests
33+
34+
- (void)testFLTGetStringForFLTExposureMode {
35+
XCTAssertEqualObjects(@"auto", FLTGetStringForFLTExposureMode(FLTExposureModeAuto));
36+
XCTAssertEqualObjects(@"locked", FLTGetStringForFLTExposureMode(FLTExposureModeLocked));
37+
XCTAssertThrows(FLTGetStringForFLTExposureMode(-1));
38+
}
39+
40+
- (void)testFLTGetFLTExposureModeForString {
41+
XCTAssertEqual(FLTExposureModeAuto, FLTGetFLTExposureModeForString(@"auto"));
42+
XCTAssertEqual(FLTExposureModeLocked, FLTGetFLTExposureModeForString(@"locked"));
43+
XCTAssertThrows(FLTGetFLTExposureModeForString(@"unknown"));
44+
}
45+
46+
#pragma mark - focus mode tests
47+
48+
- (void)testFLTGetStringForFLTFocusMode {
49+
XCTAssertEqualObjects(@"auto", FLTGetStringForFLTFocusMode(FLTFocusModeAuto));
50+
XCTAssertEqualObjects(@"locked", FLTGetStringForFLTFocusMode(FLTFocusModeLocked));
51+
XCTAssertThrows(FLTGetStringForFLTFocusMode(-1));
52+
}
53+
54+
- (void)testFLTGetFLTFocusModeForString {
55+
XCTAssertEqual(FLTFocusModeAuto, FLTGetFLTFocusModeForString(@"auto"));
56+
XCTAssertEqual(FLTFocusModeLocked, FLTGetFLTFocusModeForString(@"locked"));
57+
XCTAssertThrows(FLTGetFLTFocusModeForString(@"unknown"));
58+
}
59+
60+
#pragma mark - resolution preset tests
61+
62+
- (void)testFLTGetFLTResolutionPresetForString {
63+
XCTAssertEqual(FLTResolutionPresetVeryLow, FLTGetFLTResolutionPresetForString(@"veryLow"));
64+
XCTAssertEqual(FLTResolutionPresetLow, FLTGetFLTResolutionPresetForString(@"low"));
65+
XCTAssertEqual(FLTResolutionPresetMedium, FLTGetFLTResolutionPresetForString(@"medium"));
66+
XCTAssertEqual(FLTResolutionPresetHigh, FLTGetFLTResolutionPresetForString(@"high"));
67+
XCTAssertEqual(FLTResolutionPresetVeryHigh, FLTGetFLTResolutionPresetForString(@"veryHigh"));
68+
XCTAssertEqual(FLTResolutionPresetUltraHigh, FLTGetFLTResolutionPresetForString(@"ultraHigh"));
69+
XCTAssertEqual(FLTResolutionPresetMax, FLTGetFLTResolutionPresetForString(@"max"));
70+
XCTAssertThrows(FLTGetFLTFlashModeForString(@"unknown"));
71+
}
72+
73+
#pragma mark - video format tests
74+
75+
- (void)testFLTGetVideoFormatFromString {
76+
XCTAssertEqual(kCVPixelFormatType_32BGRA, FLTGetVideoFormatFromString(@"bgra8888"));
77+
XCTAssertEqual(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
78+
FLTGetVideoFormatFromString(@"yuv420"));
79+
XCTAssertEqual(kCVPixelFormatType_32BGRA, FLTGetVideoFormatFromString(@"unknown"));
80+
}
81+
82+
#pragma mark - device orientation tests
83+
84+
- (void)testFLTGetUIDeviceOrientationForString {
85+
XCTAssertEqual(UIDeviceOrientationPortraitUpsideDown,
86+
FLTGetUIDeviceOrientationForString(@"portraitDown"));
87+
XCTAssertEqual(UIDeviceOrientationLandscapeRight,
88+
FLTGetUIDeviceOrientationForString(@"landscapeLeft"));
89+
XCTAssertEqual(UIDeviceOrientationLandscapeLeft,
90+
FLTGetUIDeviceOrientationForString(@"landscapeRight"));
91+
XCTAssertEqual(UIDeviceOrientationPortrait, FLTGetUIDeviceOrientationForString(@"portraitUp"));
92+
XCTAssertThrows(FLTGetUIDeviceOrientationForString(@"unknown"));
93+
}
94+
95+
- (void)testFLTGetStringForUIDeviceOrientation {
96+
XCTAssertEqualObjects(@"portraitDown",
97+
FLTGetStringForUIDeviceOrientation(UIDeviceOrientationPortraitUpsideDown));
98+
XCTAssertEqualObjects(@"landscapeLeft",
99+
FLTGetStringForUIDeviceOrientation(UIDeviceOrientationLandscapeRight));
100+
XCTAssertEqualObjects(@"landscapeRight",
101+
FLTGetStringForUIDeviceOrientation(UIDeviceOrientationLandscapeLeft));
102+
XCTAssertEqualObjects(@"portraitUp",
103+
FLTGetStringForUIDeviceOrientation(UIDeviceOrientationPortrait));
104+
XCTAssertEqualObjects(@"portraitUp", FLTGetStringForUIDeviceOrientation(-1));
105+
}
106+
107+
@end

packages/camera/camera/example/ios/RunnerTests/FLTFlashModeTests.m

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

0 commit comments

Comments
 (0)