Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(285)

Side by Side Diff: ui/display/fake_display_snapshot_unittests.cc

Issue 2395873002: Add more options to --screen-config flag. (Closed)
Patch Set: Improve tests and spec description. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698