blob: 4f76b0e17bff99889bec8e14cc1021ecc21684d4 [file] [log] [blame]
Jamie Madilla502c742014-08-28 17:19:13 -04001#include "ANGLETest.h"
2
3class 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
50TEST_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}