OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/macros.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 #include "ui/display/fake_display_snapshot.h" | |
8 #include "ui/display/types/display_snapshot.h" | |
9 | |
10 namespace display { | |
11 | |
12 using DisplayModeList = ui::DisplaySnapshot::DisplayModeList; | |
13 | |
14 namespace { | |
15 | |
16 std::unique_ptr<ui::DisplaySnapshot> CreateSnapshot(const std::string& str) { | |
17 return FakeDisplaySnapshot::CreateFromSpec(1, str); | |
18 } | |
19 | |
20 } // namespace | |
21 | |
22 TEST(FakeDisplaySnapshotTest, SizeOnly) { | |
23 auto display = CreateSnapshot("1024x768"); | |
24 | |
25 ASSERT_EQ(1u, display->modes().size()); | |
26 EXPECT_EQ(1024, display->native_mode()->size().width()); | |
27 EXPECT_EQ(768, display->native_mode()->size().height()); | |
28 } | |
29 | |
30 TEST(FakeDisplaySnapshotTest, DefaultTypeIsUnknown) { | |
31 auto display = CreateSnapshot("1024x768"); | |
32 | |
33 ASSERT_EQ(1u, display->modes().size()); | |
34 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_UNKNOWN, display->type()); | |
35 } | |
36 | |
37 TEST(FakeDisplaySnapshotTest, FullNativeMode) { | |
38 auto display = CreateSnapshot("1024x768%120"); | |
39 | |
40 ASSERT_EQ(1u, display->modes().size()); | |
41 EXPECT_EQ(1024, display->native_mode()->size().width()); | |
42 EXPECT_EQ(768, display->native_mode()->size().height()); | |
43 EXPECT_EQ(120.0f, display->native_mode()->refresh_rate()); | |
Daniel Erat
2016/10/07 17:17:22
mind adding a ModeToString() function that returns
kylechar
2016/10/11 13:56:49
Hmmm, not sure I'm a fan of comparing strings. How
| |
44 } | |
45 | |
46 TEST(FakeDisplaySnapshotTest, FullNativeModeWithDPI) { | |
47 auto display = CreateSnapshot("1000x1000%120^300"); | |
48 | |
49 ASSERT_EQ(1u, display->modes().size()); | |
50 EXPECT_EQ(1000, display->native_mode()->size().width()); | |
51 EXPECT_EQ(1000, display->native_mode()->size().height()); | |
52 EXPECT_EQ(120.0f, display->native_mode()->refresh_rate()); | |
53 EXPECT_EQ(85, display->physical_size().width()); | |
54 EXPECT_EQ(85, display->physical_size().height()); | |
55 } | |
56 | |
57 TEST(FakeDisplaySnapshotTest, InternalDisplayWithSize) { | |
58 auto display = CreateSnapshot("1600x900/i"); | |
59 | |
60 ASSERT_EQ(1u, display->modes().size()); | |
61 EXPECT_EQ(1600, display->native_mode()->size().width()); | |
62 EXPECT_EQ(900, display->native_mode()->size().height()); | |
63 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type()); | |
64 } | |
65 | |
66 TEST(FakeDisplaySnapshotTest, MultipleOptions) { | |
67 auto display = CreateSnapshot("1600x900/aci"); | |
68 | |
69 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type()); | |
70 EXPECT_TRUE(display->has_color_correction_matrix()); | |
71 EXPECT_TRUE(display->is_aspect_preserving_scaling()); | |
72 } | |
73 | |
74 TEST(FakeDisplaySnapshotTest, AlternateDisplayModes) { | |
75 auto display = CreateSnapshot("1920x1080#1600x900:1280x720/i"); | |
76 const DisplayModeList& modes = display->modes(); | |
77 | |
78 ASSERT_EQ(3u, modes.size()); | |
79 EXPECT_EQ(1920, modes[0]->size().width()); | |
80 EXPECT_EQ(1080, modes[0]->size().height()); | |
81 EXPECT_EQ(1600, modes[1]->size().width()); | |
82 EXPECT_EQ(900, modes[1]->size().height()); | |
83 EXPECT_EQ(1280, modes[2]->size().width()); | |
84 EXPECT_EQ(720, modes[2]->size().height()); | |
85 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type()); | |
86 } | |
87 | |
88 TEST(FakeDisplaySnapshotTest, ComplicatedSpecString) { | |
89 auto display = | |
90 CreateSnapshot("1920x1080%59.99#1600x900%90:1280x720%120^300/i"); | |
91 const DisplayModeList& modes = display->modes(); | |
92 | |
93 ASSERT_EQ(3u, display->modes().size()); | |
94 EXPECT_EQ(1920, modes[0]->size().width()); | |
95 EXPECT_EQ(1080, modes[0]->size().height()); | |
96 EXPECT_EQ(59.99f, modes[0]->refresh_rate()); | |
97 EXPECT_EQ(1600, modes[1]->size().width()); | |
98 EXPECT_EQ(900, modes[1]->size().height()); | |
99 EXPECT_EQ(90.0f, modes[1]->refresh_rate()); | |
100 EXPECT_EQ(1280, modes[2]->size().width()); | |
101 EXPECT_EQ(720, modes[2]->size().height()); | |
102 EXPECT_EQ(120.0f, modes[2]->refresh_rate()); | |
103 EXPECT_EQ(163, display->physical_size().width()); | |
104 EXPECT_EQ(91, display->physical_size().height()); | |
105 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type()); | |
106 } | |
107 | |
108 TEST(FakeDisplaySnapshotTest, BadDisplayMode) { | |
109 // Need width and height. | |
110 EXPECT_EQ(nullptr, CreateSnapshot("1024")); | |
111 // Display height and width should be separated by 'x' not ','. | |
112 EXPECT_EQ(nullptr, CreateSnapshot("1024,768")); | |
113 // Random 'a' before spec starts. | |
114 EXPECT_EQ(nullptr, CreateSnapshot("a1024,768")); | |
115 // Need to provide a refresh rate after '%'. | |
116 EXPECT_EQ(nullptr, CreateSnapshot("1024,768%")); | |
117 EXPECT_EQ(nullptr, CreateSnapshot("1024,768%a")); | |
118 // Refresh rate should come before DPI. | |
119 EXPECT_EQ(nullptr, CreateSnapshot("1000x1000^300%120")); | |
120 } | |
121 | |
122 TEST(FakeDisplaySnapshotTest, BadDPI) { | |
123 // DPI should be an integer value. | |
124 EXPECT_EQ(nullptr, CreateSnapshot("1024x768^a")); | |
125 EXPECT_EQ(nullptr, CreateSnapshot("1024x768^300d")); | |
126 } | |
127 | |
128 TEST(FakeDisplaySnapshotTest, BadOptions) { | |
129 // Need a '/' before options. | |
130 EXPECT_EQ(nullptr, CreateSnapshot("1024x768i")); | |
131 // Character 'z' is not a valid option. | |
132 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/z")); | |
133 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/iz")); | |
134 // DPI should come before options. | |
135 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/i^300")); | |
136 } | |
137 | |
138 TEST(FakeDisplaySnapshotTest, BadOrderOptionsAndModes) { | |
139 // Options should come after alternate display modes. | |
140 auto display = CreateSnapshot("1920x1080/i#1600x900:1280x720"); | |
141 EXPECT_EQ(nullptr, display); | |
142 } | |
143 | |
144 TEST(FakeDisplaySnapshotTest, BadOrderModeSeparator) { | |
145 // Reverse the '#' and ':' delimiters for alternate display modes. | |
146 auto display = CreateSnapshot("1920x1080:1600x900#1280x720"); | |
147 EXPECT_EQ(nullptr, display); | |
148 } | |
149 | |
150 } // namespace display | |
OLD | NEW |