Flutter Engine
 
Loading...
Searching...
No Matches
FlutterSharedApplicationTest.mm
Go to the documentation of this file.
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 <OCMock/OCMock.h>
6#import <UIKit/UIKit.h>
7#import <XCTest/XCTest.h>
8
12
14
15@interface FlutterSharedApplicationTest : XCTestCase
16@end
17
18@implementation FlutterSharedApplicationTest
19
20- (void)testWhenNSExtensionInBundle {
21 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
22 OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"]).andReturn(@{
23 @"NSExtensionPointIdentifier" : @"com.apple.share-services"
24 });
27 [mockBundle stopMocking];
28}
29
30- (void)testWhenNSExtensionEmptyInBundle {
31 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
32 OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"])
33 .andReturn([[NSDictionary alloc] init]);
36 [mockBundle stopMocking];
37}
38
39- (void)testWhenNSExtensionNotInBundle {
40 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
43 [mockBundle stopMocking];
44}
45
46- (void)testSharedApplicationNotCalledIfIsAvailableFalse {
47 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
48 OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"]).andReturn(@{
49 @"NSExtensionPointIdentifier" : @"com.apple.share-services"
50 });
51 id mockApplication = OCMClassMock([UIApplication class]);
53 OCMReject([mockApplication sharedApplication]);
55 [mockBundle stopMocking];
56}
57
58- (void)testSharedApplicationCalledIfIsAvailableTrue {
59 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
60 id mockApplication = OCMClassMock([UIApplication class]);
63 OCMVerify([mockApplication sharedApplication]);
64 [mockBundle stopMocking];
65}
66
67- (void)testHasSceneDelegate {
68 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
69 id mockApplication = OCMClassMock([UIApplication class]);
70 OCMStub([mockApplication sharedApplication]).andReturn(mockApplication);
73
74 id mockSceneWithDelegate = OCMClassMock([UIScene class]);
75 id mockSceneDelegate = OCMProtocolMock(@protocol(UISceneDelegate));
76 OCMStub([mockSceneWithDelegate delegate]).andReturn(mockSceneDelegate);
77 NSSet<UIScene*>* connectedScenes = [NSSet setWithObjects:mockSceneWithDelegate, nil];
78 OCMStub([mockApplication connectedScenes]).andReturn(connectedScenes);
79
81
82 [mockBundle stopMocking];
83}
84
85- (void)testHasNoSceneDelegate {
86 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
87 id mockApplication = OCMClassMock([UIApplication class]);
88 OCMStub([mockApplication sharedApplication]).andReturn(mockApplication);
91
92 id mockScene = OCMClassMock([UIScene class]);
93 NSSet<UIScene*>* connectedScenes = [NSSet setWithObjects:mockScene, nil];
94 OCMStub([mockApplication connectedScenes]).andReturn(connectedScenes);
95
97 [mockBundle stopMocking];
98}
99
100- (void)testFlutterDeeplinkingEnabledWhenNil {
101 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
102 OCMStub([mockBundle objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]).andReturn(nil);
103
105 [mockBundle stopMocking];
106}
107
108- (void)testFlutterDeeplinkingEnabledWhenYes {
109 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
110 OCMStub([mockBundle objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]).andReturn(@YES);
111
113 [mockBundle stopMocking];
114}
115
116- (void)testFlutterDeeplinkingEnabledWhenNo {
117 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
118 OCMStub([mockBundle objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]).andReturn(@NO);
119
121 [mockBundle stopMocking];
122}
123
124- (void)testFlutterDeeplinkingEnabledWhenBogus {
125 id mockBundle = OCMPartialMock([NSBundle mainBundle]);
126 OCMStub([mockBundle objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]).andReturn(@"hello");
127
129 [mockBundle stopMocking];
130}
131
132@end