11#include "gmock/gmock.h"
12#include "gtest/gtest.h"
18using ::impeller::testing::MockCommandBuffer;
19using ::impeller::testing::MockCommandQueue;
20using ::impeller::testing::MockImpellerContext;
22using ::testing::DoAll;
23using ::testing::Return;
25TEST(FlutterGpuCommandBufferTest,
26 InvokesRegisteredCompletionCallbacksOnSubmit) {
27 auto context = std::make_shared<MockImpellerContext>();
28 auto impeller_command_buffer = std::make_shared<MockCommandBuffer>(
context);
29 auto command_queue = std::make_shared<MockCommandQueue>();
32 std::vector<impeller::CommandBuffer::Status> statuses;
36 statuses.push_back(status);
40 statuses.push_back(status);
43 EXPECT_CALL(*
context, GetBackendType)
45 EXPECT_CALL(*
context, GetCommandQueue).WillOnce(Return(command_queue));
46 EXPECT_CALL(*command_queue, Submit(_, _, _))
48 [](
const std::vector<std::shared_ptr<impeller::CommandBuffer>>&
51 bool block_on_schedule) {
52 EXPECT_EQ(buffers.size(), 1u);
53 EXPECT_FALSE(block_on_schedule);
60 statuses.push_back(status);
62 EXPECT_EQ(statuses.size(), 3u);
68TEST(FlutterGpuCommandBufferTest, RejectsCompletionCallbacksAfterSubmit) {
69 auto context = std::make_shared<MockImpellerContext>();
70 auto impeller_command_buffer = std::make_shared<MockCommandBuffer>(
context);
71 auto command_queue = std::make_shared<MockCommandQueue>();
74 EXPECT_CALL(*
context, GetBackendType)
76 EXPECT_CALL(*
context, GetCommandQueue).WillOnce(Return(command_queue));
77 EXPECT_CALL(*command_queue, Submit(_, _, _)).WillOnce(Return(
fml::Status()));
85TEST(FlutterGpuCommandBufferTest,
86 InvokesRegisteredCompletionCallbacksWhenSubmitFails) {
87 auto context = std::make_shared<MockImpellerContext>();
88 auto impeller_command_buffer = std::make_shared<MockCommandBuffer>(
context);
89 auto command_queue = std::make_shared<MockCommandQueue>();
92 std::vector<impeller::CommandBuffer::Status> statuses;
96 statuses.push_back(status);
99 EXPECT_CALL(*
context, GetBackendType)
101 EXPECT_CALL(*
context, GetCommandQueue).WillOnce(Return(command_queue));
102 EXPECT_CALL(*command_queue, Submit(_, _, _))
104 "Command queue submit failed.")));
107 EXPECT_EQ(statuses.size(), 1u);
std::function< void(CommandBuffer::Status)> CompletionCallback
FlutterDesktopBinaryReply callback
TEST(FrameTimingsRecorderTest, RecordVsync)
std::shared_ptr< ContextGLES > context
std::shared_ptr< CommandBuffer > command_buffer