1414 * limitations under the License.
1515 */
1616
17+ #include < com_android_input_flags.h>
1718#include < gtest/gtest.h>
1819#include < input/DisplayTopologyGraph.h>
1920
2021#include < string>
2122#include < string_view>
2223#include < tuple>
2324
25+ #include " ScopedFlagOverride.h"
26+
2427namespace android {
2528
2629namespace {
@@ -31,87 +34,104 @@ constexpr int DENSITY_MEDIUM = 160;
3134
3235} // namespace
3336
37+ using DisplayTopologyAdjacentDisplayMap =
38+ std::unordered_map<ui::LogicalDisplayId, std::vector<DisplayTopologyAdjacentDisplay>>;
39+ using DisplayTopologyDisplaysDensityMapVector = std::unordered_map<ui::LogicalDisplayId, int >;
3440using DisplayTopologyGraphTestFixtureParam =
35- std::tuple<std::string_view /* name*/ , DisplayTopologyGraph, bool /* isValid*/ >;
41+ std::tuple<std::string_view /* name*/ , ui::LogicalDisplayId /* primaryDisplayId*/ ,
42+ DisplayTopologyAdjacentDisplayMap, DisplayTopologyDisplaysDensityMapVector,
43+ bool /* isValid*/ >;
3644
3745class DisplayTopologyGraphTestFixture
3846 : public testing::Test,
3947 public testing::WithParamInterface<DisplayTopologyGraphTestFixtureParam> {};
4048
4149TEST_P (DisplayTopologyGraphTestFixture, DisplayTopologyGraphTest) {
42- const auto & [_, displayTopology, isValid] = GetParam ();
43- EXPECT_EQ (isValid, displayTopology.isValid ());
50+ SCOPED_FLAG_OVERRIDE (enable_display_topology_validation, true );
51+ auto [_, primaryDisplayId, graph, displaysDensity, isValid] = GetParam ();
52+ auto result = DisplayTopologyGraph::create (primaryDisplayId, std::move (graph),
53+ std::move (displaysDensity));
54+ EXPECT_EQ (isValid, result.ok ());
4455}
4556
4657INSTANTIATE_TEST_SUITE_P (
4758 DisplayTopologyGraphTest, DisplayTopologyGraphTestFixture,
4859 testing::Values (
49- std::make_tuple (
50- " InvalidPrimaryDisplay" ,
51- DisplayTopologyGraph{.primaryDisplayId = ui::LogicalDisplayId::INVALID,
52- .graph = {},
53- .displaysDensity = {}},
54- false ),
60+ std::make_tuple (" InvalidPrimaryDisplay" ,
61+ /* primaryDisplayId=*/ ui::LogicalDisplayId::INVALID,
62+ /* graph=*/ DisplayTopologyAdjacentDisplayMap{},
63+ /* displaysDensity=*/ DisplayTopologyDisplaysDensityMapVector{},
64+ false ),
5565 std::make_tuple(" PrimaryDisplayNotInGraph" ,
56- DisplayTopologyGraph{. primaryDisplayId = DISPLAY_ID_1,
57- . graph = {},
58- . displaysDensity = {} },
66+ /* primaryDisplayId= */ DISPLAY_ID_1,
67+ /* graph= */ DisplayTopologyAdjacentDisplayMap {},
68+ /* displaysDensity= */ DisplayTopologyDisplaysDensityMapVector{ },
5969 false ),
6070 std::make_tuple(" DisplayDensityMissing" ,
61- DisplayTopologyGraph{. primaryDisplayId = DISPLAY_ID_1,
62- . graph = {{DISPLAY_ID_1, {}}},
63- . displaysDensity = {} },
71+ /* primaryDisplayId= */ DISPLAY_ID_1,
72+ /* graph= */ DisplayTopologyAdjacentDisplayMap {{DISPLAY_ID_1, {}}},
73+ /* displaysDensity= */ DisplayTopologyDisplaysDensityMapVector{ },
6474 false ),
6575 std::make_tuple(" ValidSingleDisplayTopology" ,
66- DisplayTopologyGraph{.primaryDisplayId = DISPLAY_ID_1,
67- .graph = {{DISPLAY_ID_1, {}}},
68- .displaysDensity = {{DISPLAY_ID_1,
69- DENSITY_MEDIUM}}},
76+ /* primaryDisplayId=*/ DISPLAY_ID_1,
77+ /* graph=*/ DisplayTopologyAdjacentDisplayMap{{DISPLAY_ID_1, {}}},
78+ /* displaysDensity=*/
79+ DisplayTopologyDisplaysDensityMapVector{
80+ {DISPLAY_ID_1, DENSITY_MEDIUM}},
7081 true ),
7182 std::make_tuple(
7283 " MissingReverseEdge" ,
73- DisplayTopologyGraph{.primaryDisplayId = DISPLAY_ID_1,
74- .graph = {{DISPLAY_ID_1,
75- {{DISPLAY_ID_2,
76- DisplayTopologyPosition::TOP, 0 }}}},
77- .displaysDensity = {{DISPLAY_ID_1, DENSITY_MEDIUM},
78- {DISPLAY_ID_2, DENSITY_MEDIUM}}},
84+ /* primaryDisplayId=*/ DISPLAY_ID_1,
85+ /* graph=*/
86+ DisplayTopologyAdjacentDisplayMap{
87+ {DISPLAY_ID_1, {{DISPLAY_ID_2, DisplayTopologyPosition::TOP, 0 }}}},
88+ /* displaysDensity=*/
89+ DisplayTopologyDisplaysDensityMapVector{{DISPLAY_ID_1, DENSITY_MEDIUM},
90+ {DISPLAY_ID_2, DENSITY_MEDIUM}},
7991 false ),
8092 std::make_tuple(
8193 " IncorrectReverseEdgeDirection" ,
82- DisplayTopologyGraph{.primaryDisplayId = DISPLAY_ID_1,
83- .graph = {{DISPLAY_ID_1,
84- {{DISPLAY_ID_2,
85- DisplayTopologyPosition::TOP, 0 }}},
86- {DISPLAY_ID_2,
87- {{DISPLAY_ID_1,
88- DisplayTopologyPosition::TOP, 0 }}}},
89- .displaysDensity = {{DISPLAY_ID_1, DENSITY_MEDIUM},
90- {DISPLAY_ID_2, DENSITY_MEDIUM}}},
94+ /* primaryDisplayId=*/ DISPLAY_ID_1,
95+ /* graph=*/
96+ DisplayTopologyAdjacentDisplayMap{{DISPLAY_ID_1,
97+ {{DISPLAY_ID_2,
98+ DisplayTopologyPosition::TOP, 0 }}},
99+ {DISPLAY_ID_2,
100+ {{DISPLAY_ID_1,
101+ DisplayTopologyPosition::TOP, 0 }}}},
102+ /* displaysDensity=*/
103+ DisplayTopologyDisplaysDensityMapVector{{DISPLAY_ID_1, DENSITY_MEDIUM},
104+ {DISPLAY_ID_2, DENSITY_MEDIUM}},
91105 false ),
92106 std::make_tuple(
93107 " IncorrectReverseEdgeOffset" ,
94- DisplayTopologyGraph{.primaryDisplayId = DISPLAY_ID_1,
95- .graph = {{DISPLAY_ID_1,
96- {{DISPLAY_ID_2,
97- DisplayTopologyPosition::TOP, 10 }}},
98- {DISPLAY_ID_2,
99- {{DISPLAY_ID_1,
100- DisplayTopologyPosition::BOTTOM, 20 }}}},
101- .displaysDensity = {{DISPLAY_ID_1, DENSITY_MEDIUM},
102- {DISPLAY_ID_2, DENSITY_MEDIUM}}},
108+ /* primaryDisplayId=*/ DISPLAY_ID_1,
109+ /* graph=*/
110+ DisplayTopologyAdjacentDisplayMap{{DISPLAY_ID_1,
111+ {{DISPLAY_ID_2,
112+ DisplayTopologyPosition::TOP, 10 }}},
113+ {DISPLAY_ID_2,
114+ {{DISPLAY_ID_1,
115+ DisplayTopologyPosition::BOTTOM,
116+ 20 }}}},
117+ /* displaysDensity=*/
118+ DisplayTopologyDisplaysDensityMapVector{{DISPLAY_ID_1, DENSITY_MEDIUM},
119+ {DISPLAY_ID_2, DENSITY_MEDIUM}},
103120 false ),
104121 std::make_tuple(
105122 " ValidMultiDisplayTopology" ,
106- DisplayTopologyGraph{.primaryDisplayId = DISPLAY_ID_1,
107- .graph = {{DISPLAY_ID_1,
108- {{DISPLAY_ID_2,
109- DisplayTopologyPosition::TOP, 10 }}},
110- {DISPLAY_ID_2,
111- {{DISPLAY_ID_1,
112- DisplayTopologyPosition::BOTTOM, -10 }}}},
113- .displaysDensity = {{DISPLAY_ID_1, DENSITY_MEDIUM},
114- {DISPLAY_ID_2, DENSITY_MEDIUM}}},
123+ /* primaryDisplayId=*/ DISPLAY_ID_1,
124+ /* graph=*/
125+ DisplayTopologyAdjacentDisplayMap{{DISPLAY_ID_1,
126+ {{DISPLAY_ID_2,
127+ DisplayTopologyPosition::TOP, 10 }}},
128+ {DISPLAY_ID_2,
129+ {{DISPLAY_ID_1,
130+ DisplayTopologyPosition::BOTTOM,
131+ -10 }}}},
132+ /* displaysDensity=*/
133+ DisplayTopologyDisplaysDensityMapVector{{DISPLAY_ID_1, DENSITY_MEDIUM},
134+ {DISPLAY_ID_2, DENSITY_MEDIUM}},
115135 true )),
116136 [](const testing::TestParamInfo<DisplayTopologyGraphTestFixtureParam>& p) {
117137 return std::string{std::get<0 >(p.param )};
0 commit comments