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

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 / fixes. 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
« no previous file with comments | « ui/display/fake_display_snapshot.cc ('k') | ui/display/types/display_snapshot.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <memory>
6
7 #include "base/macros.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/display/fake_display_snapshot.h"
10 #include "ui/display/types/display_snapshot.h"
11
12 namespace display {
13
14 using DisplayModeList = ui::DisplaySnapshot::DisplayModeList;
15
16 namespace {
17
18 std::unique_ptr<ui::DisplaySnapshot> CreateSnapshot(const std::string& str) {
19 return FakeDisplaySnapshot::CreateFromSpec(1, str);
20 }
21
22 void ExpectDisplayMode(const ui::DisplayMode* mode,
Daniel Erat 2016/10/11 15:50:06 the main reason i don't like helper functions like
kylechar 2016/10/11 20:39:04 Hmm. That's a good point. Although I'm weary about
23 int width,
24 int height,
25 float refresh_rate = 60.0f) {
26 DCHECK(mode);
27 EXPECT_EQ(width, mode->size().width());
28 EXPECT_EQ(height, mode->size().height());
29 EXPECT_EQ(refresh_rate, mode->refresh_rate());
30 }
31
32 } // namespace
33
34 TEST(FakeDisplaySnapshotTest, SizeOnly) {
35 auto display = CreateSnapshot("1024x768");
36
37 ASSERT_EQ(1u, display->modes().size());
38 ExpectDisplayMode(display->native_mode(), 1024, 768);
39 }
40
41 TEST(FakeDisplaySnapshotTest, DefaultTypeIsUnknown) {
42 auto display = CreateSnapshot("1024x768");
43
44 ASSERT_EQ(1u, display->modes().size());
45 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_UNKNOWN, display->type());
46 }
47
48 TEST(FakeDisplaySnapshotTest, FullNativeMode) {
49 auto display = CreateSnapshot("1024x768%120");
50
51 ASSERT_EQ(1u, display->modes().size());
52 ExpectDisplayMode(display->native_mode(), 1024, 768, 120.0f);
53 }
54
55 TEST(FakeDisplaySnapshotTest, FullNativeModeWithDPI) {
56 auto display = CreateSnapshot("1000x1000%120^300");
57
58 ASSERT_EQ(1u, display->modes().size());
59 ExpectDisplayMode(display->native_mode(), 1000, 1000, 120.0f);
60 EXPECT_EQ(85, display->physical_size().width());
61 EXPECT_EQ(85, display->physical_size().height());
62 }
63
64 TEST(FakeDisplaySnapshotTest, InternalDisplayWithSize) {
65 auto display = CreateSnapshot("1600x900/i");
66
67 ASSERT_EQ(1u, display->modes().size());
68 ExpectDisplayMode(display->native_mode(), 1600, 900);
69 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type());
70 }
71
72 TEST(FakeDisplaySnapshotTest, MultipleOptions) {
73 auto display = CreateSnapshot("1600x900/aci");
74
75 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type());
76 EXPECT_TRUE(display->has_color_correction_matrix());
77 EXPECT_TRUE(display->is_aspect_preserving_scaling());
78 }
79
80 TEST(FakeDisplaySnapshotTest, AlternateDisplayModes) {
81 auto display = CreateSnapshot("1920x1080#1600x900:1280x720/i");
82 const DisplayModeList& modes = display->modes();
83
84 ASSERT_EQ(3u, modes.size());
85 ExpectDisplayMode(modes[0].get(), 1920, 1080);
86 ExpectDisplayMode(modes[1].get(), 1600, 900);
87 ExpectDisplayMode(modes[2].get(), 1280, 720);
88 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type());
89 }
90
91 TEST(FakeDisplaySnapshotTest, ComplicatedSpecString) {
92 auto display =
93 CreateSnapshot("1920x1080%59.99#1600x900%90:1280x720%120^300/i");
94 const DisplayModeList& modes = display->modes();
95
96 ASSERT_EQ(3u, display->modes().size());
97 ExpectDisplayMode(modes[0].get(), 1920, 1080, 59.99f);
98 ExpectDisplayMode(modes[1].get(), 1600, 900, 90.0f);
99 ExpectDisplayMode(modes[2].get(), 1280, 720, 120.0f);
100 EXPECT_EQ(163, display->physical_size().width());
101 EXPECT_EQ(91, display->physical_size().height());
102 EXPECT_EQ(ui::DISPLAY_CONNECTION_TYPE_INTERNAL, display->type());
103 }
104
105 TEST(FakeDisplaySnapshotTest, BadDisplayMode) {
106 // Need width and height.
107 EXPECT_EQ(nullptr, CreateSnapshot("1024"));
108 // Display height and width should be separated by 'x' not ','.
109 EXPECT_EQ(nullptr, CreateSnapshot("1024,768"));
110 // Random 'a' before spec starts.
111 EXPECT_EQ(nullptr, CreateSnapshot("a1024,768"));
112 // Need to provide a refresh rate after '%'.
113 EXPECT_EQ(nullptr, CreateSnapshot("1024,768%"));
114 EXPECT_EQ(nullptr, CreateSnapshot("1024,768%a"));
115 // Refresh rate should come before DPI.
116 EXPECT_EQ(nullptr, CreateSnapshot("1000x1000^300%120"));
117 }
118
119 TEST(FakeDisplaySnapshotTest, BadDPI) {
120 // DPI should be an integer value.
121 EXPECT_EQ(nullptr, CreateSnapshot("1024x768^a"));
122 EXPECT_EQ(nullptr, CreateSnapshot("1024x768^300d"));
123 }
124
125 TEST(FakeDisplaySnapshotTest, BadOptions) {
126 // Need a '/' before options.
127 EXPECT_EQ(nullptr, CreateSnapshot("1024x768i"));
128 // Character 'z' is not a valid option.
129 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/z"));
130 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/iz"));
131 // DPI should come before options.
132 EXPECT_EQ(nullptr, CreateSnapshot("1600x900/i^300"));
133 }
134
135 TEST(FakeDisplaySnapshotTest, BadOrderOptionsAndModes) {
136 // Options should come after alternate display modes.
137 auto display = CreateSnapshot("1920x1080/i#1600x900:1280x720");
138 EXPECT_EQ(nullptr, display);
139 }
140
141 TEST(FakeDisplaySnapshotTest, BadOrderModeSeparator) {
142 // Reverse the '#' and ':' delimiters for alternate display modes.
143 auto display = CreateSnapshot("1920x1080:1600x900#1280x720");
144 EXPECT_EQ(nullptr, display);
145 }
146
147 } // namespace display
OLDNEW
« no previous file with comments | « ui/display/fake_display_snapshot.cc ('k') | ui/display/types/display_snapshot.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698