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

Unified Diff: chrome/gpu/gpu_info_collector_unittest.cc

Issue 6346007: Refactor and improve gpu_info_collector: collect information on linux;... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: This should turn three trybots green Created 9 years, 11 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 | « chrome/gpu/gpu_info_collector_mac.mm ('k') | chrome/gpu/gpu_info_collector_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/gpu/gpu_info_collector_unittest.cc
===================================================================
--- chrome/gpu/gpu_info_collector_unittest.cc (revision 0)
+++ chrome/gpu/gpu_info_collector_unittest.cc (revision 0)
@@ -0,0 +1,155 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "app/gfx/gl/gl_implementation.h"
+#include "base/scoped_ptr.h"
+#include "chrome/common/gpu_info.h"
+#include "chrome/gpu/gpu_info_collector.h"
+#include "gpu/command_buffer/common/gl_mock.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using ::gfx::MockGLInterface;
+using ::testing::Return;
+
+class GPUInfoCollectorTest : public testing::Test {
+ public:
+ GPUInfoCollectorTest() {}
+ virtual ~GPUInfoCollectorTest() { }
+
+ void SetUp() {
+ gfx::InitializeGLBindings(gfx::kGLImplementationMockGL);
+ gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
+ ::gfx::GLInterface::SetGLInterface(gl_.get());
+#if defined(OS_WIN)
+ const uint32 vendor_id = 0x10de;
+ const uint32 device_id = 0x0658;
+ const char* driver_vendor = ""; // not implemented
+ const char* driver_version = "";
+ const uint32 shader_version = 0x00000128;
+ const uint32 gl_version = 0x00000301;
+ const char* gl_renderer = "Quadro FX 380/PCI/SSE2";
+ const char* gl_vendor = "NVIDIA Corporation";
+ const char* gl_version_string = "3.1.0";
+ const char* gl_shading_language_version = "1.40 NVIDIA via Cg compiler";
+#elif defined(OS_MACOSX)
+ const uint32 vendor_id = 0x10de;
+ const uint32 device_id = 0x0640;
+ const char* driver_vendor = ""; // not implemented
+ const char* driver_version = "1.6.18";
+ const uint32 shader_version = 0x00000114;
+ const uint32 gl_version = 0x00000201;
+ const char* gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine";
+ const char* gl_vendor = "NVIDIA Corporation";
+ const char* gl_version_string = "2.1 NVIDIA-1.6.18";
+ const char* gl_shading_language_version = "1.20 ";
+#else // defined (OS_LINUX)
+ const uint32 vendor_id = 0x10de;
+ const uint32 device_id = 0x0658;
+ const char* driver_vendor = "NVIDIA";
+ const char* driver_version = "195.36.24";
+ const uint32 shader_version = 0x00000132;
+ const uint32 gl_version = 0x00000302;
+ const char* gl_renderer = "Quadro FX 380/PCI/SSE2";
+ const char* gl_vendor = "NVIDIA Corporation";
+ const char* gl_version_string = "3.2.0 NVIDIA 195.36.24";
+ const char* gl_shading_language_version = "1.50 NVIDIA via Cg compiler";
+#endif
+ test_values_.SetVideoCardInfo(vendor_id, device_id);
+ test_values_.SetDriverInfo(driver_vendor, driver_version);
+ test_values_.SetShaderVersion(shader_version, shader_version);
+ test_values_.SetGLVersion(gl_version);
+ test_values_.SetGLRenderer(gl_renderer);
+ test_values_.SetGLVendor(gl_vendor);
+ test_values_.SetGLVersionString(gl_version_string);
+ test_values_.SetCanLoseContext(false);
+
+ EXPECT_CALL(*gl_, GetString(GL_EXTENSIONS))
+ .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>(
+ "GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 "
+ "GL_EXT_read_format_bgra")));
+ EXPECT_CALL(*gl_, GetString(GL_SHADING_LANGUAGE_VERSION))
+ .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>(
+ gl_shading_language_version)));
+ EXPECT_CALL(*gl_, GetString(GL_VERSION))
+ .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>(
+ gl_version_string)));
+ EXPECT_CALL(*gl_, GetString(GL_VENDOR))
+ .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>(
+ gl_vendor)));
+ EXPECT_CALL(*gl_, GetString(GL_RENDERER))
+ .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>(
+ gl_renderer)));
+ }
+
+ void TearDown() {
+ ::gfx::GLInterface::SetGLInterface(NULL);
+ gl_.reset();
+ }
+
+ public:
+ // Use StrictMock to make 100% sure we know how GL will be called.
+ scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
+ GPUInfo test_values_;
+};
+
+// TODO(rlp): Test the vendor and device id collection if deemed necessary as
+// it involves several complicated mocks for each platform.
+
+TEST_F(GPUInfoCollectorTest, DriverVendorGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ std::string driver_vendor = gpu_info.driver_vendor();
+ EXPECT_EQ(test_values_.driver_vendor(), driver_vendor);
+}
+
+TEST_F(GPUInfoCollectorTest, DriverVersionGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ std::string driver_version = gpu_info.driver_version();
+ EXPECT_EQ(test_values_.driver_version(), driver_version);
+}
+
+TEST_F(GPUInfoCollectorTest, PixelShaderVersionGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ uint32 ps_version = gpu_info.pixel_shader_version();
+ EXPECT_EQ(test_values_.pixel_shader_version(), ps_version);
+}
+
+TEST_F(GPUInfoCollectorTest, VertexShaderVersionGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ uint32 vs_version = gpu_info.vertex_shader_version();
+ EXPECT_EQ(test_values_.vertex_shader_version(), vs_version);
+}
+
+TEST_F(GPUInfoCollectorTest, GLVersionGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ uint32 gl_version = gpu_info.gl_version();
+ EXPECT_EQ(test_values_.gl_version(), gl_version);
+}
+
+TEST_F(GPUInfoCollectorTest, GLVersionStringGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ std::string gl_version_string = gpu_info.gl_version_string();
+ EXPECT_EQ(test_values_.gl_version_string(), gl_version_string);
+}
+
+TEST_F(GPUInfoCollectorTest, GLRendererGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ std::string gl_renderer = gpu_info.gl_renderer();
+ EXPECT_EQ(test_values_.gl_renderer(), gl_renderer);
+}
+
+TEST_F(GPUInfoCollectorTest, GLVendorGL) {
+ GPUInfo gpu_info;
+ gpu_info_collector::CollectGraphicsInfoGL(&gpu_info);
+ std::string gl_vendor = gpu_info.gl_vendor();
+ EXPECT_EQ(test_values_.gl_vendor(), gl_vendor);
+}
+
Property changes on: chrome/gpu/gpu_info_collector_unittest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/gpu/gpu_info_collector_mac.mm ('k') | chrome/gpu/gpu_info_collector_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698