(Automated Tests) Added more tests to increase TEM score
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-graphics / utc-Dali-GlesImplementation.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/gles2-implementation.h>
21 #include <dali/internal/graphics/gles/gles3-implementation.h>
22
23 void gles_implementation_startup(void)
24 {
25 }
26
27 void gles_implementation_cleanup(void)
28 {
29 }
30
31 using namespace Dali::Internal::Adaptor;
32
33 namespace
34 {
35 void CallAllMethods(GlesAbstraction& implementation)
36 {
37   // These tests are purely for coverage, they don't really test anything!
38   try
39   {
40     implementation.ReadBuffer(0);
41     implementation.DrawRangeElements(0, 0, 0, 0, 0, nullptr);
42     implementation.TexImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
43     implementation.TexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
44     implementation.CopyTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0);
45     implementation.CompressedTexImage3D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
46     implementation.CompressedTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
47     implementation.GenQueries(0, nullptr);
48     implementation.DeleteQueries(0, nullptr);
49     implementation.IsQuery(0);
50     implementation.BeginQuery(0, 0);
51     implementation.EndQuery(0);
52     implementation.GetQueryiv(0, 0, nullptr);
53     implementation.GetQueryObjectuiv(0, 0, nullptr);
54     implementation.UnmapBuffer(0);
55     implementation.GetBufferPointerv(0, 0, nullptr);
56     implementation.DrawBuffers(0, nullptr);
57     implementation.UniformMatrix2x3fv(0, 0, 0, nullptr);
58     implementation.UniformMatrix3x2fv(0, 0, 0, nullptr);
59     implementation.UniformMatrix2x4fv(0, 0, 0, nullptr);
60     implementation.UniformMatrix4x2fv(0, 0, 0, nullptr);
61     implementation.UniformMatrix3x4fv(0, 0, 0, nullptr);
62     implementation.UniformMatrix4x3fv(0, 0, 0, nullptr);
63     implementation.BlitFramebuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
64     implementation.RenderbufferStorageMultisample(0, 0, 0, 0, 0);
65     implementation.FramebufferTexture2DMultisample(0, 0, 0, 0, 0, 0);
66     implementation.FramebufferTextureLayer(0, 0, 0, 0, 0);
67     implementation.MapBufferRange(0, 0, 0, 0);
68     implementation.FlushMappedBufferRange(0, 0, 0);
69     implementation.BindVertexArray(0);
70     implementation.DeleteVertexArrays(0, nullptr);
71     implementation.GenVertexArrays(0, nullptr);
72     implementation.IsVertexArray(0);
73     implementation.GetIntegeri_v(0, 0, nullptr);
74     implementation.BeginTransformFeedback(0);
75     implementation.EndTransformFeedback();
76     implementation.BindBufferRange(0, 0, 0, 0, 0);
77     implementation.BindBufferBase(0, 0, 0);
78     implementation.TransformFeedbackVaryings(0, 0, nullptr, 0);
79     implementation.GetTransformFeedbackVarying(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
80     implementation.VertexAttribIPointer(0, 0, 0, 0, nullptr);
81     implementation.GetVertexAttribIiv(0, 0, nullptr);
82     implementation.GetVertexAttribIuiv(0, 0, nullptr);
83     implementation.VertexAttribI4i(0, 0, 0, 0, 0);
84     implementation.VertexAttribI4ui(0, 0, 0, 0, 0);
85     implementation.VertexAttribI4iv(0, nullptr);
86     implementation.VertexAttribI4uiv(0, nullptr);
87     implementation.GetUniformuiv(0, 0, nullptr);
88     implementation.GetFragDataLocation(0, nullptr);
89     implementation.Uniform1ui(0, 0);
90     implementation.Uniform2ui(0, 0, 0);
91     implementation.Uniform3ui(0, 0, 0, 0);
92     implementation.Uniform4ui(0, 0, 0, 0, 0);
93     implementation.Uniform1uiv(0, 0, nullptr);
94     implementation.Uniform2uiv(0, 0, nullptr);
95     implementation.Uniform3uiv(0, 0, nullptr);
96     implementation.Uniform4uiv(0, 0, nullptr);
97     implementation.ClearBufferiv(0, 0, nullptr);
98     implementation.ClearBufferuiv(0, 0, nullptr);
99     implementation.ClearBufferfv(0, 0, nullptr);
100     implementation.ClearBufferfi(0, 0, 0, 0);
101     implementation.GetStringi(0, 0);
102     implementation.CopyBufferSubData(0, 0, 0, 0, 0);
103     implementation.GetUniformIndices(0, 0, nullptr, nullptr);
104     implementation.GetActiveUniformsiv(0, 0, nullptr, 0, nullptr);
105     implementation.GetUniformBlockIndex(0, nullptr);
106     implementation.GetActiveUniformBlockiv(0, 0, 0, nullptr);
107     implementation.GetActiveUniformBlockName(0, 0, 0, nullptr, nullptr);
108     implementation.UniformBlockBinding(0, 0, 0);
109     implementation.DrawArraysInstanced(0, 0, 0, 0);
110     implementation.DrawElementsInstanced(0, 0, 0, nullptr, 0);
111     implementation.FenceSync(0, 0);
112     implementation.IsSync(0);
113     implementation.DeleteSync(0);
114     implementation.ClientWaitSync(0, 0, 0);
115     implementation.WaitSync(0, 0, 0);
116     implementation.GetInteger64v(0, nullptr);
117     implementation.GetSynciv(0, 0, 0, nullptr, nullptr);
118     implementation.GetInteger64i_v(0, 0, nullptr);
119     implementation.GetBufferParameteri64v(0, 0, nullptr);
120     implementation.GenSamplers(0, nullptr);
121     implementation.DeleteSamplers(0, nullptr);
122     implementation.IsSampler(0);
123     implementation.BindSampler(0, 0);
124     implementation.SamplerParameteri(0, 0, 0);
125     implementation.SamplerParameteriv(0, 0, nullptr);
126     implementation.SamplerParameterf(0, 0, 0);
127     implementation.SamplerParameterfv(0, 0, nullptr);
128     implementation.GetSamplerParameteriv(0, 0, nullptr);
129     implementation.GetSamplerParameterfv(0, 0, nullptr);
130     implementation.VertexAttribDivisor(0, 0);
131     implementation.BindTransformFeedback(0, 0);
132     implementation.DeleteTransformFeedbacks(0, nullptr);
133     implementation.GenTransformFeedbacks(0, nullptr);
134     implementation.IsTransformFeedback(0);
135     implementation.PauseTransformFeedback();
136     implementation.ResumeTransformFeedback();
137     implementation.GetProgramBinary(0, 0, nullptr, nullptr, nullptr);
138     implementation.ProgramBinary(0, 0, nullptr, 0);
139     implementation.ProgramParameteri(0, 0, 0);
140     implementation.InvalidateFramebuffer(0, 0, nullptr);
141     implementation.InvalidateSubFramebuffer(0, 0, nullptr, 0, 0, 0, 0);
142     implementation.TexStorage2D(0, 0, 0, 0, 0);
143     implementation.TexStorage3D(0, 0, 0, 0, 0, 0);
144     implementation.GetInternalformativ(0, 0, 0, 0, nullptr);
145     implementation.BlendBarrier();
146     DALI_TEST_CHECK(true); // Should get here!
147   }
148   catch(...)
149   {
150     DALI_TEST_CHECK(false); // Should not get here!
151   }
152 }
153
154 template<typename Impl>
155 void CreateWithBaseClassPtr()
156 {
157   // This derived destructor of the class is called which is purely for increasing function coverage
158   GlesAbstraction* abstraction = new Impl;
159   try
160   {
161     abstraction->ReadBuffer(0);
162     DALI_TEST_CHECK(true);
163   }
164   catch(...)
165   {
166     DALI_TEST_CHECK(false);
167   }
168   delete abstraction;
169 }
170
171 } // unnamed namespace
172
173 int UtcDaliGles2ImplementationConstruction(void)
174 {
175   CreateWithBaseClassPtr<Gles2Implementation>();
176   END_TEST;
177 }
178
179 int UtcDaliGles3ImplementationConstruction(void)
180 {
181   CreateWithBaseClassPtr<Gles3Implementation>();
182   END_TEST;
183 }
184
185 int UtcDaliGles2ImplementationMethods(void)
186 {
187   Gles2Implementation implementation;
188   CallAllMethods(implementation);
189   END_TEST;
190 }
191
192 int UtcDaliGles3ImplementationMethods(void)
193 {
194   Gles3Implementation implementation;
195   CallAllMethods(implementation);
196   END_TEST;
197 }