Edit

kc3-lang/angle/tests/angle_tests/UniformTest.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2014-08-28 17:19:13
    Hash : a502c749
    Message : Use the specified Program instead of current in GetUniform. This bug slipped in with the GetUniform validation refactor. BUG=angle:571 Change-Id: I2b87e6fe98224ba99c5b21a71d66b197fd618741 Reviewed-on: https://chromium-review.googlesource.com/214872 Reviewed-by: Nicolas Capens <capn@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>

  • tests/angle_tests/UniformTest.cpp
  • #include "ANGLETest.h"
    
    class UniformTest : public ANGLETest
    {
      protected:
        UniformTest()
        {
            setWindowWidth(128);
            setWindowHeight(128);
            setConfigRedBits(8);
            setConfigGreenBits(8);
            setConfigBlueBits(8);
            setConfigAlphaBits(8);
        }
    
        virtual void SetUp()
        {
            ANGLETest::SetUp();
    
            const std::string &vertexShader = "void main() { gl_Position = vec4(1); }";
            const std::string &fragShader =
                "precision mediump float;\n"
                "uniform float uniF;\n"
                "uniform int uniI;\n"
                "void main() { gl_FragColor = vec4(uniF + float(uniI)); }";
    
            mProgram = CompileProgram(vertexShader, fragShader);
            ASSERT_NE(mProgram, 0u);
    
            mUniformFLocation = glGetUniformLocation(mProgram, "uniF");
            ASSERT_NE(mUniformFLocation, -1);
    
            mUniformILocation = glGetUniformLocation(mProgram, "uniI");
            ASSERT_NE(mUniformILocation, -1);
    
            ASSERT_GL_NO_ERROR();
        }
    
        virtual void TearDown()
        {
            glDeleteProgram(mProgram);
            ANGLETest::TearDown();
        }
    
        GLuint mProgram;
        GLint mUniformFLocation;
        GLint mUniformILocation;
    };
    
    TEST_F(UniformTest, GetUniformNoCurrentProgram)
    {
        glUseProgram(mProgram);
        glUniform1f(mUniformFLocation, 1.0f);
        glUniform1i(mUniformILocation, 1);
        glUseProgram(0);
    
        GLfloat f;
        glGetnUniformfvEXT(mProgram, mUniformFLocation, 4, &f);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1.0f, f);
    
        glGetUniformfv(mProgram, mUniformFLocation, &f);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1.0f, f);
    
        GLint i;
        glGetnUniformivEXT(mProgram, mUniformILocation, 4, &i);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1, i);
    
        glGetUniformiv(mProgram, mUniformILocation, &i);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1, i);
    }