5#import <OCMock/OCMock.h>
6#import <XCTest/XCTest.h>
30 asBase64Encoded:(
BOOL)base64Encode {
35 _callbackCalled = YES;
45- (void)testFlutterViewEnableSemanticsWhenIsAccessibilityElementIsCalled {
49 XCTAssertFalse(
view.isAccessibilityElement);
53- (void)testFlutterViewBackgroundColorIsNil {
56 XCTAssertNil(
view.backgroundColor);
59- (void)testLayerScalesMatchScreenAfterLayoutSubviews {
62 view.layer.contentsScale = CGFloat(-99.0);
63 view.layer.rasterizationScale = CGFloat(-99.0);
64 UIScreen* screen = [view
screen];
65 XCTAssertNotEqual(
view.layer.contentsScale, screen.scale);
66 XCTAssertNotEqual(
view.layer.rasterizationScale, screen.scale);
67 [view layoutSubviews];
68 XCTAssertEqual(
view.layer.contentsScale, screen.scale);
69 XCTAssertEqual(
view.layer.rasterizationScale, screen.scale);
72- (void)testViewWillMoveToWindow {
73 NSDictionary* mocks = [
self createWindowMocks];
75 id mockLifecycleDelegate = mocks[@"mockLifecycleDelegate"];
78 id mockEngine = mocks[@"mockEngine"];
79 id mockWindow = mocks[@"mockWindow"];
81 [view willMoveToWindow:mockWindow];
82 OCMVerify(times(1), [mockLifecycleDelegate addFlutterManagedEngine:mockEngine]);
86- (void)testViewWillMoveToSameWindow {
87 NSDictionary* mocks = [
self createWindowMocks];
89 id mockLifecycleDelegate = mocks[@"mockLifecycleDelegate"];
92 id mockEngine = mocks[@"mockEngine"];
93 id mockWindow = mocks[@"mockWindow"];
95 [view willMoveToWindow:mockWindow];
96 [view willMoveToWindow:mockWindow];
98 OCMVerify(times(2), [mockLifecycleDelegate addFlutterManagedEngine:mockEngine]);
102- (void)testMultipleViewsWillMoveToSameWindow {
103 NSDictionary* mocks = [
self createWindowMocks];
105 id mockLifecycleDelegate = mocks[@"mockLifecycleDelegate"];
108 id mockEngine1 = mocks[@"mockEngine"];
109 id mockWindow1 = mocks[@"mockWindow"];
116 [view1 willMoveToWindow:mockWindow1];
117 [view2 willMoveToWindow:mockWindow1];
118 [view1 willMoveToWindow:mockWindow1];
119 OCMVerify(times(2), [mockLifecycleDelegate addFlutterManagedEngine:mockEngine1]);
120 OCMVerify(times(1), [mockLifecycleDelegate addFlutterManagedEngine:mockEngine2]);
124- (void)testMultipleViewsWillMoveToDifferentWindow {
125 NSDictionary* mocks = [
self createWindowMocks];
127 id mockLifecycleDelegate1 = mocks[@"mockLifecycleDelegate"];
130 id mockEngine1 = mocks[@"mockEngine"];
131 id mockWindow1 = mocks[@"mockWindow"];
133 NSDictionary* mocks2 = [
self createWindowMocks];
135 id mockLifecycleDelegate2 = mocks2[@"mockLifecycleDelegate"];
138 id mockEngine2 = mocks2[@"mockEngine"];
139 id mockWindow2 = mocks2[@"mockWindow"];
141 [view1 willMoveToWindow:mockWindow1];
142 [view2 willMoveToWindow:mockWindow2];
143 [view1 willMoveToWindow:mockWindow1];
144 OCMVerify(times(2), [mockLifecycleDelegate1 addFlutterManagedEngine:mockEngine1]);
145 OCMVerify(times(1), [mockLifecycleDelegate2 addFlutterManagedEngine:mockEngine2]);
150- (void)testViewRemovedFromWindowAndAddedToNewScene {
151 NSDictionary* mocks = [
self createWindowMocks];
153 id mockLifecycleDelegate = mocks[@"mockLifecycleDelegate"];
156 id mockEngine = mocks[@"mockEngine"];
157 id mockWindow = mocks[@"mockWindow"];
159 NSDictionary* mocks2 = [
self createWindowMocks];
160 id mockWindow2 = mocks2[@"mockWindow"];
161 id mockLifecycleDelegate2 = mocks2[@"mockLifecycleDelegate"];
165 id mockView = OCMPartialMock(
view);
167 [mockView willMoveToWindow:mockWindow];
168 OCMVerify(times(1), [mockLifecycleDelegate addFlutterManagedEngine:mockEngine]);
171 OCMStub([mockView
window]).andReturn(mockWindow);
172 [mockView willMoveToWindow:nil];
175 OCMStub([mockView
window]).andReturn(nil);
176 [mockView willMoveToWindow:mockWindow2];
177 OCMVerify(times(1), [mockLifecycleDelegate removeFlutterManagedEngine:mockEngine]);
179 OCMVerify(times(1), [mockLifecycleDelegate2 addFlutterManagedEngine:mockEngine]);
183- (NSDictionary*)createWindowMocks {
188 id mockWindow = OCMClassMock([UIWindow
class]);
189 id mockWindowScene = OCMClassMock([UIWindowScene
class]);
192 id mockSceneDelegate = OCMPartialMock(sceneDelegate);
196 id mockLifecycleDelegate = OCMPartialMock(lifecycleDelegate);
198 OCMStub([mockWindow windowScene]).andReturn(mockWindowScene);
199 OCMStub([mockWindowScene delegate]).andReturn(mockSceneDelegate);
200 OCMStub([mockSceneDelegate sceneLifeCycleDelegate]).andReturn(mockLifecycleDelegate);
204 @"mockLifecycleDelegate" : mockLifecycleDelegate,
205 @"lifecycleDelegate" : lifecycleDelegate,
206 @"mockEngine" : mockEngine,
207 @"mockWindow" : mockWindow,
ScreenshotType
The type of the screenshot to obtain of the previously rendered layer tree.
NSPointerArray * flutterManagedEngines
FlutterPlatformViewsController * platformViewsController
void flutterViewAccessibilityDidCall()
A POD type used to return the screenshot data along with the size of the frame.