Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / tests / angle_tests / UniformTest.cpp
1 #include "ANGLETest.h"
2
3 class UniformTest : public ANGLETest
4 {
5   protected:
6     UniformTest()
7     {
8         setWindowWidth(128);
9         setWindowHeight(128);
10         setConfigRedBits(8);
11         setConfigGreenBits(8);
12         setConfigBlueBits(8);
13         setConfigAlphaBits(8);
14     }
15
16     virtual void SetUp()
17     {
18         ANGLETest::SetUp();
19
20         const std::string &vertexShader = "void main() { gl_Position = vec4(1); }";
21         const std::string &fragShader =
22             "precision mediump float;\n"
23             "uniform float uniF;\n"
24             "uniform int uniI;\n"
25             "void main() { gl_FragColor = vec4(uniF + float(uniI)); }";
26
27         mProgram = CompileProgram(vertexShader, fragShader);
28         ASSERT_NE(mProgram, 0u);
29
30         mUniformFLocation = glGetUniformLocation(mProgram, "uniF");
31         ASSERT_NE(mUniformFLocation, -1);
32
33         mUniformILocation = glGetUniformLocation(mProgram, "uniI");
34         ASSERT_NE(mUniformILocation, -1);
35
36         ASSERT_GL_NO_ERROR();
37     }
38
39     virtual void TearDown()
40     {
41         glDeleteProgram(mProgram);
42         ANGLETest::TearDown();
43     }
44
45     GLuint mProgram;
46     GLint mUniformFLocation;
47     GLint mUniformILocation;
48 };
49
50 TEST_F(UniformTest, GetUniformNoCurrentProgram)
51 {
52     glUseProgram(mProgram);
53     glUniform1f(mUniformFLocation, 1.0f);
54     glUniform1i(mUniformILocation, 1);
55     glUseProgram(0);
56
57     GLfloat f;
58     glGetnUniformfvEXT(mProgram, mUniformFLocation, 4, &f);
59     ASSERT_GL_NO_ERROR();
60     EXPECT_EQ(1.0f, f);
61
62     glGetUniformfv(mProgram, mUniformFLocation, &f);
63     ASSERT_GL_NO_ERROR();
64     EXPECT_EQ(1.0f, f);
65
66     GLint i;
67     glGetnUniformivEXT(mProgram, mUniformILocation, 4, &i);
68     ASSERT_GL_NO_ERROR();
69     EXPECT_EQ(1, i);
70
71     glGetUniformiv(mProgram, mUniformILocation, &i);
72     ASSERT_GL_NO_ERROR();
73     EXPECT_EQ(1, i);
74 }