// Copyright (c) 2012 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 #include #include "gpu/command_buffer/tests/gl_manager.h" #include "gpu/command_buffer/tests/gl_test_utils.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace gpu { class GLTest : public testing::Test { protected: virtual void SetUp() { gl_.Initialize(gfx::Size(4, 4)); } virtual void TearDown() { gl_.Destroy(); } GLManager gl_; }; // Test that GL is at least minimally working. TEST_F(GLTest, Basic) { glClearColor(0.0f, 1.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); uint8 expected[] = { 0, 255, 0, 255, }; EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); } TEST_F(GLTest, SimpleShader) { static const char* v_shader_str = "attribute vec4 a_Position;\n" "void main()\n" "{\n" " gl_Position = a_Position;\n" "}\n"; static const char* f_shader_str = "precision mediump float;\n" "void main()\n" "{\n" " gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n" "}\n"; GLuint program = GLTestHelper::LoadProgram(v_shader_str, f_shader_str); glUseProgram(program); GLuint position_loc = glGetAttribLocation(program, "a_Position"); GLTestHelper::SetupUnitQuad(position_loc); uint8 expected_clear[] = { 127, 0, 255, 0, }; glClearColor(0.5f, 0.0f, 1.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 1, expected_clear)); uint8 expected_draw[] = { 0, 255, 0, 255, }; glDrawArrays(GL_TRIANGLES, 0, 6); EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_draw)); } TEST_F(GLTest, GetString) { EXPECT_STREQ( "OpenGL ES 2.0 Chromium", reinterpret_cast(glGetString(GL_VERSION))); EXPECT_STREQ( "OpenGL ES GLSL ES 1.0 Chromium", reinterpret_cast(glGetString(GL_SHADING_LANGUAGE_VERSION))); EXPECT_STREQ( "Chromium", reinterpret_cast(glGetString(GL_RENDERER))); EXPECT_STREQ( "Chromium", reinterpret_cast(glGetString(GL_VENDOR))); } } // namespace gpu