blob: 7eb97cf36b96de428fcd739e1ab87f2b6e8a898c [file] [log] [blame]
Geoff Langf1e85922015-02-23 14:40:04 -05001#include "ANGLETest.h"
2
3#include <vector>
4
5// Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
6ANGLE_TYPED_TEST_CASE(SimpleOperationTest, ES2_D3D9, ES2_D3D11, ES3_D3D11, ES2_OPENGL, ES3_OPENGL);
7
8template<typename T>
9class SimpleOperationTest : public ANGLETest
10{
11 protected:
12 SimpleOperationTest() : ANGLETest(T::GetGlesMajorVersion(), T::GetPlatform())
13 {
14 setWindowWidth(128);
15 setWindowHeight(128);
16 setConfigRedBits(8);
17 setConfigGreenBits(8);
18 setConfigBlueBits(8);
19 setConfigAlphaBits(8);
20 }
21};
22
23TYPED_TEST(SimpleOperationTest, CompileVertexShader)
24{
25 const std::string source = SHADER_SOURCE
26 (
27 attribute vec4 a_input;
28 void main()
29 {
30 gl_Position = a_input;
31 }
32 );
33
34 GLuint shader = CompileShader(GL_VERTEX_SHADER, source);
35 EXPECT_NE(shader, 0u);
36 glDeleteShader(shader);
37
38 EXPECT_GL_NO_ERROR();
39}
40
41TYPED_TEST(SimpleOperationTest, CompileFragmentShader)
42{
43 const std::string source = SHADER_SOURCE
44 (
45 precision mediump float;
46 varying vec4 v_input;
47 void main()
48 {
49 gl_FragColor = v_input;
50 }
51 );
52
53 GLuint shader = CompileShader(GL_FRAGMENT_SHADER, source);
54 EXPECT_NE(shader, 0u);
55 glDeleteShader(shader);
56
57 EXPECT_GL_NO_ERROR();
58}
Geoff Langb1f435e2015-02-20 10:01:01 -050059
60TYPED_TEST(SimpleOperationTest, LinkProgram)
61{
62 const std::string vsSource = SHADER_SOURCE
63 (
64 void main()
65 {
66 gl_Position = vec4(1.0, 1.0, 1.0, 1.0);
67 }
68 );
69
70 const std::string fsSource = SHADER_SOURCE
71 (
72 void main()
73 {
74 gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
75 }
76 );
77
78 GLuint program = CompileProgram(vsSource, fsSource);
79 EXPECT_NE(program, 0u);
80 glDeleteProgram(program);
81
82 EXPECT_GL_NO_ERROR();
83}
84
85TYPED_TEST(SimpleOperationTest, LinkProgramWithUniforms)
86{
87 const std::string vsSource = SHADER_SOURCE
88 (
89 void main()
90 {
91 gl_Position = vec4(1.0, 1.0, 1.0, 1.0);
92 }
93 );
94
95 const std::string fsSource = SHADER_SOURCE
96 (
97 precision mediump float;
98 uniform vec4 u_input;
99 void main()
100 {
101 gl_FragColor = u_input;
102 }
103 );
104
105 GLuint program = CompileProgram(vsSource, fsSource);
106 EXPECT_NE(program, 0u);
107
108 GLint uniformLoc = glGetUniformLocation(program, "u_input");
109 EXPECT_NE(-1, uniformLoc);
110
111 glDeleteProgram(program);
112
113 EXPECT_GL_NO_ERROR();
114}
115
116TYPED_TEST(SimpleOperationTest, LinkProgramWithAttributes)
117{
118 const std::string vsSource = SHADER_SOURCE
119 (
120 attribute vec4 a_input;
121 void main()
122 {
123 gl_Position = a_input;
124 }
125 );
126
127 const std::string fsSource = SHADER_SOURCE
128 (
129 void main()
130 {
131 gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
132 }
133 );
134
135 GLuint program = CompileProgram(vsSource, fsSource);
136 EXPECT_NE(program, 0u);
137
138 GLint attribLoc = glGetAttribLocation(program, "a_input");
139 EXPECT_NE(-1, attribLoc);
140
141 glDeleteProgram(program);
142
143 EXPECT_GL_NO_ERROR();
144}