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 // Need to override adaptor classes for toolkit test harness, so include
22 // test harness headers before dali headers.
23 #include <dali-toolkit-test-suite-utils.h>
25 #include <dali-toolkit/dali-toolkit.h>
26 #include <dali-toolkit/devel-api/controls/alignment/alignment.h>
27 #include <dali-toolkit/devel-api/controls/control-devel.h>
28 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
29 #include <dali-toolkit/devel-api/visuals/image-visual-actions-devel.h>
30 #include <dali-toolkit/public-api/align-enumerations.h>
33 #include <toolkit-event-thread-callback.h>
35 #include "dummy-control.h"
38 using namespace Dali::Toolkit;
40 void utc_dali_toolkit_control_startup(void)
42 test_return_value = TET_UNDEF;
45 void utc_dali_toolkit_control_cleanup(void)
47 test_return_value = TET_PASS;
50 ///////////////////////////////////////////////////////////////////////////////////////////////////
54 bool gObjectCreatedCallBackCalled;
56 void TestCallback(BaseHandle handle)
58 gObjectCreatedCallBackCalled = true;
61 void TestVoidCallback()
65 static bool gKeyInputFocusCallBackCalled;
67 static void TestKeyInputFocusCallback(Control control)
69 tet_infoline(" TestKeyInputFocusCallback");
71 gKeyInputFocusCallBackCalled = true;
74 const char* TEST_LARGE_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/tbcol.png";
75 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
76 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/Kid1.svg";
78 Vector4 GetControlBackgroundColor(Control& control)
80 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
81 Property::Map* resultMap = propValue.GetMap();
82 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
85 resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get(color);
90 bool gResourceReadySignalFired = false;
92 void ResourceReadySignal(Control control)
94 if(control.GetVisualResourceStatus(Control::Property::BACKGROUND) == Visual::ResourceStatus::FAILED)
96 Property::Map propertyMap;
97 propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME);
98 control.SetProperty(Control::Property::BACKGROUND, propertyMap);
101 gResourceReadySignalFired = true;
106 ///////////////////////////////////////////////////////////////////////////////////////////////////
108 int UtcDaliControlConstructor(void)
110 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
114 DALI_TEST_CHECK(!Control::DownCast(dummy));
116 dummy = DummyControl::New();
118 DALI_TEST_CHECK(Control::DownCast(dummy));
122 int UtcDaliControlNew(void)
124 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
128 DALI_TEST_CHECK(!Control::DownCast(control));
130 control = Control::New();
132 DALI_TEST_CHECK(Control::DownCast(control));
136 int UtcDaliControlRegister(void)
138 ToolkitTestApplication application;
140 // Ensure the object is registered after creation
141 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
142 DALI_TEST_CHECK(registry);
144 gObjectCreatedCallBackCalled = false;
145 registry.ObjectCreatedSignal().Connect(&TestCallback);
147 Alignment alignment = Alignment::New();
149 DALI_TEST_CHECK(gObjectCreatedCallBackCalled);
153 int UtcDaliControlCopyAndAssignment(void)
155 ToolkitTestApplication application;
157 DummyControl control = DummyControl::New();
158 Control emptyControl;
160 Control controlCopy(control);
161 DALI_TEST_CHECK(control == controlCopy);
163 Control emptyControlCopy(emptyControl);
164 DALI_TEST_CHECK(emptyControl == emptyControlCopy);
166 Control controlEquals;
167 controlEquals = control;
168 DALI_TEST_CHECK(control == controlEquals);
170 Control emptyControlEquals;
171 emptyControlEquals = emptyControl;
172 DALI_TEST_CHECK(emptyControl == emptyControlEquals);
176 DALI_TEST_CHECK(control == controlCopy);
180 int UtcDaliControlMoveConstructor(void)
182 ToolkitTestApplication application;
184 Control control = Control::New();
185 DALI_TEST_EQUALS(1, control.GetBaseObject().ReferenceCount(), TEST_LOCATION);
186 control.SetProperty(Actor::Property::SENSITIVE, false);
187 DALI_TEST_CHECK(false == control.GetProperty<bool>(Actor::Property::SENSITIVE));
189 Control moved = std::move(control);
190 DALI_TEST_CHECK(moved);
191 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
192 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
193 DALI_TEST_CHECK(!control);
198 int UtcDaliControlMoveAssignment(void)
200 ToolkitTestApplication application;
202 Control control = Control::New();
203 DALI_TEST_EQUALS(1, control.GetBaseObject().ReferenceCount(), TEST_LOCATION);
204 control.SetProperty(Actor::Property::SENSITIVE, false);
205 DALI_TEST_CHECK(false == control.GetProperty<bool>(Actor::Property::SENSITIVE));
208 moved = std::move(control);
209 DALI_TEST_CHECK(moved);
210 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
211 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
212 DALI_TEST_CHECK(!control);
217 int UtcDaliControlDownCast(void)
219 ToolkitTestApplication application;
221 DummyControl control;
223 DALI_TEST_CHECK(!Control::DownCast(control));
225 control = DummyControl::New();
227 DALI_TEST_CHECK(Control::DownCast(control));
231 DALI_TEST_CHECK(!Control::DownCast(actor));
233 actor = Actor::New();
235 DALI_TEST_CHECK(!Control::DownCast(actor));
239 int UtcDaliControlDownCastTemplate(void)
241 ToolkitTestApplication application;
243 DummyControl control;
245 DALI_TEST_CHECK(!DummyControl::DownCast(control));
247 control = DummyControl::New();
249 DALI_TEST_CHECK(DummyControl::DownCast(control));
253 DALI_TEST_CHECK(!DummyControl::DownCast(actor));
255 actor = Actor::New();
257 DALI_TEST_CHECK(!DummyControl::DownCast(actor));
261 int UtcDaliControlNavigationProperties(void)
263 ToolkitTestApplication application;
265 Control control = Control::New();
266 application.GetScene().Add(control);
268 DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
269 DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
270 DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
271 DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
272 DALI_TEST_EQUALS(-1, control.GetProperty( DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION);
273 DALI_TEST_EQUALS(-1, control.GetProperty( DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION);
275 control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 1);
276 DALI_TEST_EQUALS(1, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
277 control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 2);
278 DALI_TEST_EQUALS(2, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
279 control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 3);
280 DALI_TEST_EQUALS(3, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
281 control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 4);
282 DALI_TEST_EQUALS(4, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
284 control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 15);
285 DALI_TEST_EQUALS(15, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
286 control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 16);
287 DALI_TEST_EQUALS(16, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
288 control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 17);
289 DALI_TEST_EQUALS(17, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
290 control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 18);
291 DALI_TEST_EQUALS(18, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
292 control.SetProperty(DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, 19);
293 DALI_TEST_EQUALS(19, control.GetProperty( DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION);
294 control.SetProperty(DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, 20);
295 DALI_TEST_EQUALS(20, control.GetProperty( DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION);
300 int UtcDaliControlKeyInputFocus(void)
302 ToolkitTestApplication application;
303 Integration::Scene stage = application.GetScene();
305 DummyControl control;
307 PushButton pushButton1 = PushButton::New();
308 stage.Add(pushButton1);
310 pushButton1.SetKeyInputFocus();
311 DALI_TEST_CHECK(pushButton1.HasKeyInputFocus());
313 pushButton1.ClearKeyInputFocus();
314 DALI_TEST_CHECK(!pushButton1.HasKeyInputFocus());
318 int UtcDaliControlGetImplementationN(void)
320 ToolkitTestApplication application;
321 DummyControl control;
327 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
328 (void)controlImpl; // Avoid unused warning
329 tet_result(TET_FAIL);
331 catch(DaliException& exception)
333 tet_result(TET_PASS);
339 int UtcDaliControlGetImplementationConstN(void)
341 ToolkitTestApplication application;
342 DummyControl control;
348 const DummyControl constControl(control);
349 const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl);
350 (void)controlImpl; // Avoid unused warning
351 tet_result(TET_FAIL);
353 catch(DaliException& exception)
355 tet_result(TET_PASS);
361 int UtcDaliControlGetImplementationP(void)
363 ToolkitTestApplication application;
364 DummyControl control = DummyControl::New();
370 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
371 (void)controlImpl; // Avoid unused warning
372 tet_result(TET_PASS);
374 catch(DaliException& exception)
376 tet_result(TET_FAIL);
382 int UtcDaliControlGetImplementationConstP(void)
384 ToolkitTestApplication application;
385 DummyControl control = DummyControl::New();
390 const DummyControl constControl(control);
391 const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl);
392 (void)controlImpl; // Avoid unused warning
393 tet_result(TET_PASS);
395 catch(DaliException& exception)
397 tet_result(TET_FAIL);
403 int UtcDaliControlSignalConnectDisconnect(void)
405 ToolkitTestApplication application;
408 DummyControl dummy = DummyControlImpl::New();
410 Actor actor = Actor::New();
411 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
412 Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy);
413 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
415 if(dummyImpl == NULL)
417 tet_result(TET_FAIL);
421 actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1);
422 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION);
423 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
425 application.GetScene().Add(actor);
426 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION);
428 dummyImpl->mCustomSlot1Called = false;
429 actor.OnSceneSignal().Disconnect(dummyImpl, &DummyControlImpl::CustomSlot1);
430 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
431 application.GetScene().Remove(actor);
432 application.GetScene().Add(actor);
433 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
438 int UtcDaliControlSignalAutomaticDisconnect(void)
440 ToolkitTestApplication application;
442 Actor actor = Actor::New();
445 DummyControl dummy = DummyControlImpl::New();
446 Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy);
447 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
449 if(dummyImpl == NULL)
451 tet_result(TET_FAIL);
455 actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1);
456 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION);
457 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
459 application.GetScene().Add(actor);
460 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION);
461 application.GetScene().Remove(actor);
463 // dummyControl automatically disconnects
465 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
467 const Vector3 ignoredSize(20, 20, 0);
468 actor.SetProperty(Actor::Property::SIZE, ignoredSize);
472 int UtcDaliControlTestParameters(void)
474 ToolkitTestApplication application;
475 DummyControl test = DummyControl::New();
477 test.SetProperty(Actor::Property::SIZE, Vector3(0.7f, 0.7f, 0.7f));
479 application.GetScene().Add(test);
481 application.SendNotification();
482 application.Render();
484 float width = 640.0f;
485 float height = test.GetHeightForWidth(width);
486 DALI_TEST_EQUALS(640.0f, height, TEST_LOCATION);
487 DALI_TEST_EQUALS(640.0f, test.GetWidthForHeight(height), TEST_LOCATION);
489 test.KeyEventSignal();
491 // Provide coverage for pointer destructor
492 Control* testControlPtr = new Control;
493 DALI_TEST_CHECK(testControlPtr);
494 delete testControlPtr;
498 int UtcDaliControlBackgroundColor(void)
500 ToolkitTestApplication application;
501 Control control = Control::New();
503 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
505 control.SetProperty(Control::Property::BACKGROUND, Color::RED);
507 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
508 Property::Map* resultMap = propValue.GetMap();
509 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
510 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>() == Visual::COLOR);
511 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
512 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>() == Color::RED);
514 control.SetProperty(Control::Property::BACKGROUND, Color::YELLOW);
516 propValue = control.GetProperty(Control::Property::BACKGROUND);
517 resultMap = propValue.GetMap();
518 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
519 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>() == Color::YELLOW);
524 int UtcDaliControlBackgroundColorRendererCount(void)
526 tet_infoline("Test ensures we only create renderers when non-transparent color is requested or if we our clipping-mode is set to CLIP_CHILDREN");
528 ToolkitTestApplication application;
529 Control control = Control::New();
530 control[Actor::Property::SIZE] = Vector2(100.0f, 100.0f);
531 application.GetScene().Add(control);
533 tet_infoline("Set semi transparent alpha with positive RGB values, 1 renderer should be created, but returned color should reflect what we set");
534 const Vector4 semiTransparent(1.0f, 0.75f, 0.5f, 0.5f);
535 control.SetBackgroundColor(semiTransparent);
536 application.SendNotification();
537 application.Render();
538 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
539 DALI_TEST_EQUALS(GetControlBackgroundColor(control), semiTransparent, TEST_LOCATION);
541 Renderer renderer = control.GetRendererAt(0);
542 DALI_TEST_CHECK(renderer);
544 tet_infoline("Set semi transparent alpha with positive RGB values, renderer should not be changed");
545 const Vector4 newColor(1.0f, 1.0f, 0.5f, 0.5f);
546 control.SetBackgroundColor(newColor);
547 application.SendNotification();
548 application.Render();
549 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
550 DALI_TEST_EQUALS(GetControlBackgroundColor(control), newColor, TEST_LOCATION);
551 DALI_TEST_EQUALS(renderer, control.GetRendererAt(0), TEST_LOCATION);
553 TestGlAbstraction& gl = application.GetGlAbstraction();
554 TraceCallStack& drawTrace = gl.GetDrawTrace();
555 drawTrace.Enable(true);
557 tet_infoline("Set transparent, 1 renderer should be created, but ensure nothing is drawn");
558 control.SetBackgroundColor(Color::TRANSPARENT);
559 application.SendNotification();
560 application.Render();
562 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
563 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
564 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION);
568 tet_infoline("Set control to clip its children, a renderer should be created which will be transparent");
569 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
570 application.SendNotification();
571 application.Render();
573 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
574 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
575 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), true, TEST_LOCATION);
577 tet_infoline("Set a color, only 1 renderer should exist");
578 control.SetBackgroundColor(Color::RED);
579 application.SendNotification();
580 application.Render();
581 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
582 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::RED, TEST_LOCATION);
584 tet_infoline("Clear the background, no renderers");
585 control.ClearBackground();
586 application.SendNotification();
587 application.Render();
588 DALI_TEST_EQUALS(control.GetRendererCount(), 0u, TEST_LOCATION);
590 tet_infoline("Set control to clip its children again, a renderer should be created which will be transparent");
591 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
592 application.SendNotification();
593 application.Render();
594 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
595 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
599 tet_infoline("Disable clipping, render nothing");
600 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::DISABLED);
601 application.SendNotification();
602 application.Render();
604 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
605 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION);
610 int UtcDaliControlBackgroundImage(void)
612 ToolkitTestApplication application;
613 Control control = Control::New();
615 tet_infoline("Set first background image");
616 control.SetProperty(Control::Property::BACKGROUND, "TestImage");
618 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
619 Property::Map* resultMap = propValue.GetMap();
620 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
621 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>() == Visual::IMAGE);
622 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
623 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>() == "TestImage");
625 tet_infoline("Set replacement background image");
626 control.SetProperty(Control::Property::BACKGROUND, "TestImage2");
628 propValue = control.GetProperty(Control::Property::BACKGROUND);
629 resultMap = propValue.GetMap();
630 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
631 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>() == "TestImage2");
636 int UtcDaliControlBackgroundProperties(void)
638 ToolkitTestApplication application;
639 Control control = Control::New();
641 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
643 Property::Map imageMap;
644 imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE;
645 imageMap[ImageVisual::Property::URL] = "TestImage";
646 control.SetProperty(Control::Property::BACKGROUND, imageMap);
647 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
648 Property::Map* resultMap = propValue.GetMap();
649 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
650 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
651 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
652 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "TestImage", TEST_LOCATION);
654 Property::Map rendererMap;
655 rendererMap[Visual::Property::TYPE] = Visual::COLOR;
656 rendererMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
657 control.SetProperty(Control::Property::BACKGROUND, rendererMap);
658 propValue = control.GetProperty(Control::Property::BACKGROUND);
659 resultMap = propValue.GetMap();
660 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
661 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
662 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
663 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::CYAN, TEST_LOCATION);
665 Property::Map emptyMap;
666 control.SetProperty(Control::Property::BACKGROUND, emptyMap);
667 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
670 control.SetProperty(Control::Property::BACKGROUND, "Foobar.png");
671 propValue = control.GetProperty(Control::Property::BACKGROUND);
672 resultMap = propValue.GetMap();
673 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
674 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "Foobar.png", TEST_LOCATION);
677 control.SetProperty(Control::Property::BACKGROUND, Color::RED);
678 propValue = control.GetProperty(Control::Property::BACKGROUND);
679 resultMap = propValue.GetMap();
680 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
681 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::RED, TEST_LOCATION);
686 int UtcDaliControlShadowProperties(void)
688 ToolkitTestApplication application;
689 Control control = Control::New();
691 DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get<Property::Map>().Empty());
693 Property::Map imageMap;
694 imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE;
695 imageMap[ImageVisual::Property::URL] = "TestImage";
696 control.SetProperty(DevelControl::Property::SHADOW, imageMap);
697 Property::Value propValue = control.GetProperty(DevelControl::Property::SHADOW);
698 Property::Map* resultMap = propValue.GetMap();
699 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
700 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
701 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
702 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "TestImage", TEST_LOCATION);
704 Property::Map colorMap;
705 colorMap[Visual::Property::TYPE] = Visual::COLOR;
706 colorMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
707 control.SetProperty(DevelControl::Property::SHADOW, colorMap);
708 propValue = control.GetProperty(DevelControl::Property::SHADOW);
709 resultMap = propValue.GetMap();
710 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
711 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
712 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
713 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::CYAN, TEST_LOCATION);
715 Property::Map emptyMap;
716 control.SetProperty(DevelControl::Property::SHADOW, emptyMap);
717 DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get<Property::Map>().Empty());
722 int UtcDaliControlKeyProperties(void)
724 ToolkitTestApplication application;
726 Control control = Control::New();
727 application.GetScene().Add(control);
729 DALI_TEST_EQUALS(control.HasKeyInputFocus(), control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
731 control.SetKeyInputFocus();
732 DALI_TEST_EQUALS(true, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
734 control.ClearKeyInputFocus();
735 DALI_TEST_EQUALS(false, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
737 control.SetProperty(Control::Property::KEY_INPUT_FOCUS, true);
738 DALI_TEST_EQUALS(true, control.HasKeyInputFocus(), TEST_LOCATION);
743 int UtcDaliControlGestureSignals(void)
745 ToolkitTestApplication application;
746 ConnectionTracker connectionTracker;
747 Control control = Control::New();
749 // Each gesture detector gets created when connecting to the gesture signals
750 DALI_TEST_CHECK(!control.GetTapGestureDetector());
751 control.ConnectSignal(&connectionTracker, "tapped", &TestVoidCallback);
752 DALI_TEST_CHECK(control.GetTapGestureDetector());
754 DALI_TEST_CHECK(!control.GetPanGestureDetector());
755 control.ConnectSignal(&connectionTracker, "panned", &TestVoidCallback);
756 DALI_TEST_CHECK(control.GetPanGestureDetector());
758 DALI_TEST_CHECK(!control.GetPinchGestureDetector());
759 control.ConnectSignal(&connectionTracker, "pinched", &TestVoidCallback);
760 DALI_TEST_CHECK(control.GetPinchGestureDetector());
762 DALI_TEST_CHECK(!control.GetLongPressGestureDetector());
763 control.ConnectSignal(&connectionTracker, "longPressed", &TestVoidCallback);
764 DALI_TEST_CHECK(control.GetLongPressGestureDetector());
769 int UtcDaliControlImplKeyInputFocusGainedSignal(void)
771 ToolkitTestApplication application;
773 Control control = Control::New();
774 application.GetScene().Add(control);
776 gKeyInputFocusCallBackCalled = false;
777 control.KeyInputFocusGainedSignal().Connect(&TestKeyInputFocusCallback);
779 application.SendNotification();
780 application.Render();
782 control.SetKeyInputFocus();
784 DALI_TEST_CHECK(control.HasKeyInputFocus());
786 DALI_TEST_CHECK(gKeyInputFocusCallBackCalled);
791 int UtcDaliControlImplKeyInputFocusLostSignal(void)
793 ToolkitTestApplication application;
795 Control control = Control::New();
796 application.GetScene().Add(control);
798 gKeyInputFocusCallBackCalled = false;
799 control.KeyInputFocusLostSignal().Connect(&TestKeyInputFocusCallback);
801 application.SendNotification();
802 application.Render();
804 control.SetKeyInputFocus();
806 DALI_TEST_CHECK(control.HasKeyInputFocus());
808 control.ClearKeyInputFocus();
810 DALI_TEST_CHECK(gKeyInputFocusCallBackCalled);
815 int UtcDaliControlImplGetControlExtensionP(void)
817 ToolkitTestApplication application;
818 Control control = Control::New();
820 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
822 DALI_TEST_CHECK(NULL == controlImpl.GetControlExtension());
827 int UtcDaliControlAutoClipping(void)
829 ToolkitTestApplication application;
830 Control control = Control::New();
832 tet_infoline("Test to see if a renderer gets added when we are clipping children");
834 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
836 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
838 application.GetScene().Add(control);
840 application.SendNotification();
841 application.Render();
843 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
848 int UtcDaliControlAutoClippingN(void)
850 ToolkitTestApplication application;
851 Control control = Control::New();
852 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED));
854 tet_infoline("Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals");
856 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
858 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
860 application.GetScene().Add(control);
862 application.SendNotification();
863 application.Render();
865 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Only 1, not 2
867 // Ensure the background color is still RED rather than what's set by the automatic clipping
868 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
869 Property::Map* map = value.GetMap();
870 DALI_TEST_CHECK(map);
871 Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR);
872 DALI_TEST_CHECK(colorValue);
873 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Color::RED, TEST_LOCATION);
878 int UtcDaliControlAutoClippingWhenAlreadyOnStage(void)
880 ToolkitTestApplication application;
881 Control control = Control::New();
883 tet_infoline("Test to see if a renderer gets added when we are clipping children and when already on stage");
885 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
887 application.GetScene().Add(control);
889 application.SendNotification();
890 application.Render();
892 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
894 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
896 application.SendNotification();
897 application.Render();
899 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
904 int UtcDaliControlAutoClippingWhenAlreadyOnStageN(void)
906 ToolkitTestApplication application;
907 Control control = Control::New();
908 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED));
910 tet_infoline("Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals and when already on stage");
912 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
914 application.GetScene().Add(control);
916 application.SendNotification();
917 application.Render();
919 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
921 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
923 application.SendNotification();
924 application.Render();
926 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Still should be 1
928 // Ensure the background color is still RED rather than what's set by the automatic clipping
929 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
930 Property::Map* map = value.GetMap();
931 DALI_TEST_CHECK(map);
932 Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR);
933 DALI_TEST_CHECK(colorValue);
934 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Color::RED, TEST_LOCATION);
939 int UtcDaliControlSetTransformSize(void)
941 ToolkitTestApplication application;
942 Control control = Control::New();
944 Property::Map transformMap;
945 transformMap.Add(Visual::Transform::Property::OFFSET, Vector2(10, 10))
946 .Add(Visual::Transform::Property::ANCHOR_POINT, Align::BOTTOM_END)
947 .Add(Visual::Transform::Property::ORIGIN, Align::BOTTOM_END)
948 .Add(Visual::Transform::Property::SIZE, Vector2(10, 20));
950 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(Visual::Property::TRANSFORM, transformMap));
952 tet_infoline("Test to ensure that the control background transform does not get overwritten when adding to the stage");
954 application.GetScene().Add(control);
956 application.SendNotification();
957 application.Render();
959 // Ensure the transform property still matches what we set
960 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
961 Property::Map* map = value.GetMap();
962 DALI_TEST_CHECK(map);
963 Property::Value* transformValue = map->Find(Visual::Property::TRANSFORM);
964 DALI_TEST_CHECK(transformValue);
966 Property::Map* retMap = transformValue->GetMap();
967 DALI_TEST_CHECK(retMap);
968 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::OFFSET)->Get<Vector2>(), Vector2(10, 10), TEST_LOCATION);
969 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ANCHOR_POINT)->Get<int>(), (int)Align::BOTTOM_END, TEST_LOCATION);
970 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ORIGIN)->Get<int>(), (int)Align::BOTTOM_END, TEST_LOCATION);
971 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::SIZE)->Get<Vector2>(), Vector2(10, 20), TEST_LOCATION);
976 int UtcDaliControlResourcesReady(void)
978 ToolkitTestApplication application;
979 tet_infoline("Register 2 visuals and check ResourceReady when a visual is disabled");
981 VisualFactory factory = VisualFactory::Get();
982 DALI_TEST_CHECK(factory);
984 Property::Map propertyMapLarge;
985 propertyMapLarge.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE);
986 propertyMapLarge.Insert(ImageVisual::Property::URL, TEST_LARGE_IMAGE_FILE_NAME);
988 Property::Map propertyMapSmall;
989 propertyMapSmall.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE);
990 propertyMapSmall.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
992 Visual::Base smallVisual = factory.CreateVisual(propertyMapSmall);
993 smallVisual.SetName("smallVisual");
994 DALI_TEST_CHECK(smallVisual);
996 DummyControl actor = DummyControl::New();
997 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
999 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, smallVisual);
1001 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1003 Toolkit::Visual::ResourceStatus resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL);
1004 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1005 DALI_TEST_EQUALS(actor.IsResourceReady(), false, TEST_LOCATION);
1006 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1008 application.GetScene().Add(actor);
1009 application.SendNotification();
1010 application.Render();
1012 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1014 application.SendNotification();
1015 application.Render();
1017 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL);
1018 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1019 DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION);
1020 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION);
1022 Visual::Base largeVisual = factory.CreateVisual(propertyMapLarge);
1023 largeVisual.SetName("largeVisual");
1024 DALI_TEST_CHECK(largeVisual);
1026 tet_infoline("Register Visual but set disabled, IsResourceReady should be true");
1028 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, largeVisual, false);
1030 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1031 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1033 application.SendNotification();
1035 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1036 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1037 DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION);
1038 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1040 dummyImpl.EnableVisual(DummyControl::Property::TEST_VISUAL2, true);
1042 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1044 application.SendNotification();
1046 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1047 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION);
1052 int UtcDaliControlResourcesReady02(void)
1054 ToolkitTestApplication application;
1055 tet_infoline("Change a resource during ResourceReady callback");
1057 gResourceReadySignalFired = false;
1059 Control control = Control::New();
1060 control.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1061 control.ResourceReadySignal().Connect(&ResourceReadySignal);
1063 Property::Map propertyMap;
1064 propertyMap.Insert(ImageVisual::Property::URL, "invalid.jpg");
1065 control.SetProperty(Control::Property::BACKGROUND, propertyMap);
1067 application.GetScene().Add(control);
1069 application.SendNotification();
1070 application.Render();
1072 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1074 application.SendNotification();
1075 application.Render();
1077 DALI_TEST_EQUALS(control.IsResourceReady(), true, TEST_LOCATION);
1078 DALI_TEST_EQUALS(gResourceReadySignalFired, true, TEST_LOCATION);
1079 gResourceReadySignalFired = false;
1084 int UtcDaliControlMarginProperty(void)
1086 ToolkitTestApplication application;
1088 Control control = Control::New();
1089 control.SetBackgroundColor(Color::BLUE);
1091 control.SetProperty(Control::Property::MARGIN, Extents(20, 10, 0, 0));
1093 application.GetScene().Add(control);
1095 application.SendNotification();
1096 application.Render();
1098 DALI_TEST_EQUALS(control.GetProperty<Extents>(Control::Property::MARGIN), Extents(20, 10, 0, 0), TEST_LOCATION);
1100 // Parent control has one ImageView as a Child.
1101 ImageView image = ImageView::New();
1102 image.SetBackgroundColor(Color::RED);
1103 image.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1104 image.SetProperty(Control::Property::PADDING, Extents(10, 10, 10, 10));
1107 application.SendNotification();
1108 application.Render();
1110 DALI_TEST_EQUALS(image.GetProperty<Extents>(Control::Property::PADDING), Extents(10, 10, 10, 10), TEST_LOCATION);
1115 int UtcDaliControlPaddingProperty(void)
1117 ToolkitTestApplication application;
1119 Control control = Control::New();
1120 control.SetBackgroundColor(Color::BLUE);
1122 control.SetProperty(Control::Property::PADDING, Extents(15, 10, 5, 10));
1124 application.GetScene().Add(control);
1126 application.SendNotification();
1127 application.Render();
1129 DALI_TEST_EQUALS(control.GetProperty<Extents>(Control::Property::PADDING), Extents(15, 10, 5, 10), TEST_LOCATION);
1131 Control child = Control::New();
1134 application.SendNotification();
1135 application.Render();
1137 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION);
1139 control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT);
1140 application.SendNotification();
1141 application.Render();
1142 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(10, 5, 0), TEST_LOCATION);
1144 control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT);
1145 application.SendNotification();
1146 application.Render();
1148 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION);
1153 int UtcDaliControlDoAction(void)
1155 ToolkitTestApplication application;
1156 tet_infoline("DoAction on a visual registered with a control");
1158 // Set up trace debug
1159 TestGlAbstraction& gl = application.GetGlAbstraction();
1160 TraceCallStack& textureTrace = gl.GetTextureTrace();
1161 textureTrace.Enable(true);
1163 //Created AnimatedImageVisual
1164 VisualFactory factory = VisualFactory::Get();
1165 Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions());
1167 DummyControl dummyControl = DummyControl::New(true);
1168 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1170 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
1171 dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1172 application.GetScene().Add(dummyControl);
1174 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1176 application.SendNotification();
1177 application.Render();
1178 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1179 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1180 textureTrace.Reset();
1182 Property::Map attributes;
1183 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes);
1185 tet_infoline("Perform RELOAD action. should reload Image and generate a texture");
1186 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1188 application.SendNotification();
1189 application.Render();
1190 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 1, TEST_LOCATION);
1191 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1195 int UtcDaliControlDoActionWhenNotStage(void)
1197 ToolkitTestApplication application;
1198 tet_infoline("DoAction on a visual registered with a control but not staged");
1200 // Set up trace debug
1201 TestGlAbstraction& gl = application.GetGlAbstraction();
1202 TraceCallStack& textureTrace = gl.GetTextureTrace();
1203 textureTrace.Enable(true);
1205 //Created AnimatedImageVisual
1206 VisualFactory factory = VisualFactory::Get();
1207 Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions());
1209 DummyControl dummyControl = DummyControl::New(true);
1210 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1212 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
1213 dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1215 application.SendNotification();
1216 application.Render();
1217 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1218 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION);
1219 textureTrace.Reset();
1221 Property::Map attributes;
1222 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes);
1224 tet_infoline("Perform RELOAD action. should reload Image and generate a texture");
1225 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1227 application.SendNotification();
1228 application.Render();
1229 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1230 textureTrace.Reset();
1232 tet_infoline("Adding control to stage will in turn add the visual to the stage");
1234 application.GetScene().Add(dummyControl);
1235 application.SendNotification();
1236 application.Render();
1237 tet_infoline("No change in textures could occurs as already loaded and cached texture will be used");
1239 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1240 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION);
1241 textureTrace.Reset();