Fix svace issue (uint32_t to long or std::streamsize)
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-graphics / utc-Dali-GlImplementation.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include <dali-test-suite-utils.h>
19
20 #include <dali/internal/graphics/gles/gl-implementation.h>
21 #include <dali/internal/graphics/gles/gl-proxy-implementation.h>
22 #include <dali/internal/system/common/environment-options.h>
23
24 void gl_implementation_startup(void)
25 {
26 }
27
28 void gl_implementation_cleanup(void)
29 {
30 }
31
32 using namespace Dali::Internal::Adaptor;
33
34 namespace
35 {
36 void CallAllMethods(Dali::Integration::GlAbstraction& implementation)
37 {
38   // These tests are purely for coverage, they don't really test anything!
39   try
40   {
41     implementation.PreRender();
42     implementation.PostRender();
43     implementation.IsSurfacelessContextSupported();
44
45     // Cannot call the following functions as they have a Wait
46     //    implementation.IsAdvancedBlendEquationSupported();
47     //    implementation.IsMultisampledRenderToTextureSupported();
48     //    implementation.IsBlendEquationSupported(Dali::DevelBlendEquation::ADD);
49     //    implementation.GetShaderVersionPrefix();
50     //    implementation.GetVertexShaderPrefix();
51     //    implementation.GetFragmentShaderPrefix();
52
53     implementation.TextureRequiresConverting(0, 0, false);
54     implementation.ActiveTexture(0);
55     implementation.AttachShader(0, 0);
56     implementation.BindAttribLocation(0, 0, nullptr);
57     implementation.BindBuffer(0, 0);
58     implementation.BindFramebuffer(0, 0);
59     implementation.BindRenderbuffer(0, 0);
60     implementation.BindTexture(0, 0);
61     implementation.BlendColor(0, 0, 0, 0);
62     implementation.BlendEquation(0);
63     implementation.BlendEquationSeparate(0, 0);
64     implementation.BlendFunc(0, 0);
65     implementation.BlendFuncSeparate(0, 0, 0, 0);
66     implementation.BufferData(0, 0, nullptr, 0);
67     implementation.BufferSubData(0, 0, 0, nullptr);
68     implementation.CheckFramebufferStatus(0);
69     implementation.Clear(0);
70     implementation.ClearColor(0, 0, 0, 0);
71     implementation.ClearDepthf(0);
72     implementation.ClearStencil(0);
73     implementation.ColorMask(0, 0, 0, 0);
74     implementation.CompileShader(0);
75     implementation.CompressedTexImage2D(0, 0, 0, 0, 0, 0, 0, nullptr);
76     implementation.CompressedTexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
77     implementation.CopyTexImage2D(0, 0, 0, 0, 0, 0, 0, 0);
78     implementation.CopyTexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0);
79     implementation.CreateProgram();
80     implementation.CreateShader(0);
81     implementation.CullFace(0);
82     implementation.DeleteBuffers(0, nullptr);
83     implementation.DeleteFramebuffers(0, nullptr);
84     implementation.DeleteProgram(0);
85     implementation.DeleteRenderbuffers(0, nullptr);
86     implementation.DeleteShader(0);
87     implementation.DeleteTextures(0, nullptr);
88     implementation.DepthFunc(0);
89     implementation.DepthMask(0);
90     implementation.DepthRangef(0, 0);
91     implementation.DetachShader(0, 0);
92     implementation.Disable(0);
93     implementation.DisableVertexAttribArray(0);
94     implementation.DrawArrays(0, 0, 0);
95     implementation.DrawElements(0, 0, 0, nullptr);
96     implementation.Enable(0);
97     implementation.EnableVertexAttribArray(0);
98     implementation.Finish();
99     implementation.Flush();
100     implementation.FramebufferRenderbuffer(0, 0, 0, 0);
101     implementation.FramebufferTexture2D(0, 0, 0, 0, 0);
102     implementation.FrontFace(0);
103     implementation.GenBuffers(0, nullptr);
104     implementation.GenerateMipmap(0);
105     implementation.GenFramebuffers(0, nullptr);
106     implementation.GenRenderbuffers(0, nullptr);
107     implementation.GenTextures(0, nullptr);
108     implementation.GetActiveAttrib(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
109     implementation.GetActiveUniform(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
110     implementation.GetAttachedShaders(0, 0, nullptr, nullptr);
111     implementation.GetAttribLocation(0, nullptr);
112     implementation.GetBooleanv(0, nullptr);
113     implementation.GetBufferParameteriv(0, 0, nullptr);
114     implementation.GetError();
115     implementation.GetFloatv(0, nullptr);
116     implementation.GetFramebufferAttachmentParameteriv(0, 0, 0, nullptr);
117     implementation.GetIntegerv(0, nullptr);
118     implementation.GetProgramiv(0, 0, nullptr);
119     implementation.GetProgramInfoLog(0, 0, nullptr, nullptr);
120     implementation.GetRenderbufferParameteriv(0, 0, nullptr);
121     implementation.GetShaderiv(0, 0, nullptr);
122     implementation.GetShaderInfoLog(0, 0, nullptr, nullptr);
123     implementation.GetShaderPrecisionFormat(0, 0, nullptr, nullptr);
124     implementation.GetShaderSource(0, 0, nullptr, nullptr);
125     implementation.GetString(0);
126     implementation.GetTexParameterfv(0, 0, nullptr);
127     implementation.GetTexParameteriv(0, 0, nullptr);
128     implementation.GetUniformfv(0, 0, nullptr);
129     implementation.GetUniformiv(0, 0, nullptr);
130     implementation.GetUniformLocation(0, nullptr);
131     implementation.GetVertexAttribfv(0, 0, nullptr);
132     implementation.GetVertexAttribiv(0, 0, nullptr);
133     implementation.GetVertexAttribPointerv(0, 0, nullptr);
134     implementation.Hint(0, 0);
135     implementation.IsBuffer(0);
136     implementation.IsEnabled(0);
137     implementation.IsFramebuffer(0);
138     implementation.IsProgram(0);
139     implementation.IsRenderbuffer(0);
140     implementation.IsShader(0);
141     implementation.IsTexture(0);
142     implementation.LineWidth(0);
143     implementation.LinkProgram(0);
144     implementation.PixelStorei(0, 0);
145     implementation.PolygonOffset(0, 0);
146     implementation.ReadPixels(0, 0, 0, 0, 0, 0, nullptr);
147     implementation.ReleaseShaderCompiler();
148     implementation.RenderbufferStorage(0, 0, 0, 0);
149     implementation.SampleCoverage(0, 0);
150     implementation.Scissor(0, 0, 0, 0);
151     implementation.ShaderBinary(0, nullptr, 0, nullptr, 0);
152     implementation.ShaderSource(0, 0, nullptr, nullptr);
153     implementation.StencilFunc(0, 0, 0);
154     implementation.StencilFuncSeparate(0, 0, 0, 0);
155     implementation.StencilMask(0);
156     implementation.StencilMaskSeparate(0, 0);
157     implementation.StencilOp(0, 0, 0);
158     implementation.StencilOpSeparate(0, 0, 0, 0);
159     implementation.TexImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
160     implementation.TexParameterf(0, 0, 0);
161     implementation.TexParameterfv(0, 0, nullptr);
162     implementation.TexParameteri(0, 0, 0);
163     implementation.TexParameteriv(0, 0, nullptr);
164     implementation.TexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
165     implementation.Uniform1f(0, 0);
166     implementation.Uniform1fv(0, 0, nullptr);
167     implementation.Uniform1i(0, 0);
168     implementation.Uniform1iv(0, 0, nullptr);
169     implementation.Uniform2f(0, 0, 0);
170     implementation.Uniform2fv(0, 0, nullptr);
171     implementation.Uniform2i(0, 0, 0);
172     implementation.Uniform2iv(0, 0, nullptr);
173     implementation.Uniform3f(0, 0, 0, 0);
174     implementation.Uniform3fv(0, 0, nullptr);
175     implementation.Uniform3i(0, 0, 0, 0);
176     implementation.Uniform3iv(0, 0, nullptr);
177     implementation.Uniform4f(0, 0, 0, 0, 0);
178     implementation.Uniform4fv(0, 0, nullptr);
179     implementation.Uniform4i(0, 0, 0, 0, 0);
180     implementation.Uniform4iv(0, 0, nullptr);
181     implementation.UniformMatrix2fv(0, 0, 0, nullptr);
182     implementation.UniformMatrix3fv(0, 0, 0, nullptr);
183     implementation.UniformMatrix4fv(0, 0, 0, nullptr);
184     implementation.UseProgram(0);
185     implementation.ValidateProgram(0);
186     implementation.VertexAttrib1f(0, 0);
187     implementation.VertexAttrib1fv(0, nullptr);
188     implementation.VertexAttrib2f(0, 0, 0);
189     implementation.VertexAttrib2fv(0, nullptr);
190     implementation.VertexAttrib3f(0, 0, 0, 0);
191     implementation.VertexAttrib3fv(0, nullptr);
192     implementation.VertexAttrib4f(0, 0, 0, 0, 0);
193     implementation.VertexAttrib4fv(0, nullptr);
194     implementation.VertexAttribPointer(0, 0, 0, 0, 0, nullptr);
195     implementation.Viewport(0, 0, 0, 0);
196     implementation.ReadBuffer(0);
197     implementation.DrawRangeElements(0, 0, 0, 0, 0, nullptr);
198     implementation.TexImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
199     implementation.TexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
200     implementation.CopyTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0);
201     implementation.CompressedTexImage3D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
202     implementation.CompressedTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
203     implementation.GenQueries(0, nullptr);
204     implementation.DeleteQueries(0, nullptr);
205     implementation.IsQuery(0);
206     implementation.BeginQuery(0, 0);
207     implementation.EndQuery(0);
208     implementation.GetQueryiv(0, 0, nullptr);
209     implementation.GetQueryObjectuiv(0, 0, nullptr);
210     implementation.UnmapBuffer(0);
211     implementation.GetBufferPointerv(0, 0, nullptr);
212     implementation.DrawBuffers(0, nullptr);
213     implementation.UniformMatrix2x3fv(0, 0, 0, nullptr);
214     implementation.UniformMatrix3x2fv(0, 0, 0, nullptr);
215     implementation.UniformMatrix2x4fv(0, 0, 0, nullptr);
216     implementation.UniformMatrix4x2fv(0, 0, 0, nullptr);
217     implementation.UniformMatrix3x4fv(0, 0, 0, nullptr);
218     implementation.UniformMatrix4x3fv(0, 0, 0, nullptr);
219     implementation.BlitFramebuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
220     implementation.RenderbufferStorageMultisample(0, 0, 0, 0, 0);
221     implementation.FramebufferTexture2DMultisample(0, 0, 0, 0, 0, 0);
222     implementation.FramebufferTextureLayer(0, 0, 0, 0, 0);
223     implementation.MapBufferRange(0, 0, 0, 0);
224     implementation.FlushMappedBufferRange(0, 0, 0);
225     implementation.BindVertexArray(0);
226     implementation.DeleteVertexArrays(0, nullptr);
227     implementation.GenVertexArrays(0, nullptr);
228     implementation.IsVertexArray(0);
229     implementation.GetIntegeri_v(0, 0, nullptr);
230     implementation.BeginTransformFeedback(0);
231     implementation.EndTransformFeedback();
232     implementation.BindBufferRange(0, 0, 0, 0, 0);
233     implementation.BindBufferBase(0, 0, 0);
234     implementation.TransformFeedbackVaryings(0, 0, nullptr, 0);
235     implementation.GetTransformFeedbackVarying(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
236     implementation.VertexAttribIPointer(0, 0, 0, 0, nullptr);
237     implementation.GetVertexAttribIiv(0, 0, nullptr);
238     implementation.GetVertexAttribIuiv(0, 0, nullptr);
239     implementation.VertexAttribI4i(0, 0, 0, 0, 0);
240     implementation.VertexAttribI4ui(0, 0, 0, 0, 0);
241     implementation.VertexAttribI4iv(0, nullptr);
242     implementation.VertexAttribI4uiv(0, nullptr);
243     implementation.GetUniformuiv(0, 0, nullptr);
244     implementation.GetFragDataLocation(0, nullptr);
245     implementation.Uniform1ui(0, 0);
246     implementation.Uniform2ui(0, 0, 0);
247     implementation.Uniform3ui(0, 0, 0, 0);
248     implementation.Uniform4ui(0, 0, 0, 0, 0);
249     implementation.Uniform1uiv(0, 0, nullptr);
250     implementation.Uniform2uiv(0, 0, nullptr);
251     implementation.Uniform3uiv(0, 0, nullptr);
252     implementation.Uniform4uiv(0, 0, nullptr);
253     implementation.ClearBufferiv(0, 0, nullptr);
254     implementation.ClearBufferuiv(0, 0, nullptr);
255     implementation.ClearBufferfv(0, 0, nullptr);
256     implementation.ClearBufferfi(0, 0, 0, 0);
257     implementation.GetStringi(0, 0);
258     implementation.CopyBufferSubData(0, 0, 0, 0, 0);
259     implementation.GetUniformIndices(0, 0, nullptr, nullptr);
260     implementation.GetActiveUniformsiv(0, 0, nullptr, 0, nullptr);
261     implementation.GetUniformBlockIndex(0, nullptr);
262     implementation.GetActiveUniformBlockiv(0, 0, 0, nullptr);
263     implementation.GetActiveUniformBlockName(0, 0, 0, nullptr, nullptr);
264     implementation.UniformBlockBinding(0, 0, 0);
265     implementation.DrawArraysInstanced(0, 0, 0, 0);
266     implementation.DrawElementsInstanced(0, 0, 0, nullptr, 0);
267     implementation.FenceSync(0, 0);
268     implementation.IsSync(0);
269     implementation.DeleteSync(0);
270     implementation.ClientWaitSync(0, 0, 0);
271     implementation.WaitSync(0, 0, 0);
272     implementation.GetInteger64v(0, nullptr);
273     implementation.GetSynciv(0, 0, 0, nullptr, nullptr);
274     implementation.GetInteger64i_v(0, 0, nullptr);
275     implementation.GetBufferParameteri64v(0, 0, nullptr);
276     implementation.GenSamplers(0, nullptr);
277     implementation.DeleteSamplers(0, nullptr);
278     implementation.IsSampler(0);
279     implementation.BindSampler(0, 0);
280     implementation.SamplerParameteri(0, 0, 0);
281     implementation.SamplerParameteriv(0, 0, nullptr);
282     implementation.SamplerParameterf(0, 0, 0);
283     implementation.SamplerParameterfv(0, 0, nullptr);
284     implementation.GetSamplerParameteriv(0, 0, nullptr);
285     implementation.GetSamplerParameterfv(0, 0, nullptr);
286     implementation.VertexAttribDivisor(0, 0);
287     implementation.BindTransformFeedback(0, 0);
288     implementation.DeleteTransformFeedbacks(0, nullptr);
289     implementation.GenTransformFeedbacks(0, nullptr);
290     implementation.IsTransformFeedback(0);
291     implementation.PauseTransformFeedback();
292     implementation.ResumeTransformFeedback();
293     implementation.GetProgramBinary(0, 0, nullptr, nullptr, nullptr);
294     implementation.ProgramBinary(0, 0, nullptr, 0);
295     implementation.ProgramParameteri(0, 0, 0);
296     implementation.InvalidateFramebuffer(0, 0, nullptr);
297     implementation.InvalidateSubFramebuffer(0, 0, nullptr, 0, 0, 0, 0);
298     implementation.TexStorage2D(0, 0, 0, 0, 0);
299     implementation.TexStorage3D(0, 0, 0, 0, 0, 0);
300     implementation.GetInternalformativ(0, 0, 0, 0, nullptr);
301     implementation.BlendBarrier();
302
303     DALI_TEST_CHECK(true); // Should get here!
304   }
305   catch(...)
306   {
307     DALI_TEST_CHECK(false); // Should not get here!
308   }
309 }
310 } // unnamed namespace
311
312 int UtcDaliGlImplementationConstruction(void)
313 {
314   // This derived destructor of the class is called which is purely for increasing function coverage
315   Dali::Integration::GlAbstraction* abstraction    = new GlImplementation;
316   GlImplementation*                 implementation = dynamic_cast<GlImplementation*>(abstraction);
317   DALI_TEST_CHECK(implementation);
318   delete implementation;
319   END_TEST;
320 }
321
322 int UtcDaliGlProxyImplementationConstruction(void)
323 {
324   // This derived destructor of the class is called which is purely for increasing function coverage
325   EnvironmentOptions                envOptions;
326   Dali::Integration::GlAbstraction* abstraction    = new GlProxyImplementation(envOptions);
327   GlProxyImplementation*            implementation = dynamic_cast<GlProxyImplementation*>(abstraction);
328   DALI_TEST_CHECK(implementation);
329   delete implementation;
330   END_TEST;
331 }
332
333 int UtcDaliGlImplementationMethods(void)
334 {
335   GlImplementation implementation;
336   CallAllMethods(implementation);
337   END_TEST;
338 }
339
340 int UtcDaliGlProxyImplementationMethods(void)
341 {
342   EnvironmentOptions    envOptions;
343   GlProxyImplementation implementation(envOptions);
344   CallAllMethods(implementation);
345   END_TEST;
346 }