2 * Copyright (c) 2021 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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali-toolkit/public-api/controls/gl-view/gl-view.h>
23 #include <dali/devel-api/adaptor-framework/window-devel.h>
26 using namespace Dali::Toolkit;
28 // Positive test case for a method
29 int UtcDaliGlViewNew(void)
31 ToolkitTestApplication application;
32 tet_infoline(" UtcDaliGlViewNew");
33 GlView view = GlView::New(GlView::ColorFormat::RGBA8888);
34 DALI_TEST_CHECK( view );
38 // Positive test case for a method
39 int UtcDaliGlViewDownCast(void)
41 ToolkitTestApplication application;
42 tet_infoline(" UtcDaliGlViewDownCast");
44 GlView view = GlView::New(GlView::ColorFormat::RGB888);
45 BaseHandle handle(view);
47 Toolkit::GlView view2 = Toolkit::GlView::DownCast( handle );
48 DALI_TEST_CHECK( view );
49 DALI_TEST_CHECK( view2 );
50 DALI_TEST_CHECK( view == view2 );
54 int UtcDaliGlViewCopyAndAssignment(void)
56 ToolkitTestApplication application;
57 tet_infoline("UtcDaliGlViewCopyAndAssignment");
59 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
60 DALI_TEST_CHECK( view );
63 DALI_TEST_CHECK( view == copy );
66 DALI_TEST_CHECK( !assign );
69 DALI_TEST_CHECK( assign == view );
74 int UtcDaliGlViewMoveAssignment(void)
76 ToolkitTestApplication application;
77 tet_infoline("UtcDaliGlViewMoveAssignment");
79 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
80 DALI_TEST_EQUALS( 1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION );
83 moved = std::move( view );
84 DALI_TEST_CHECK( moved );
85 DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
86 DALI_TEST_CHECK( !view );
91 int UtcDaliGlViewSetGraphicsConfigGles20N(void)
93 ToolkitTestApplication application;
94 tet_infoline("UtcDaliGlViewSetGraphicsConfigGles20");
98 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_2_0);
99 DALI_TEST_CHECK(false);
103 DALI_TEST_CHECK(true);
108 int UtcDaliGlViewSetGraphicsConfigGles30(void)
110 ToolkitTestApplication application;
111 tet_infoline("UtcDaliGlViewSetGraphicsConfigGles30");
112 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
116 view.SetGraphicsConfig(true, true, 0, GlView::GraphicsApiVersion::GLES_VERSION_3_0);
117 DALI_TEST_CHECK(true);
121 DALI_TEST_CHECK(false);
126 int UtcDaliGlViewRenderingMode(void)
128 ToolkitTestApplication application;
129 tet_infoline("UtcDaliGlViewRenderingMode");
130 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
132 view.SetRenderingMode(GlView::RenderingMode::ON_DEMAND);
134 GlView::RenderingMode mode = view.GetRenderingMode();
136 DALI_TEST_EQUALS( GlView::RenderingMode::ON_DEMAND, mode, TEST_LOCATION );
141 int UtcDaliGlViewOnSizeSet(void)
143 ToolkitTestApplication application;
144 tet_infoline("UtcDaliGlViewOnSizeSet");
145 GlView view = Toolkit::GlView::New(GlView::ColorFormat::RGB888);
148 application.GetScene().Add( view );
150 application.SendNotification();
151 application.Render();
153 Vector3 size( 200.0f, 300.0f, 0.0f );
154 view.SetProperty( Actor::Property::SIZE, size );
156 application.SendNotification();
157 application.Render();
159 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);