blob: 27d647dd52ac0b9832663074ace80ac6b7355c0d [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "garnet/lib/ui/gfx/engine/hardware_layer_assignment.h"
#include "garnet/lib/ui/gfx/swapchain/swapchain.h"
#include "lib/gtest/test_loop_fixture.h"
namespace scenic_impl {
namespace gfx {
namespace test {
using HLATest = ::gtest::TestLoopFixture;
// No-op swapchain for unittest.
class FakeSwapchain : public Swapchain {
public:
~FakeSwapchain() override {}
// Fake DrawAndPresentFrame always returns draw as successful.
bool DrawAndPresentFrame(const FrameTimingsPtr& frame,
const HardwareLayerAssignment& hla,
DrawCallback draw_callback) override {
return true;
}
};
TEST_F(HLATest, HasHardwareLayerAssignment) {
FakeSwapchain fake_swapchain;
HardwareLayerAssignment hla{
.items = {{
.hardware_layer_id = 0,
.layers = {nullptr},
}},
.swapchain = &fake_swapchain,
};
EXPECT_TRUE(hla.IsValid());
}
TEST_F(HLATest, HardwareLayerAssignmentMissingSwapchain) {
HardwareLayerAssignment hla{
.items = {{
.hardware_layer_id = 0,
.layers = {nullptr},
}},
.swapchain = nullptr,
};
EXPECT_FALSE(hla.IsValid());
}
TEST_F(HLATest, HardwareLayerAssignmentMissingLayers) {
FakeSwapchain fake_swapchain;
HardwareLayerAssignment hla{
.items = {{
.hardware_layer_id = 0,
}},
.swapchain = &fake_swapchain,
};
EXPECT_FALSE(hla.IsValid());
}
TEST_F(HLATest, HardwareLayerAssignmentMissingItems) {
FakeSwapchain fake_swapchain;
HardwareLayerAssignment hla;
hla.swapchain = &fake_swapchain;
EXPECT_FALSE(hla.IsValid());
}
TEST_F(HLATest, HardwareLayerAssignmentDuplicateLayerIDs) {
FakeSwapchain fake_swapchain;
HardwareLayerAssignment hla{
.items = {{
.hardware_layer_id = 0,
.layers = {nullptr},
},
{
.hardware_layer_id = 0,
.layers = {nullptr},
}},
.swapchain = &fake_swapchain,
};
EXPECT_FALSE(hla.IsValid());
}
} // namespace test
} // namespace gfx
} // namespace scenic_impl