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);
273 control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 1);
274 DALI_TEST_EQUALS(1, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
275 control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 2);
276 DALI_TEST_EQUALS(2, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
277 control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 3);
278 DALI_TEST_EQUALS(3, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
279 control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 4);
280 DALI_TEST_EQUALS(4, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
282 control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 15);
283 DALI_TEST_EQUALS(15, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
284 control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 16);
285 DALI_TEST_EQUALS(16, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
286 control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 17);
287 DALI_TEST_EQUALS(17, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
288 control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 18);
289 DALI_TEST_EQUALS(18, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get<int>(), TEST_LOCATION);
294 int UtcDaliControlKeyInputFocus(void)
296 ToolkitTestApplication application;
297 Integration::Scene stage = application.GetScene();
299 DummyControl control;
301 PushButton pushButton1 = PushButton::New();
302 stage.Add(pushButton1);
304 pushButton1.SetKeyInputFocus();
305 DALI_TEST_CHECK(pushButton1.HasKeyInputFocus());
307 pushButton1.ClearKeyInputFocus();
308 DALI_TEST_CHECK(!pushButton1.HasKeyInputFocus());
312 int UtcDaliControlGetImplementationN(void)
314 ToolkitTestApplication application;
315 DummyControl control;
321 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
322 (void)controlImpl; // Avoid unused warning
323 tet_result(TET_FAIL);
325 catch(DaliException& exception)
327 tet_result(TET_PASS);
333 int UtcDaliControlGetImplementationConstN(void)
335 ToolkitTestApplication application;
336 DummyControl control;
342 const DummyControl constControl(control);
343 const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl);
344 (void)controlImpl; // Avoid unused warning
345 tet_result(TET_FAIL);
347 catch(DaliException& exception)
349 tet_result(TET_PASS);
355 int UtcDaliControlGetImplementationP(void)
357 ToolkitTestApplication application;
358 DummyControl control = DummyControl::New();
364 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
365 (void)controlImpl; // Avoid unused warning
366 tet_result(TET_PASS);
368 catch(DaliException& exception)
370 tet_result(TET_FAIL);
376 int UtcDaliControlGetImplementationConstP(void)
378 ToolkitTestApplication application;
379 DummyControl control = DummyControl::New();
384 const DummyControl constControl(control);
385 const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl);
386 (void)controlImpl; // Avoid unused warning
387 tet_result(TET_PASS);
389 catch(DaliException& exception)
391 tet_result(TET_FAIL);
397 int UtcDaliControlSignalConnectDisconnect(void)
399 ToolkitTestApplication application;
402 DummyControl dummy = DummyControlImpl::New();
404 Actor actor = Actor::New();
405 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
406 Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy);
407 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
409 if(dummyImpl == NULL)
411 tet_result(TET_FAIL);
415 actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1);
416 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION);
417 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
419 application.GetScene().Add(actor);
420 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION);
422 dummyImpl->mCustomSlot1Called = false;
423 actor.OnSceneSignal().Disconnect(dummyImpl, &DummyControlImpl::CustomSlot1);
424 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
425 application.GetScene().Remove(actor);
426 application.GetScene().Add(actor);
427 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
432 int UtcDaliControlSignalAutomaticDisconnect(void)
434 ToolkitTestApplication application;
436 Actor actor = Actor::New();
439 DummyControl dummy = DummyControlImpl::New();
440 Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy);
441 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
443 if(dummyImpl == NULL)
445 tet_result(TET_FAIL);
449 actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1);
450 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION);
451 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION);
453 application.GetScene().Add(actor);
454 DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION);
455 application.GetScene().Remove(actor);
457 // dummyControl automatically disconnects
459 DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION);
461 const Vector3 ignoredSize(20, 20, 0);
462 actor.SetProperty(Actor::Property::SIZE, ignoredSize);
466 int UtcDaliControlTestParameters(void)
468 ToolkitTestApplication application;
469 DummyControl test = DummyControl::New();
471 test.SetProperty(Actor::Property::SIZE, Vector3(0.7f, 0.7f, 0.7f));
473 application.GetScene().Add(test);
475 application.SendNotification();
476 application.Render();
478 float width = 640.0f;
479 float height = test.GetHeightForWidth(width);
480 DALI_TEST_EQUALS(640.0f, height, TEST_LOCATION);
481 DALI_TEST_EQUALS(640.0f, test.GetWidthForHeight(height), TEST_LOCATION);
483 test.KeyEventSignal();
485 // Provide coverage for pointer destructor
486 Control* testControlPtr = new Control;
487 DALI_TEST_CHECK(testControlPtr);
488 delete testControlPtr;
492 int UtcDaliControlBackgroundColor(void)
494 ToolkitTestApplication application;
495 Control control = Control::New();
497 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
499 control.SetProperty(Control::Property::BACKGROUND, Color::RED);
501 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
502 Property::Map* resultMap = propValue.GetMap();
503 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
504 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>() == Visual::COLOR);
505 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
506 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>() == Color::RED);
508 control.SetProperty(Control::Property::BACKGROUND, Color::YELLOW);
510 propValue = control.GetProperty(Control::Property::BACKGROUND);
511 resultMap = propValue.GetMap();
512 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
513 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>() == Color::YELLOW);
518 int UtcDaliControlBackgroundColorRendererCount(void)
520 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");
522 ToolkitTestApplication application;
523 Control control = Control::New();
524 control[Actor::Property::SIZE] = Vector2(100.0f, 100.0f);
525 application.GetScene().Add(control);
527 tet_infoline("Set semi transparent alpha with positive RGB values, 1 renderer should be created, but returned color should reflect what we set");
528 const Vector4 semiTransparent(1.0f, 0.75f, 0.5f, 0.5f);
529 control.SetBackgroundColor(semiTransparent);
530 application.SendNotification();
531 application.Render();
532 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
533 DALI_TEST_EQUALS(GetControlBackgroundColor(control), semiTransparent, TEST_LOCATION);
535 Renderer renderer = control.GetRendererAt(0);
536 DALI_TEST_CHECK(renderer);
538 tet_infoline("Set semi transparent alpha with positive RGB values, renderer should not be changed");
539 const Vector4 newColor(1.0f, 1.0f, 0.5f, 0.5f);
540 control.SetBackgroundColor(newColor);
541 application.SendNotification();
542 application.Render();
543 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
544 DALI_TEST_EQUALS(GetControlBackgroundColor(control), newColor, TEST_LOCATION);
545 DALI_TEST_EQUALS(renderer, control.GetRendererAt(0), TEST_LOCATION);
547 TestGlAbstraction& gl = application.GetGlAbstraction();
548 TraceCallStack& drawTrace = gl.GetDrawTrace();
549 drawTrace.Enable(true);
551 tet_infoline("Set transparent, 1 renderer should be created, but ensure nothing is drawn");
552 control.SetBackgroundColor(Color::TRANSPARENT);
553 application.SendNotification();
554 application.Render();
556 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
557 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
558 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION);
562 tet_infoline("Set control to clip its children, a renderer should be created which will be transparent");
563 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
564 application.SendNotification();
565 application.Render();
567 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
568 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
569 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), true, TEST_LOCATION);
571 tet_infoline("Set a color, only 1 renderer should exist");
572 control.SetBackgroundColor(Color::RED);
573 application.SendNotification();
574 application.Render();
575 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
576 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::RED, TEST_LOCATION);
578 tet_infoline("Clear the background, no renderers");
579 control.ClearBackground();
580 application.SendNotification();
581 application.Render();
582 DALI_TEST_EQUALS(control.GetRendererCount(), 0u, TEST_LOCATION);
584 tet_infoline("Set control to clip its children again, a renderer should be created which will be transparent");
585 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
586 application.SendNotification();
587 application.Render();
588 DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION);
589 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
593 tet_infoline("Disable clipping, render nothing");
594 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::DISABLED);
595 application.SendNotification();
596 application.Render();
598 DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION);
599 DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION);
604 int UtcDaliControlBackgroundImage(void)
606 ToolkitTestApplication application;
607 Control control = Control::New();
609 tet_infoline("Set first background image");
610 control.SetProperty(Control::Property::BACKGROUND, "TestImage");
612 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
613 Property::Map* resultMap = propValue.GetMap();
614 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
615 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>() == Visual::IMAGE);
616 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
617 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>() == "TestImage");
619 tet_infoline("Set replacement background image");
620 control.SetProperty(Control::Property::BACKGROUND, "TestImage2");
622 propValue = control.GetProperty(Control::Property::BACKGROUND);
623 resultMap = propValue.GetMap();
624 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
625 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>() == "TestImage2");
630 int UtcDaliControlBackgroundProperties(void)
632 ToolkitTestApplication application;
633 Control control = Control::New();
635 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
637 Property::Map imageMap;
638 imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE;
639 imageMap[ImageVisual::Property::URL] = "TestImage";
640 control.SetProperty(Control::Property::BACKGROUND, imageMap);
641 Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND);
642 Property::Map* resultMap = propValue.GetMap();
643 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
644 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
645 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
646 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "TestImage", TEST_LOCATION);
648 Property::Map rendererMap;
649 rendererMap[Visual::Property::TYPE] = Visual::COLOR;
650 rendererMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
651 control.SetProperty(Control::Property::BACKGROUND, rendererMap);
652 propValue = control.GetProperty(Control::Property::BACKGROUND);
653 resultMap = propValue.GetMap();
654 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
655 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
656 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
657 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::CYAN, TEST_LOCATION);
659 Property::Map emptyMap;
660 control.SetProperty(Control::Property::BACKGROUND, emptyMap);
661 DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get<Property::Map>().Empty());
664 control.SetProperty(Control::Property::BACKGROUND, "Foobar.png");
665 propValue = control.GetProperty(Control::Property::BACKGROUND);
666 resultMap = propValue.GetMap();
667 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
668 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "Foobar.png", TEST_LOCATION);
671 control.SetProperty(Control::Property::BACKGROUND, Color::RED);
672 propValue = control.GetProperty(Control::Property::BACKGROUND);
673 resultMap = propValue.GetMap();
674 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
675 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::RED, TEST_LOCATION);
680 int UtcDaliControlShadowProperties(void)
682 ToolkitTestApplication application;
683 Control control = Control::New();
685 DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get<Property::Map>().Empty());
687 Property::Map imageMap;
688 imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE;
689 imageMap[ImageVisual::Property::URL] = "TestImage";
690 control.SetProperty(DevelControl::Property::SHADOW, imageMap);
691 Property::Value propValue = control.GetProperty(DevelControl::Property::SHADOW);
692 Property::Map* resultMap = propValue.GetMap();
693 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
694 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION);
695 DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL));
696 DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get<std::string>(), "TestImage", TEST_LOCATION);
698 Property::Map colorMap;
699 colorMap[Visual::Property::TYPE] = Visual::COLOR;
700 colorMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
701 control.SetProperty(DevelControl::Property::SHADOW, colorMap);
702 propValue = control.GetProperty(DevelControl::Property::SHADOW);
703 resultMap = propValue.GetMap();
704 DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
705 DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
706 DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
707 DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::CYAN, TEST_LOCATION);
709 Property::Map emptyMap;
710 control.SetProperty(DevelControl::Property::SHADOW, emptyMap);
711 DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get<Property::Map>().Empty());
716 int UtcDaliControlKeyProperties(void)
718 ToolkitTestApplication application;
720 Control control = Control::New();
721 application.GetScene().Add(control);
723 DALI_TEST_EQUALS(control.HasKeyInputFocus(), control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
725 control.SetKeyInputFocus();
726 DALI_TEST_EQUALS(true, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
728 control.ClearKeyInputFocus();
729 DALI_TEST_EQUALS(false, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
731 control.SetProperty(Control::Property::KEY_INPUT_FOCUS, true);
732 DALI_TEST_EQUALS(true, control.HasKeyInputFocus(), TEST_LOCATION);
737 int UtcDaliControlGestureSignals(void)
739 ToolkitTestApplication application;
740 ConnectionTracker connectionTracker;
741 Control control = Control::New();
743 // Each gesture detector gets created when connecting to the gesture signals
744 DALI_TEST_CHECK(!control.GetTapGestureDetector());
745 control.ConnectSignal(&connectionTracker, "tapped", &TestVoidCallback);
746 DALI_TEST_CHECK(control.GetTapGestureDetector());
748 DALI_TEST_CHECK(!control.GetPanGestureDetector());
749 control.ConnectSignal(&connectionTracker, "panned", &TestVoidCallback);
750 DALI_TEST_CHECK(control.GetPanGestureDetector());
752 DALI_TEST_CHECK(!control.GetPinchGestureDetector());
753 control.ConnectSignal(&connectionTracker, "pinched", &TestVoidCallback);
754 DALI_TEST_CHECK(control.GetPinchGestureDetector());
756 DALI_TEST_CHECK(!control.GetLongPressGestureDetector());
757 control.ConnectSignal(&connectionTracker, "longPressed", &TestVoidCallback);
758 DALI_TEST_CHECK(control.GetLongPressGestureDetector());
763 int UtcDaliControlImplKeyInputFocusGainedSignal(void)
765 ToolkitTestApplication application;
767 Control control = Control::New();
768 application.GetScene().Add(control);
770 gKeyInputFocusCallBackCalled = false;
771 control.KeyInputFocusGainedSignal().Connect(&TestKeyInputFocusCallback);
773 application.SendNotification();
774 application.Render();
776 control.SetKeyInputFocus();
778 DALI_TEST_CHECK(control.HasKeyInputFocus());
780 DALI_TEST_CHECK(gKeyInputFocusCallBackCalled);
785 int UtcDaliControlImplKeyInputFocusLostSignal(void)
787 ToolkitTestApplication application;
789 Control control = Control::New();
790 application.GetScene().Add(control);
792 gKeyInputFocusCallBackCalled = false;
793 control.KeyInputFocusLostSignal().Connect(&TestKeyInputFocusCallback);
795 application.SendNotification();
796 application.Render();
798 control.SetKeyInputFocus();
800 DALI_TEST_CHECK(control.HasKeyInputFocus());
802 control.ClearKeyInputFocus();
804 DALI_TEST_CHECK(gKeyInputFocusCallBackCalled);
809 int UtcDaliControlImplGetControlExtensionP(void)
811 ToolkitTestApplication application;
812 Control control = Control::New();
814 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control);
816 DALI_TEST_CHECK(NULL == controlImpl.GetControlExtension());
821 int UtcDaliControlAutoClipping(void)
823 ToolkitTestApplication application;
824 Control control = Control::New();
826 tet_infoline("Test to see if a renderer gets added when we are clipping children");
828 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
830 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
832 application.GetScene().Add(control);
834 application.SendNotification();
835 application.Render();
837 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
842 int UtcDaliControlAutoClippingN(void)
844 ToolkitTestApplication application;
845 Control control = Control::New();
846 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED));
848 tet_infoline("Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals");
850 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
852 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
854 application.GetScene().Add(control);
856 application.SendNotification();
857 application.Render();
859 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Only 1, not 2
861 // Ensure the background color is still RED rather than what's set by the automatic clipping
862 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
863 Property::Map* map = value.GetMap();
864 DALI_TEST_CHECK(map);
865 Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR);
866 DALI_TEST_CHECK(colorValue);
867 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Color::RED, TEST_LOCATION);
872 int UtcDaliControlAutoClippingWhenAlreadyOnStage(void)
874 ToolkitTestApplication application;
875 Control control = Control::New();
877 tet_infoline("Test to see if a renderer gets added when we are clipping children and when already on stage");
879 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
881 application.GetScene().Add(control);
883 application.SendNotification();
884 application.Render();
886 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
888 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
890 application.SendNotification();
891 application.Render();
893 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
898 int UtcDaliControlAutoClippingWhenAlreadyOnStageN(void)
900 ToolkitTestApplication application;
901 Control control = Control::New();
902 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED));
904 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");
906 DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION);
908 application.GetScene().Add(control);
910 application.SendNotification();
911 application.Render();
913 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION);
915 control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN);
917 application.SendNotification();
918 application.Render();
920 DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Still should be 1
922 // Ensure the background color is still RED rather than what's set by the automatic clipping
923 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
924 Property::Map* map = value.GetMap();
925 DALI_TEST_CHECK(map);
926 Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR);
927 DALI_TEST_CHECK(colorValue);
928 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Color::RED, TEST_LOCATION);
933 int UtcDaliControlSetTransformSize(void)
935 ToolkitTestApplication application;
936 Control control = Control::New();
938 Property::Map transformMap;
939 transformMap.Add(Visual::Transform::Property::OFFSET, Vector2(10, 10))
940 .Add(Visual::Transform::Property::ANCHOR_POINT, Align::BOTTOM_END)
941 .Add(Visual::Transform::Property::ORIGIN, Align::BOTTOM_END)
942 .Add(Visual::Transform::Property::SIZE, Vector2(10, 20));
944 control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(Visual::Property::TRANSFORM, transformMap));
946 tet_infoline("Test to ensure that the control background transform does not get overwritten when adding to the stage");
948 application.GetScene().Add(control);
950 application.SendNotification();
951 application.Render();
953 // Ensure the transform property still matches what we set
954 Property::Value value = control.GetProperty(Control::Property::BACKGROUND);
955 Property::Map* map = value.GetMap();
956 DALI_TEST_CHECK(map);
957 Property::Value* transformValue = map->Find(Visual::Property::TRANSFORM);
958 DALI_TEST_CHECK(transformValue);
960 Property::Map* retMap = transformValue->GetMap();
961 DALI_TEST_CHECK(retMap);
962 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::OFFSET)->Get<Vector2>(), Vector2(10, 10), TEST_LOCATION);
963 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ANCHOR_POINT)->Get<int>(), (int)Align::BOTTOM_END, TEST_LOCATION);
964 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ORIGIN)->Get<int>(), (int)Align::BOTTOM_END, TEST_LOCATION);
965 DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::SIZE)->Get<Vector2>(), Vector2(10, 20), TEST_LOCATION);
970 int UtcDaliControlResourcesReady(void)
972 ToolkitTestApplication application;
973 tet_infoline("Register 2 visuals and check ResourceReady when a visual is disabled");
975 VisualFactory factory = VisualFactory::Get();
976 DALI_TEST_CHECK(factory);
978 Property::Map propertyMapLarge;
979 propertyMapLarge.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE);
980 propertyMapLarge.Insert(ImageVisual::Property::URL, TEST_LARGE_IMAGE_FILE_NAME);
982 Property::Map propertyMapSmall;
983 propertyMapSmall.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE);
984 propertyMapSmall.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
986 Visual::Base smallVisual = factory.CreateVisual(propertyMapSmall);
987 smallVisual.SetName("smallVisual");
988 DALI_TEST_CHECK(smallVisual);
990 DummyControl actor = DummyControl::New();
991 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
993 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, smallVisual);
995 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
997 Toolkit::Visual::ResourceStatus resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL);
998 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
999 DALI_TEST_EQUALS(actor.IsResourceReady(), false, TEST_LOCATION);
1000 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1002 application.GetScene().Add(actor);
1003 application.SendNotification();
1004 application.Render();
1006 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1008 application.SendNotification();
1009 application.Render();
1011 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL);
1012 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1013 DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION);
1014 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION);
1016 Visual::Base largeVisual = factory.CreateVisual(propertyMapLarge);
1017 largeVisual.SetName("largeVisual");
1018 DALI_TEST_CHECK(largeVisual);
1020 tet_infoline("Register Visual but set disabled, IsResourceReady should be true");
1022 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, largeVisual, false);
1024 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1025 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1027 application.SendNotification();
1029 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1030 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1031 DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION);
1032 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION);
1034 dummyImpl.EnableVisual(DummyControl::Property::TEST_VISUAL2, true);
1036 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1038 application.SendNotification();
1040 resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2);
1041 DALI_TEST_EQUALS(static_cast<int>(resourceStatus), static_cast<int>(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION);
1046 int UtcDaliControlResourcesReady02(void)
1048 ToolkitTestApplication application;
1049 tet_infoline("Change a resource during ResourceReady callback");
1051 gResourceReadySignalFired = false;
1053 Control control = Control::New();
1054 control.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1055 control.ResourceReadySignal().Connect(&ResourceReadySignal);
1057 Property::Map propertyMap;
1058 propertyMap.Insert(ImageVisual::Property::URL, "invalid.jpg");
1059 control.SetProperty(Control::Property::BACKGROUND, propertyMap);
1061 application.GetScene().Add(control);
1063 application.SendNotification();
1064 application.Render();
1066 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1068 application.SendNotification();
1069 application.Render();
1071 DALI_TEST_EQUALS(control.IsResourceReady(), true, TEST_LOCATION);
1072 DALI_TEST_EQUALS(gResourceReadySignalFired, true, TEST_LOCATION);
1073 gResourceReadySignalFired = false;
1078 int UtcDaliControlMarginProperty(void)
1080 ToolkitTestApplication application;
1082 Control control = Control::New();
1083 control.SetBackgroundColor(Color::BLUE);
1085 control.SetProperty(Control::Property::MARGIN, Extents(20, 10, 0, 0));
1087 application.GetScene().Add(control);
1089 application.SendNotification();
1090 application.Render();
1092 DALI_TEST_EQUALS(control.GetProperty<Extents>(Control::Property::MARGIN), Extents(20, 10, 0, 0), TEST_LOCATION);
1094 // Parent control has one ImageView as a Child.
1095 ImageView image = ImageView::New();
1096 image.SetBackgroundColor(Color::RED);
1097 image.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1098 image.SetProperty(Control::Property::PADDING, Extents(10, 10, 10, 10));
1101 application.SendNotification();
1102 application.Render();
1104 DALI_TEST_EQUALS(image.GetProperty<Extents>(Control::Property::PADDING), Extents(10, 10, 10, 10), TEST_LOCATION);
1109 int UtcDaliControlPaddingProperty(void)
1111 ToolkitTestApplication application;
1113 Control control = Control::New();
1114 control.SetBackgroundColor(Color::BLUE);
1116 control.SetProperty(Control::Property::PADDING, Extents(15, 10, 5, 10));
1118 application.GetScene().Add(control);
1120 application.SendNotification();
1121 application.Render();
1123 DALI_TEST_EQUALS(control.GetProperty<Extents>(Control::Property::PADDING), Extents(15, 10, 5, 10), TEST_LOCATION);
1125 Control child = Control::New();
1128 application.SendNotification();
1129 application.Render();
1131 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION);
1133 control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT);
1134 application.SendNotification();
1135 application.Render();
1136 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(10, 5, 0), TEST_LOCATION);
1138 control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT);
1139 application.SendNotification();
1140 application.Render();
1142 DALI_TEST_EQUALS(child.GetProperty<Vector3>(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION);
1147 int UtcDaliControlDoAction(void)
1149 ToolkitTestApplication application;
1150 tet_infoline("DoAction on a visual registered with a control");
1152 // Set up trace debug
1153 TestGlAbstraction& gl = application.GetGlAbstraction();
1154 TraceCallStack& textureTrace = gl.GetTextureTrace();
1155 textureTrace.Enable(true);
1157 //Created AnimatedImageVisual
1158 VisualFactory factory = VisualFactory::Get();
1159 Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions());
1161 DummyControl dummyControl = DummyControl::New(true);
1162 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1164 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
1165 dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1166 application.GetScene().Add(dummyControl);
1168 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1170 application.SendNotification();
1171 application.Render();
1172 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1173 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1174 textureTrace.Reset();
1176 Property::Map attributes;
1177 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes);
1179 tet_infoline("Perform RELOAD action. should reload Image and generate a texture");
1180 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1182 application.SendNotification();
1183 application.Render();
1184 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 1, TEST_LOCATION);
1185 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1189 int UtcDaliControlDoActionWhenNotStage(void)
1191 ToolkitTestApplication application;
1192 tet_infoline("DoAction on a visual registered with a control but not staged");
1194 // Set up trace debug
1195 TestGlAbstraction& gl = application.GetGlAbstraction();
1196 TraceCallStack& textureTrace = gl.GetTextureTrace();
1197 textureTrace.Enable(true);
1199 //Created AnimatedImageVisual
1200 VisualFactory factory = VisualFactory::Get();
1201 Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions());
1203 DummyControl dummyControl = DummyControl::New(true);
1204 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1206 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
1207 dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1209 application.SendNotification();
1210 application.Render();
1211 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1212 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION);
1213 textureTrace.Reset();
1215 Property::Map attributes;
1216 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes);
1218 tet_infoline("Perform RELOAD action. should reload Image and generate a texture");
1219 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1221 application.SendNotification();
1222 application.Render();
1223 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
1224 textureTrace.Reset();
1226 tet_infoline("Adding control to stage will in turn add the visual to the stage");
1228 application.GetScene().Add(dummyControl);
1229 application.SendNotification();
1230 application.Render();
1231 tet_infoline("No change in textures could occurs as already loaded and cached texture will be used");
1233 DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION);
1234 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION);
1235 textureTrace.Reset();