blob: 0f4dc409fbd0d5e772153cd137e2d0364fce7fff [file] [log] [blame]
// 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 <Foundation/Foundation.h>
#import "flutter/shell/platform/darwin/macos/framework/Source/FlutterMetalCompositor.h"
#import "flutter/shell/platform/darwin/macos/framework/Source/FlutterViewControllerTestUtils.h"
#import "flutter/testing/testing.h"
namespace flutter::testing {
TEST(FlutterMetalCompositorTest, TestPresent) {
id mockViewController = CreateMockViewController(nil);
std::unique_ptr<flutter::FlutterMetalCompositor> macos_compositor =
std::make_unique<FlutterMetalCompositor>(mockViewController, nullptr);
bool flag = false;
macos_compositor->SetPresentCallback([f = &flag]() {
*f = true;
return true;
});
ASSERT_TRUE(macos_compositor->Present(nil, 0));
ASSERT_TRUE(flag);
}
TEST(FlutterMetalCompositorTest, TestCreate) {
id mockViewController = CreateMockViewController(nil);
[mockViewController loadView];
std::unique_ptr<flutter::FlutterMetalCompositor> macos_compositor =
std::make_unique<FlutterMetalCompositor>(mockViewController, nullptr);
FlutterBackingStore backing_store;
FlutterBackingStoreConfig config;
config.struct_size = sizeof(FlutterBackingStoreConfig);
config.size.width = 800;
config.size.height = 600;
macos_compositor->CreateBackingStore(&config, &backing_store);
ASSERT_EQ(backing_store.type, kFlutterBackingStoreTypeMetal);
ASSERT_NE(backing_store.metal.texture.texture, nil);
id<MTLTexture> texture = (__bridge id<MTLTexture>)backing_store.metal.texture.texture;
ASSERT_EQ(texture.width, 800ul);
ASSERT_EQ(texture.height, 600ul);
}
TEST(FlutterMetalCompositorTest, TestCompositing) {
id mockViewController = CreateMockViewController(nil);
[mockViewController loadView];
std::unique_ptr<flutter::FlutterMetalCompositor> macos_compositor =
std::make_unique<FlutterMetalCompositor>(mockViewController, nullptr);
FlutterBackingStore backing_store;
FlutterBackingStoreConfig config;
config.struct_size = sizeof(FlutterBackingStoreConfig);
config.size.width = 800;
config.size.height = 600;
macos_compositor->CreateBackingStore(&config, &backing_store);
ASSERT_EQ(backing_store.type, kFlutterBackingStoreTypeMetal);
ASSERT_NE(backing_store.metal.texture.texture, nil);
id<MTLTexture> texture = (__bridge id<MTLTexture>)backing_store.metal.texture.texture;
ASSERT_EQ(texture.width, 800u);
ASSERT_EQ(texture.height, 600u);
}
} // flutter::testing