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

Unified Diff: chromeos/display/output_util_unittest.cc

Issue 21297003: Add ability to set resolution on external display (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: adraddressed comment, adjusted test Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/display/output_util.cc ('k') | chromeos/display/real_output_configurator_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/display/output_util_unittest.cc
diff --git a/chromeos/display/output_util_unittest.cc b/chromeos/display/output_util_unittest.cc
index efd02d367d053fc49988791f266678bcbd0b5cf6..3550c248b4c3d1c7a83c0ec1a4f4a880a8df588c 100644
--- a/chromeos/display/output_util_unittest.cc
+++ b/chromeos/display/output_util_unittest.cc
@@ -7,6 +7,8 @@
#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include <X11/extensions/Xrandr.h>
+
namespace chromeos {
namespace {
@@ -244,4 +246,92 @@ TEST(OutputUtilTest, GetDisplayIdFailure) {
EXPECT_EQ(-1, id);
}
+TEST(OutputUtilTest, FindOutputModeMatchingSize) {
+ XRRScreenResources resources = {0};
+ RROutput outputs[] = {1};
+ resources.noutput = arraysize(outputs);
+ resources.outputs = outputs;
+ XRRModeInfo modes[] = {
+ // id, width, height, interlaced, refresh rate
+ test::CreateModeInfo(11, 1920, 1200, false, 60.0f),
+
+ // different rates
+ test::CreateModeInfo(12, 1920, 1080, false, 30.0f),
+ test::CreateModeInfo(13, 1920, 1080, false, 50.0f),
+ test::CreateModeInfo(14, 1920, 1080, false, 40.0f),
+ test::CreateModeInfo(15, 1920, 1080, false, 0.0f),
+
+ // interlace vs non interlace
+ test::CreateModeInfo(16, 1280, 720, true, 60.0f),
+ test::CreateModeInfo(17, 1280, 720, false, 40.0f),
+
+ // interlace only
+ test::CreateModeInfo(18, 1024, 768, true, 0.0f),
+ test::CreateModeInfo(19, 1024, 768, true, 40.0f),
+ test::CreateModeInfo(20, 1024, 768, true, 60.0f),
+
+ // mixed
+ test::CreateModeInfo(21, 1024, 600, true, 60.0f),
+ test::CreateModeInfo(22, 1024, 600, false, 40.0f),
+ test::CreateModeInfo(23, 1024, 600, false, 50.0f),
+
+ // just one interlaced mode
+ test::CreateModeInfo(24, 640, 480, true, 60.0f),
+
+ // refresh rate not available.
+ test::CreateModeInfo(25, 320, 200, false, 0.0f),
+ };
+ resources.nmode = arraysize(modes);
+ resources.modes = modes;
+
+ XRROutputInfo output_info = {0};
+ RRMode output_modes[] = {
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
+ };
+ output_info.nmode = arraysize(output_modes);
+ output_info.modes = output_modes;
+
+ EXPECT_EQ(11u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1920, 1200));
+
+ // Should pick highest refresh rate.
+ EXPECT_EQ(13u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1920, 1080));
+
+ // Should pick non interlaced mode.
+ EXPECT_EQ(17u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1280, 720));
+
+ // Interlaced only. Should pick one with the highest refresh rate in
+ // interlaced mode.
+ EXPECT_EQ(20u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1024, 768));
+
+ // Mixed: Should pick one with the highest refresh rate in
+ // interlaced mode.
+ EXPECT_EQ(23u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1024, 600));
+
+ // Just one interlaced mode.
+ EXPECT_EQ(24u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 640, 480));
+
+ // Refresh rate not available.
+ EXPECT_EQ(25u, FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 320, 200));
+
+ // No mode found.
+ EXPECT_EQ(static_cast<XID>(None),
+ FindOutputModeMatchingSize(&resources,
+ &output_info,
+ 1440, 900));
+}
+
} // namespace chromeos
« no previous file with comments | « chromeos/display/output_util.cc ('k') | chromeos/display/real_output_configurator_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698