| |
| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterEngineTestUtils.h" |
| #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h" |
| #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h" |
| |
| #include "flutter/testing/testing.h" |
| |
| namespace flutter::testing { |
| |
| FlutterEngineTest::FlutterEngineTest() = default; |
| |
| void FlutterEngineTest::SetUp() { |
| native_resolver_ = std::make_shared<TestDartNativeResolver>(); |
| NSString* fixtures = @(testing::GetFixturesPath()); |
| project_ = [[FlutterDartProject alloc] |
| initWithAssetsPath:fixtures |
| ICUDataPath:[fixtures stringByAppendingString:@"/icudtl.dat"]]; |
| project_.rootIsolateCreateCallback = FlutterEngineTest::IsolateCreateCallback; |
| engine_ = [[FlutterEngine alloc] initWithName:@"test" |
| project:project_ |
| allowHeadlessExecution:true]; |
| } |
| |
| void FlutterEngineTest::TearDown() { |
| [engine_ shutDownEngine]; |
| engine_ = nil; |
| native_resolver_.reset(); |
| } |
| |
| void FlutterEngineTest::IsolateCreateCallback(void* user_data) { |
| native_resolver_->SetNativeResolverForIsolate(); |
| } |
| |
| void FlutterEngineTest::AddNativeCallback(const char* name, Dart_NativeFunction function) { |
| native_resolver_->AddNativeCallback({name}, function); |
| } |
| |
| id CreateMockFlutterEngine(NSString* pasteboardString) { |
| { |
| NSString* fixtures = @(testing::GetFixturesPath()); |
| FlutterDartProject* project = [[FlutterDartProject alloc] |
| initWithAssetsPath:fixtures |
| ICUDataPath:[fixtures stringByAppendingString:@"/icudtl.dat"]]; |
| FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"test" |
| project:project |
| allowHeadlessExecution:true]; |
| |
| // Mock pasteboard so that this test will work in environments without a |
| // real pasteboard. |
| id pasteboardMock = OCMClassMock([NSPasteboard class]); |
| OCMExpect([pasteboardMock stringForType:[OCMArg any]]).andDo(^(NSInvocation* invocation) { |
| NSString* returnValue = pasteboardString.length > 0 ? pasteboardString : nil; |
| [invocation setReturnValue:&returnValue]; |
| }); |
| id engineMock = OCMPartialMock(engine); |
| OCMStub([engineMock pasteboard]).andReturn(pasteboardMock); |
| return engineMock; |
| } |
| } |
| |
| } // namespace flutter::testing |