123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- // Copyright 2017 The Chromium 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 "ui/display/unified_desktop_utils.h"
- #include <memory>
- #include "testing/gtest/include/gtest/gtest.h"
- #include "ui/display/display_layout_builder.h"
- #include "ui/display/types/display_constants.h"
- namespace display {
- TEST(UnifiedDesktopLayoutTests, ValidateMatrix) {
- UnifiedDesktopLayoutMatrix matrix;
- // Empty matrix.
- EXPECT_FALSE(ValidateMatrix(matrix));
- // Matrix with unequal row sizes.
- matrix.resize(2);
- matrix[0].emplace_back(1);
- matrix[0].emplace_back(2);
- matrix[1].emplace_back(3);
- EXPECT_FALSE(ValidateMatrix(matrix));
- // Matrix with a hole.
- matrix[1].emplace_back(display::kInvalidDisplayId);
- EXPECT_FALSE(ValidateMatrix(matrix));
- }
- TEST(UnifiedDesktopLayoutTests, PrimaryIdNotInList) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(BuildUnifiedDesktopMatrix({30, 40, 50}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, ExtraPlacement) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(BuildUnifiedDesktopMatrix({20, 30, 40}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, MissingPlacement) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(BuildUnifiedDesktopMatrix({20, 30, 40, 50}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, PrimaryIsNotRoot) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 60, DisplayPlacement::Position::LEFT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 40, DisplayPlacement::Position::LEFT, 0);
- builder.AddDisplayPlacement(60, 40, DisplayPlacement::Position::BOTTOM, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(
- BuildUnifiedDesktopMatrix({20, 30, 40, 50, 60}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, CycleThroughPrimary) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(20, 40, DisplayPlacement::Position::BOTTOM, 0);
- builder.AddDisplayPlacement(40, 50, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(50, 30, DisplayPlacement::Position::TOP, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(BuildUnifiedDesktopMatrix({20, 30, 40, 50}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, NoPlacementOffsets) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 20);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(BuildUnifiedDesktopMatrix({20, 30, 40, 50}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, TwoChildrenOnOneSide) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(60, 30, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(70, 30, DisplayPlacement::Position::RIGHT, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(
- BuildUnifiedDesktopMatrix({20, 30, 40, 50, 60, 70}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, EmptyHoles) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(60, 30, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(70, 50, DisplayPlacement::Position::LEFT, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_FALSE(
- BuildUnifiedDesktopMatrix({20, 30, 40, 50, 60, 70}, *layout, &matrix));
- EXPECT_TRUE(matrix.empty());
- }
- TEST(UnifiedDesktopLayoutTests, ValidHorizontalMatrix) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(50, 40, DisplayPlacement::Position::RIGHT, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_TRUE(BuildUnifiedDesktopMatrix({20, 30, 40, 50}, *layout, &matrix));
- EXPECT_FALSE(matrix.empty());
- // 1 x 4 matrix.
- EXPECT_EQ(1u, matrix.size());
- EXPECT_EQ(4u, matrix[0].size());
- // [[20, 30, 40, 50]].
- EXPECT_EQ(20, matrix[0][0]);
- EXPECT_EQ(30, matrix[0][1]);
- EXPECT_EQ(40, matrix[0][2]);
- EXPECT_EQ(50, matrix[0][3]);
- }
- TEST(UnifiedDesktopLayoutTests, ValidHorizontalMatrixReverse) {
- DisplayLayoutBuilder builder(60);
- builder.AddDisplayPlacement(50, 60, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 50, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(30, 40, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(20, 30, DisplayPlacement::Position::RIGHT, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_TRUE(
- BuildUnifiedDesktopMatrix({20, 30, 40, 50, 60}, *layout, &matrix));
- EXPECT_FALSE(matrix.empty());
- // 1 x 4 matrix.
- EXPECT_EQ(1u, matrix.size());
- EXPECT_EQ(5u, matrix[0].size());
- // [[60, 50, 40, 30, 20]].
- EXPECT_EQ(60, matrix[0][0]);
- EXPECT_EQ(50, matrix[0][1]);
- EXPECT_EQ(40, matrix[0][2]);
- EXPECT_EQ(30, matrix[0][3]);
- EXPECT_EQ(20, matrix[0][4]);
- }
- TEST(UnifiedDesktopLayoutTests, ValidVerticalMatrix) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::BOTTOM, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::BOTTOM, 0);
- builder.AddDisplayPlacement(50, 40, DisplayPlacement::Position::BOTTOM, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_TRUE(BuildUnifiedDesktopMatrix({20, 30, 40, 50}, *layout, &matrix));
- EXPECT_FALSE(matrix.empty());
- // 4 x 1 matrix.
- EXPECT_EQ(4u, matrix.size());
- EXPECT_EQ(1u, matrix[0].size());
- // [[20],
- // [30],
- // [40],
- // [50]].
- EXPECT_EQ(20, matrix[0][0]);
- EXPECT_EQ(30, matrix[1][0]);
- EXPECT_EQ(40, matrix[2][0]);
- EXPECT_EQ(50, matrix[3][0]);
- }
- TEST(UnifiedDesktopLayoutTests, ValidGridMatrix) {
- DisplayLayoutBuilder builder(20);
- builder.AddDisplayPlacement(30, 20, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(40, 30, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(50, 20, DisplayPlacement::Position::TOP, 0);
- builder.AddDisplayPlacement(60, 30, DisplayPlacement::Position::RIGHT, 0);
- builder.AddDisplayPlacement(70, 40, DisplayPlacement::Position::RIGHT, 0);
- UnifiedDesktopLayoutMatrix matrix;
- std::unique_ptr<DisplayLayout> layout = builder.Build();
- EXPECT_TRUE(
- BuildUnifiedDesktopMatrix({20, 30, 40, 50, 60, 70}, *layout, &matrix));
- EXPECT_FALSE(matrix.empty());
- // 2 x 3 matrix.
- EXPECT_EQ(2u, matrix.size());
- EXPECT_EQ(3u, matrix[0].size());
- // [[50, 40, 70],
- // [20, 30, 60]].
- EXPECT_EQ(50, matrix[0][0]);
- EXPECT_EQ(40, matrix[0][1]);
- EXPECT_EQ(70, matrix[0][2]);
- EXPECT_EQ(20, matrix[1][0]);
- EXPECT_EQ(30, matrix[1][1]);
- EXPECT_EQ(60, matrix[1][2]);
- }
- } // namespace display
|