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 |