2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali-toolkit/public-api/controls/gl-view/gl-view.h>
25 #include <dali/devel-api/adaptor-framework/window-devel.h>
28 using namespace Dali::Toolkit;
30 // Positive test case for a method
31 int UtcDaliGlViewNew(void)
33 ToolkitTestApplication application;
34 tet_infoline(" UtcDaliGlViewNew");
35 GlView view = GlView::New(GlView::ColorFormat::RGBA8888);
36 DALI_TEST_CHECK(view);
40 // Positive test case for a method
41 int UtcDaliGlViewDownCast(void)
43 ToolkitTestApplication application;
44 tet_infoline(" UtcDaliGlViewDownCast");
46 GlView view = GlView::New(GlView::ColorFormat::RGB888);
47 BaseHandle handle(view);
49 Toolkit::GlView view2 = Toolkit::GlView::DownCast(handle);
50 DALI_TEST_CHECK(view);
51 DALI_TEST_CHECK(view2);
52 DALI_TEST_CHECK(view == view2);
56 int UtcDaliGlViewCopyAndAssignment(void)
58 ToolkitTestApplication application;
59 tet_infoline("UtcDaliGlViewCopyAndAssignment");
61 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
62 DALI_TEST_CHECK(view);
65 DALI_TEST_CHECK(view == copy);
68 DALI_TEST_CHECK(!assign);
71 DALI_TEST_CHECK(assign == view);
76 int UtcDaliGlViewMoveAssignment(void)
78 ToolkitTestApplication application;
79 tet_infoline("UtcDaliGlViewMoveAssignment");
81 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
82 DALI_TEST_EQUALS(1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION);
85 moved = std::move(view);
86 DALI_TEST_CHECK(moved);
87 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
88 DALI_TEST_CHECK(!view);
93 int UtcDaliGlViewSetGraphicsConfigGles20N(void)
95 ToolkitTestApplication application;
96 tet_infoline("UtcDaliGlViewSetGraphicsConfigGles20");
100 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_2_0);
101 DALI_TEST_CHECK(false);
105 DALI_TEST_CHECK(true);
110 int UtcDaliGlViewSetGraphicsConfigGles30(void)
112 ToolkitTestApplication application;
113 tet_infoline("UtcDaliGlViewSetGraphicsConfigGles30");
114 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
118 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_3_0);
119 DALI_TEST_CHECK(true);
123 DALI_TEST_CHECK(false);
128 int UtcDaliGlViewRenderingMode(void)
130 ToolkitTestApplication application;
131 tet_infoline("UtcDaliGlViewRenderingMode");
132 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
134 view.SetRenderingMode(GlView::RenderingMode::ON_DEMAND);
136 GlView::RenderingMode mode = view.GetRenderingMode();
138 DALI_TEST_EQUALS(GlView::RenderingMode::ON_DEMAND, mode, TEST_LOCATION);
143 int UtcDaliGlViewOnSizeSet(void)
145 ToolkitTestApplication application;
146 tet_infoline("UtcDaliGlViewOnSizeSet");
147 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
149 application.GetScene().Add(view);
151 application.SendNotification();
152 application.Render();
154 Vector3 size(200.0f, 300.0f, 0.0f);
155 view.SetProperty(Actor::Property::SIZE, size);
157 application.SendNotification();
158 application.Render();
160 DALI_TEST_EQUALS(view.GetCurrentProperty<Vector3>(Actor::Property::SIZE), size, TEST_LOCATION);
165 // Internal callback function
170 int glRenderFrame(void)
172 static unsigned int retFlag = 0;
176 void glTerminate(void)
180 void resizeCB(Vector2 size)
184 int UtcDaliGlViewRegisterGlCallbacksN(void)
186 ToolkitTestApplication application;
187 tet_infoline("UtcDaliGlViewRegisterGlCallbacksN");
192 view.RegisterGlCallbacks(Dali::MakeCallback(glInit), Dali::MakeCallback(glRenderFrame), Dali::MakeCallback(glTerminate));
193 DALI_TEST_CHECK(false);
197 DALI_TEST_CHECK(true);
202 int UtcDaliGlViewSetResizeCallbackN(void)
204 ToolkitTestApplication application;
205 tet_infoline("UtcDaliGlViewSetResizeCallback");
210 view.SetResizeCallback(Dali::MakeCallback(resizeCB));
211 DALI_TEST_CHECK(false);
215 DALI_TEST_CHECK(true);
220 int UtcDaliGlViewRenderOnce(void)
222 ToolkitTestApplication application;
223 tet_infoline("UtcDaliGlViewRenderOnce");
224 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
229 DALI_TEST_CHECK(true);
233 DALI_TEST_CHECK(false);
238 int UtcDaliGlViewWindowVisibilityChanged(void)
240 ToolkitTestApplication application;
241 tet_infoline("UtcDaliGlViewWindowVisibilityChanged");
242 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
243 application.GetScene().Add(view);
244 view.SetRenderingMode(GlView::RenderingMode::CONTINUOUS);
245 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_2_0);
246 view.RegisterGlCallbacks(Dali::MakeCallback(glInit), Dali::MakeCallback(glRenderFrame), Dali::MakeCallback(glTerminate));
247 view.SetResizeCallback(Dali::MakeCallback(resizeCB));
249 application.SendNotification();
250 application.Render();
252 Window window = DevelWindow::Get(view);
254 application.SendNotification();
255 application.Render();
257 DALI_TEST_CHECK(true);
261 int UtcDaliGlViewOnScene(void)
263 ToolkitTestApplication application;
265 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
268 application.GetScene().Add(view);
269 view.SetRenderingMode(GlView::RenderingMode::CONTINUOUS);
270 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_2_0);
271 view.RegisterGlCallbacks(Dali::MakeCallback(glInit), Dali::MakeCallback(glRenderFrame), Dali::MakeCallback(glTerminate));
273 application.SendNotification();
274 application.Render();
277 application.GetScene().Remove(view);
279 application.SendNotification();
280 application.Render();
282 DALI_TEST_CHECK(true);
286 int UtcDaliGlViewControlVisibilityChanged(void)
288 ToolkitTestApplication application;
290 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
291 application.GetScene().Add(view);
293 application.SendNotification();
294 application.Render();
296 view.SetProperty(Actor::Property::VISIBLE, false);
297 application.SendNotification();
298 application.Render();
299 DALI_TEST_CHECK(view.GetCurrentProperty<bool>(Actor::Property::VISIBLE) == false);
301 view.SetProperty(Actor::Property::VISIBLE, true);
302 application.SendNotification();
303 application.Render();
304 DALI_TEST_CHECK(view.GetCurrentProperty<bool>(Actor::Property::VISIBLE) == true);
309 int UtcDaliGlViewResize(void)
311 ToolkitTestApplication application;
312 tet_infoline("UtcDaliGlViewResize");
313 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
315 application.GetScene().Add(view);
316 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_2_0);
317 view.RegisterGlCallbacks(Dali::MakeCallback(glInit), Dali::MakeCallback(glRenderFrame), Dali::MakeCallback(glTerminate));
318 view.SetResizeCallback(Dali::MakeCallback(resizeCB));
319 view.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
320 view.SetProperty(Actor::Property::SIZE, Vector2(360.0f, 360.0f));
322 application.SendNotification();
323 application.Render();
325 //To GlViewRenderThread can recognize Resize signal the main thread have to sleep.
326 std::this_thread::sleep_for(std::chrono::milliseconds(100));
328 application.SendNotification();
329 application.Render();
331 DALI_TEST_CHECK(true);