2 * Copyright (c) 2015 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>
24 #include "toolkit-style-monitor.h"
27 #include <dali-toolkit/dali-toolkit.h>
28 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
29 #include <dali/integration-api/events/key-event-integ.h>
30 #include <dali/integration-api/events/wheel-event-integ.h>
31 #include <dali/integration-api/events/long-press-gesture-event.h>
32 #include <dali/integration-api/events/pinch-gesture-event.h>
33 #include <dali/integration-api/events/pan-gesture-event.h>
34 #include <dali/integration-api/events/tap-gesture-event.h>
35 #include <dali/integration-api/events/touch-event-integ.h>
36 #include <dali/integration-api/events/hover-event-integ.h>
39 #include "dummy-control.h"
42 using namespace Dali::Toolkit;
44 void utc_dali_toolkit_control_impl_startup(void)
46 test_return_value = TET_UNDEF;
49 void utc_dali_toolkit_control_impl_cleanup(void)
51 test_return_value = TET_PASS;
54 int UtcDaliControlImplNew(void)
56 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
60 DALI_TEST_CHECK( !Control::DownCast(control) );
62 control = Toolkit::Internal::Control::New();
64 DALI_TEST_CHECK( Control::DownCast(control) );
69 int UtcDaliControlImplEnableGestureDetector(void)
71 ToolkitTestApplication application;
73 // Enable individually
75 DummyControl dummy = DummyControl::New();
76 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
78 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
79 dummyImpl.EnableGestureDetection(Gesture::Pinch);
80 DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() );
82 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
83 dummyImpl.EnableGestureDetection(Gesture::Pan);
84 DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() );
86 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
87 dummyImpl.EnableGestureDetection(Gesture::Tap);
88 DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() );
90 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
91 dummyImpl.EnableGestureDetection(Gesture::LongPress);
92 DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() );
97 DummyControl dummy = DummyControl::New();
98 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
100 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
101 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
102 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
103 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
105 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
107 DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() );
108 DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() );
109 DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() );
110 DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() );
112 // Enable when already enabled
114 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
116 DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() );
117 DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() );
118 DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() );
119 DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() );
124 int UtcDaliControlImplDisableGestureDetector(void)
126 ToolkitTestApplication application;
128 // Disable individually
130 DummyControl dummy = DummyControl::New();
131 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
133 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
135 DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() );
136 dummyImpl.DisableGestureDetection(Gesture::Pinch);
137 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
139 DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() );
140 dummyImpl.DisableGestureDetection(Gesture::Pan);
141 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
143 DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() );
144 dummyImpl.DisableGestureDetection(Gesture::Tap);
145 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
147 DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() );
148 dummyImpl.DisableGestureDetection(Gesture::LongPress);
149 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
154 DummyControl dummy = DummyControl::New();
155 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
157 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
159 DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() );
160 DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() );
161 DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() );
162 DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() );
164 dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
166 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
167 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
168 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
169 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
172 // Disable When not enabled
174 DummyControl dummy = DummyControl::New();
175 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
177 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
178 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
179 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
180 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
182 dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
184 DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() );
185 DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() );
186 DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() );
187 DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() );
190 // Ensure control is detached if gesture detector is not deleted
192 DummyControl dummy = DummyControl::New();
193 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
195 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
197 PinchGestureDetector pinch = dummyImpl.GetPinchGestureDetector();
198 PanGestureDetector pan = dummyImpl.GetPanGestureDetector();
199 TapGestureDetector tap = dummyImpl.GetTapGestureDetector();
200 LongPressGestureDetector longPress = dummyImpl.GetLongPressGestureDetector();
202 DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), false, TEST_LOCATION );
203 DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), false, TEST_LOCATION );
204 DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), false, TEST_LOCATION );
205 DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), false, TEST_LOCATION );
207 dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
209 DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), true, TEST_LOCATION );
210 DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), true, TEST_LOCATION );
211 DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), true, TEST_LOCATION );
212 DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), true, TEST_LOCATION );
217 int UtcDaliControlImplOnGestureMethods(void)
219 ToolkitTestApplication application;
221 // Check gesture actually happens
223 DummyControl dummy = DummyControl::New(true);
224 dummy.SetSize( Vector2(100.0f, 100.0f ) );
226 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
227 Stage::GetCurrent().Add(dummy);
229 // Render and notify a couple of times
230 application.SendNotification();
231 application.Render();
232 application.SendNotification();
233 application.Render();
235 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
236 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
238 DALI_TEST_CHECK( dummyImpl.pinchCalled == false );
239 Integration::PinchGestureEvent pinch(Gesture::Started);
242 pinch.centerPoint = Vector2(20.0f, 20.0f);
243 application.ProcessEvent(pinch);
244 DALI_TEST_CHECK( dummyImpl.pinchCalled == true );
246 DALI_TEST_CHECK( dummyImpl.panCalled == false );
247 Integration::PanGestureEvent pan(Gesture::Possible);
248 pan.previousPosition = Vector2(10.0f, 20.0f);
249 pan.currentPosition = Vector2(20.0f, 20.0f);
251 pan.numberOfTouches = 1u;
252 application.ProcessEvent(pan);
253 pan.state = Gesture::Started;
254 application.ProcessEvent(pan);
255 DALI_TEST_CHECK( dummyImpl.panCalled == true );
257 DALI_TEST_CHECK( dummyImpl.tapCalled == false );
258 Integration::TapGestureEvent tap(Gesture::Possible);
259 tap.numberOfTaps = 1u;
260 tap.numberOfTouches = 1u;
261 tap.point = Vector2(50.0f, 50.0f);
262 application.ProcessEvent(tap);
263 tap.state = Gesture::Started;
264 application.ProcessEvent(tap);
265 DALI_TEST_CHECK( dummyImpl.tapCalled == true );
267 DALI_TEST_CHECK( dummyImpl.longPressCalled == false );
268 Integration::LongPressGestureEvent longPress(Gesture::Possible);
269 longPress.numberOfTouches = 1u;
270 longPress.point = Vector2(50.0f, 50.0f);
271 application.ProcessEvent(longPress);
272 longPress.state = Gesture::Started;
273 application.ProcessEvent(longPress);
274 DALI_TEST_CHECK( dummyImpl.longPressCalled == true );
275 longPress.state = Gesture::Finished;
276 application.ProcessEvent(longPress);
278 Stage::GetCurrent().Remove(dummy);
281 // Ensure full code coverage
283 DummyControl dummy = DummyControl::New();
284 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
286 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
287 Stage::GetCurrent().Add(dummy);
289 // Render and notify a couple of times
290 application.SendNotification();
291 application.Render();
292 application.SendNotification();
293 application.Render();
295 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
296 dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
298 DALI_TEST_CHECK( dummy.GetCurrentScale().x != 10.0f );
299 Integration::PinchGestureEvent pinch(Gesture::Started);
302 pinch.centerPoint = Vector2(20.0f, 20.0f);
303 application.ProcessEvent(pinch);
305 // Render and notify a couple of times
306 application.SendNotification();
307 application.Render();
308 application.SendNotification();
309 application.Render();
310 DALI_TEST_CHECK( dummy.GetCurrentScale().x == 10.0f );
312 Integration::PanGestureEvent pan(Gesture::Possible);
313 pan.previousPosition = Vector2(10.0f, 20.0f);
314 pan.currentPosition = Vector2(20.0f, 20.0f);
316 pan.numberOfTouches = 1u;
317 application.ProcessEvent(pan);
318 pan.state = Gesture::Started;
319 application.ProcessEvent(pan);
321 Integration::TapGestureEvent tap(Gesture::Possible);
322 tap.numberOfTaps = 1u;
323 tap.numberOfTouches = 1u;
324 tap.point = Vector2(50.0f, 50.0f);
325 application.ProcessEvent(tap);
326 tap.state = Gesture::Started;
327 application.ProcessEvent(tap);
329 Integration::LongPressGestureEvent longPress(Gesture::Possible);
330 longPress.numberOfTouches = 1u;
331 longPress.point = Vector2(50.0f, 50.0f);
332 application.ProcessEvent(longPress);
333 longPress.state = Gesture::Started;
334 application.ProcessEvent(longPress);
335 longPress.state = Gesture::Finished;
336 application.ProcessEvent(longPress);
338 Stage::GetCurrent().Remove(dummy);
343 int UtcDaliControlImplChildAddAndRemove(void)
345 ToolkitTestApplication application;
348 DummyControl dummy = DummyControl::New( true );
349 Stage::GetCurrent().Add(dummy);
350 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
352 application.Render();
353 application.SendNotification();
355 DALI_TEST_EQUALS( dummyImpl.childAddCalled, false, TEST_LOCATION );
356 DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION );
357 Actor actor = Actor::New();
359 DALI_TEST_EQUALS( dummyImpl.childAddCalled, true, TEST_LOCATION );
360 DALI_TEST_EQUALS( dummy.GetChildCount(), 1u, TEST_LOCATION );
362 application.Render();
363 application.SendNotification();
365 DALI_TEST_EQUALS( dummyImpl.childRemoveCalled, false, TEST_LOCATION );
366 dummy.Remove( actor );
367 DALI_TEST_EQUALS( dummyImpl.childRemoveCalled, true, TEST_LOCATION );
368 DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION );
370 application.Render();
371 application.SendNotification();
373 Stage::GetCurrent().Remove(dummy);
376 // Ensure full code coverage
378 DummyControl dummy = DummyControl::New();
379 Stage::GetCurrent().Add(dummy);
381 application.Render();
382 application.SendNotification();
384 DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION );
385 Actor actor = Actor::New();
387 DALI_TEST_EQUALS( dummy.GetChildCount(), 1u, TEST_LOCATION );
389 application.Render();
390 application.SendNotification();
392 dummy.Remove( actor );
393 DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION );
395 application.Render();
396 application.SendNotification();
398 Stage::GetCurrent().Remove(dummy);
403 int UtcDaliControlImplStageConnection(void)
405 ToolkitTestApplication application;
408 DummyControl dummy = DummyControl::New( true );
409 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
411 DALI_TEST_EQUALS( dummyImpl.stageConnectionCalled, false, TEST_LOCATION );
412 Stage::GetCurrent().Add(dummy);
413 application.Render();
414 application.SendNotification();
415 DALI_TEST_EQUALS( dummyImpl.stageConnectionCalled, true, TEST_LOCATION );
417 DALI_TEST_EQUALS( dummyImpl.stageDisconnectionCalled, false, TEST_LOCATION );
418 Stage::GetCurrent().Remove(dummy);
419 application.Render();
420 application.SendNotification();
421 DALI_TEST_EQUALS( dummyImpl.stageDisconnectionCalled, true, TEST_LOCATION );
424 // Ensure full code coverage
426 unsigned int stageChildren = Stage::GetCurrent().GetLayer(0).GetChildCount();
427 DummyControl dummy = DummyControl::New();
429 DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION );
430 Stage::GetCurrent().Add(dummy);
431 application.Render();
432 application.SendNotification();
433 DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren + 1, TEST_LOCATION );
435 Stage::GetCurrent().Remove(dummy);
436 application.Render();
437 application.SendNotification();
438 DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION );
443 int UtcDaliControlImplSizeSetP(void)
445 ToolkitTestApplication application;
448 DummyControl dummy = DummyControl::New( true );
449 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
451 Stage::GetCurrent().Add(dummy);
452 application.Render();
453 application.SendNotification();
455 DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size not set, no onSizeSet called
456 Vector2 size(100.0f, 200.0f);
457 dummy.SetSize( size );
459 DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size is going to get negotiated, no onSizeSet called
461 application.SendNotification();
462 application.Render();
464 DALI_TEST_EQUALS( size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION );
465 DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, true, TEST_LOCATION );
467 Stage::GetCurrent().Remove(dummy);
473 int UtcDaliControlImplSizeSet2P(void)
475 ToolkitTestApplication application;
478 DummyControl dummy = DummyControl::New();
479 Stage::GetCurrent().Add(dummy);
481 Vector2 size(100.0f, 200.0f);
482 DALI_TEST_CHECK( size != dummy.GetCurrentSize().GetVectorXY() );
484 application.SendNotification();
485 application.Render();
489 application.SendNotification();
490 application.Render();
492 DALI_TEST_EQUALS(size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION);
494 Stage::GetCurrent().Remove(dummy);
500 int UtcDaliControlImplSizeAnimation(void)
502 ToolkitTestApplication application;
505 DummyControl dummy = DummyControl::New( true );
506 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
508 Stage::GetCurrent().Add(dummy);
510 DALI_TEST_EQUALS( dummyImpl.sizeAnimationCalled, false, TEST_LOCATION );
511 Animation animation = Animation::New(1.0f);
512 animation.AnimateTo( Property( dummy, Actor::Property::SIZE ), Vector3( 100.0f, 150.0f, 200.0f ) );
515 application.Render();
516 application.SendNotification();
517 application.Render();
518 application.SendNotification();
520 DALI_TEST_EQUALS( dummyImpl.sizeAnimationCalled, true, TEST_LOCATION );
522 Stage::GetCurrent().Remove(dummy);
525 // Ensure full code coverage
527 DummyControl dummy = DummyControl::New();
529 Stage::GetCurrent().Add(dummy);
531 Animation animation = Animation::New(1.0f);
532 animation.AnimateTo( Property( dummy, Actor::Property::SIZE ), Vector3( 100.0f, 150.0f, 200.0f ) );
535 application.Render();
536 application.SendNotification();
537 application.Render();
538 application.SendNotification();
540 Stage::GetCurrent().Remove(dummy);
545 ///////////////////////////////////////////////////////////////////////////////////////////////////
547 int UtcDaliControlImplTouchEvent(void)
549 ToolkitTestApplication application;
552 DummyControl dummy = DummyControl::New( true );
553 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
555 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
556 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
557 Stage::GetCurrent().Add(dummy);
559 application.Render();
560 application.SendNotification();
561 application.Render();
562 application.SendNotification();
564 DALI_TEST_EQUALS( dummyImpl.touchEventCalled, false, TEST_LOCATION );
565 Integration::TouchEvent touchEvent(1);
566 Integration::Point point;
567 point.SetDeviceId( 1 );
568 point.SetState( PointState::DOWN );
569 point.SetScreenPosition( Vector2( 20.0f, 20.0f ) );
570 touchEvent.AddPoint(point);
571 application.ProcessEvent(touchEvent);
572 DALI_TEST_EQUALS( dummyImpl.touchEventCalled, true, TEST_LOCATION );
574 Stage::GetCurrent().Remove(dummy);
577 // Ensure full code coverage
579 DummyControl dummy = DummyControl::New();
581 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
582 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
583 Stage::GetCurrent().Add(dummy);
585 application.Render();
586 application.SendNotification();
587 application.Render();
588 application.SendNotification();
590 Integration::TouchEvent touchEvent(1);
591 Integration::Point point;
592 point.SetDeviceId( 1 );
593 point.SetState( PointState::DOWN );
594 point.SetScreenPosition( Vector2( 20.0f, 20.0f ) );
595 touchEvent.AddPoint(point);
596 application.ProcessEvent(touchEvent);
598 Stage::GetCurrent().Remove(dummy);
603 int UtcDaliControlImplHoverEvent(void)
605 ToolkitTestApplication application;
608 DummyControl dummy = DummyControl::New( true );
609 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
611 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
612 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
613 Stage::GetCurrent().Add(dummy);
615 application.Render();
616 application.SendNotification();
617 application.Render();
618 application.SendNotification();
620 DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, false, TEST_LOCATION );
621 Integration::HoverEvent event(1);
622 Integration::Point point;
623 point.SetDeviceId( 1 );
624 point.SetState( PointState::MOTION );
625 point.SetScreenPosition( Vector2( 20.0f, 20.0f ) );
626 event.AddPoint(point);
627 application.ProcessEvent( event );
628 DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, true, TEST_LOCATION );
630 Stage::GetCurrent().Remove(dummy);
633 // Ensure full code coverage
635 DummyControl dummy = DummyControl::New();
637 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
638 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
639 Stage::GetCurrent().Add(dummy);
641 application.Render();
642 application.SendNotification();
643 application.Render();
644 application.SendNotification();
646 Integration::HoverEvent event(1);
647 Integration::Point point;
648 point.SetDeviceId( 1 );
649 point.SetState( PointState::MOTION );
650 point.SetScreenPosition( Vector2( 20.0f, 20.0f ) );
651 event.AddPoint(point);
652 application.ProcessEvent( event );
654 Stage::GetCurrent().Remove(dummy);
659 ///////////////////////////////////////////////////////////////////////////////////////////////////
662 int UtcDaliControlImplKeyEvent(void)
664 ToolkitTestApplication application;
667 DummyControl dummy = DummyControl::New( true );
668 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
670 Stage::GetCurrent().Add(dummy);
671 dummy.SetKeyInputFocus();
673 application.Render();
674 application.SendNotification();
675 application.Render();
676 application.SendNotification();
678 DALI_TEST_EQUALS( dummyImpl.keyEventCalled, false, TEST_LOCATION );
679 Integration::KeyEvent keyEvent;
680 application.ProcessEvent(keyEvent);
681 DALI_TEST_EQUALS( dummyImpl.keyEventCalled, true, TEST_LOCATION );
683 Stage::GetCurrent().Remove(dummy);
686 // Ensure full code coverage
688 DummyControl dummy = DummyControl::New();
690 Stage::GetCurrent().Add(dummy);
691 dummy.SetKeyInputFocus();
693 application.Render();
694 application.SendNotification();
695 application.Render();
696 application.SendNotification();
698 Integration::KeyEvent keyEvent;
699 application.ProcessEvent(keyEvent);
701 Stage::GetCurrent().Remove(dummy);
706 int UtcDaliControlImplKeyInputFocusGained(void)
708 ToolkitTestApplication application;
711 DummyControl dummy = DummyControl::New( true );
712 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
714 Stage::GetCurrent().Add(dummy);
716 DALI_TEST_EQUALS( dummyImpl.keyInputFocusGained, false, TEST_LOCATION );
718 dummy.SetKeyInputFocus();
720 DALI_TEST_EQUALS( dummyImpl.keyInputFocusGained, true, TEST_LOCATION );
722 Stage::GetCurrent().Remove(dummy);
725 // Ensure full code coverage
727 DummyControl dummy = DummyControl::New();
729 Stage::GetCurrent().Add(dummy);
730 dummy.SetKeyInputFocus();
731 Stage::GetCurrent().Remove(dummy);
736 int UtcDaliControlImplKeyInputFocusLost(void)
738 ToolkitTestApplication application;
741 DummyControl dummy = DummyControl::New( true );
742 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
744 Stage::GetCurrent().Add(dummy);
746 DALI_TEST_EQUALS( dummyImpl.keyInputFocusLost, false, TEST_LOCATION );
748 dummy.SetKeyInputFocus();
749 dummy.ClearKeyInputFocus();
751 DALI_TEST_EQUALS( dummyImpl.keyInputFocusLost, true, TEST_LOCATION );
753 Stage::GetCurrent().Remove(dummy);
756 // Ensure full code coverage
758 DummyControl dummy = DummyControl::New();
760 Stage::GetCurrent().Add(dummy);
761 dummy.SetKeyInputFocus();
762 dummy.ClearKeyInputFocus();
764 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
766 dummyImpl.IsKeyboardNavigationSupported();
767 dummyImpl.IsKeyboardFocusGroup();
769 Stage::GetCurrent().Remove(dummy);
774 int UtcDaliControlImplTypeRegistry(void)
776 ToolkitTestApplication application;
780 type = TypeRegistry::Get().GetTypeInfo( "Control" );
781 DALI_TEST_CHECK( type );
782 BaseHandle handle = type.CreateInstance();
783 DALI_TEST_CHECK( handle );
785 // Check if it's a control
786 DALI_TEST_CHECK( Control::DownCast(handle) );
791 ///////////////////////////////////////////////////////////////////////////////////////////////////
794 static bool WheelEventCallback(Actor actor, const WheelEvent& event)
800 int UtcDaliControlImplWheelEvent(void)
802 ToolkitTestApplication application;
805 DummyControl dummy = DummyControl::New( true );
806 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
808 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
809 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
810 Stage::GetCurrent().Add(dummy);
812 dummy.WheelEventSignal().Connect(&WheelEventCallback);
814 application.Render();
815 application.SendNotification();
816 application.Render();
817 application.SendNotification();
819 DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, false, TEST_LOCATION );
821 // simulate a wheel event
822 Vector2 screenCoordinates( 10.0f, 10.0f );
823 Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u );
824 application.ProcessEvent( event );
825 DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, true, TEST_LOCATION );
827 Stage::GetCurrent().Remove(dummy);
830 // Ensure full code coverage
832 DummyControl dummy = DummyControl::New();
834 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
835 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
836 Stage::GetCurrent().Add(dummy);
838 dummy.WheelEventSignal().Connect(&WheelEventCallback);
840 application.Render();
841 application.SendNotification();
842 application.Render();
843 application.SendNotification();
845 // simulate a wheel event
846 Vector2 screenCoordinates( 20.0f, 20.0f );
847 Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u );
848 application.ProcessEvent( event );
850 Stage::GetCurrent().Remove(dummy);
855 int UtcDaliControlImplSetStyleName(void)
857 ToolkitTestApplication application;
860 DummyControl dummy = DummyControl::New( true );
862 dummy.SetSize( Vector2( 100.0f, 100.0f ) );
863 dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
864 Stage::GetCurrent().Add(dummy);
866 dummy.SetStyleName("TestStyle");
868 DALI_TEST_CHECK( dummy.GetStyleName() == "TestStyle" );
870 Stage::GetCurrent().Remove(dummy);
875 int UtcDaliControlImplOnStyleChangeN(void)
877 ToolkitTestApplication application;
878 Control dummy = Control::New();
879 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
881 // test that style manager is being used, passing an empty handle does nothing but does not crash either
882 Dali::Toolkit::StyleManager styleManager;
883 controlImpl.OnStyleChange( styleManager, StyleChange::THEME_CHANGE );
884 // no crash so test passes
885 tet_result(TET_PASS);
891 int UtcDaliControlImplOnAccessibilityPanP(void)
893 ToolkitTestApplication application;
894 Control dummy = Control::New();
895 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
898 DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityPan( pan ), TEST_LOCATION );
903 int UtcDaliControlImplOnAccessibilityTouchP(void)
905 ToolkitTestApplication application;
906 Control dummy = Control::New();
907 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
909 DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityTouch( touch ), TEST_LOCATION );
914 int UtcDaliControlImplOnAccessibilityActivatedP(void)
916 ToolkitTestApplication application;
918 Control dummy = Control::New();
919 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
920 DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityActivated(), TEST_LOCATION );
922 // Invoke the control's activate action
923 TypeInfo type = TypeRegistry::Get().GetTypeInfo( "Control" );
924 DALI_TEST_CHECK( type );
926 BaseHandle handle = type.CreateInstance();
927 DALI_TEST_CHECK( handle );
929 Property::Map attributes;
930 DALI_TEST_EQUALS( false, handle.DoAction("accessibilityActivated", attributes), TEST_LOCATION );
935 int UtcDaliControlImplGetNextKeyboardFocusableActorP(void)
937 ToolkitTestApplication application;
938 Control dummy = Control::New();
939 Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
941 Actor currentFocusedActor;
942 Actor result = controlImpl.GetNextKeyboardFocusableActor( currentFocusedActor, Control::KeyboardFocus::LEFT, false );
944 DALI_TEST_EQUALS( result, currentFocusedActor, TEST_LOCATION );
949 int UtcDaliControlImplRegisterThenReRegisterVisual(void)
951 ToolkitTestApplication application;
953 DummyControl dummy = DummyControl::New();
954 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
956 Property::Index index =1;
957 Actor placementActor = Actor::New();
959 DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) );
960 DALI_TEST_CHECK( !dummyImpl.GetPlacementActor( index ) );
962 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
963 Toolkit::Visual::Base visual;
966 map[Visual::Property::TYPE] = Visual::COLOR;
967 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
969 visual = visualFactory.CreateVisual( map );
970 DALI_TEST_CHECK(visual);
972 // Register index with a color visual
973 dummyImpl.RegisterVisual( index, placementActor, visual );
975 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
976 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor );
978 Property::Map newMap;
979 newMap[Visual::Property::TYPE] = Visual::COLOR;
980 newMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
982 visual = visualFactory.CreateVisual( newMap );
983 DALI_TEST_CHECK(visual);
985 // ReRegister with altered color visual
986 dummyImpl.RegisterVisual( index, placementActor, visual );
988 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
989 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor );
991 tet_result(TET_PASS);
996 int UtcDaliControlImplRegisterVisaulThenReRegisterToSelf(void)
998 ToolkitTestApplication application;
1000 DummyControl dummy = DummyControl::New();
1001 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1003 Property::Index index =1;
1004 Actor placementActor = Actor::New();
1006 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1007 Toolkit::Visual::Base visual;
1010 map[Visual::Property::TYPE] = Visual::COLOR;
1011 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1013 visual = visualFactory.CreateVisual( map );
1014 DALI_TEST_CHECK(visual);
1016 // Register index with a color visual
1017 dummyImpl.RegisterVisual( index, placementActor, visual );
1019 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
1020 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor );
1022 // ReRegister to self
1023 dummyImpl.RegisterVisual( index, dummy, visual );
1025 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
1026 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == dummy );
1031 int UtcDaliControlImplRegisterVisualToSelf(void)
1033 ToolkitTestApplication application;
1035 Test::ObjectDestructionTracker objectDestructionTracker;
1038 DummyControl dummy = DummyControl::New();
1039 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1040 objectDestructionTracker.Start( dummy );
1042 Property::Index index = 1;
1043 Actor placementActor = Actor::New();
1045 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1046 Toolkit::Visual::Base visual;
1049 map[Visual::Property::TYPE] = Visual::COLOR;
1050 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1052 visual = visualFactory.CreateVisual( map );
1053 DALI_TEST_CHECK(visual);
1056 dummyImpl.RegisterVisual( index, dummy, visual );
1058 DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet
1059 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
1060 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == dummy );
1063 DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed
1068 int UtcDaliControlImplRegisterTwoVisuals(void)
1070 ToolkitTestApplication application;
1072 DummyControl dummy = DummyControl::New();
1073 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1075 Property::Index index =1;
1076 Actor placementActor = Actor::New();
1078 Property::Index index2 =2;
1079 Actor secondPlacementActor = Actor::New();
1081 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1082 Toolkit::Visual::Base visual;
1083 Toolkit::Visual::Base secondVisual;
1086 map[Visual::Property::TYPE] = Visual::COLOR;
1087 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1089 visual = visualFactory.CreateVisual( map );
1090 DALI_TEST_CHECK(visual);
1092 // Register index with a color visual
1093 dummyImpl.RegisterVisual( index, placementActor, visual );
1095 Property::Map newMap;
1096 newMap[Visual::Property::TYPE] = Visual::COLOR;
1097 newMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
1099 secondVisual = visualFactory.CreateVisual( newMap );
1100 DALI_TEST_CHECK( secondVisual );
1102 // ReRegister with altered color visual
1103 dummyImpl.RegisterVisual( index2, secondPlacementActor, secondVisual );
1105 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
1106 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor );
1108 DALI_TEST_CHECK( dummyImpl.GetVisual( index2 ) == secondVisual );
1109 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index2 ) == secondPlacementActor );
1114 int UtcDaliControlImplRegisterUnregisterVisual(void)
1116 ToolkitTestApplication application;
1118 DummyControl dummy = DummyControl::New();
1119 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1121 Property::Index index =1;
1122 Actor placementActor = Actor::New();
1124 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1125 Toolkit::Visual::Base visual;
1128 map[Visual::Property::TYPE] = Visual::COLOR;
1129 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1131 visual = visualFactory.CreateVisual( map );
1132 DALI_TEST_CHECK(visual);
1134 // Register index with a color visual
1135 dummyImpl.RegisterVisual( index, placementActor, visual );
1137 DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
1138 DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor );
1140 // Unregister visual
1141 dummyImpl.UnregisterVisual( index );
1143 DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) );
1144 DALI_TEST_CHECK( !dummyImpl.GetPlacementActor( index ) );
1149 int UtcDaliControlImplRegisterDisabledVisual(void)
1151 ToolkitTestApplication application;
1153 DummyControl dummy = DummyControl::New();
1154 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1156 Property::Index TEST_PROPERTY =1;
1158 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1159 Toolkit::Visual::Base visual;
1162 map[Visual::Property::TYPE] = Visual::COLOR;
1163 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1165 visual = visualFactory.CreateVisual( map );
1166 DALI_TEST_CHECK(visual);
1168 // Register index with a color visual
1169 dummyImpl.RegisterVisual( TEST_PROPERTY, dummy, visual, false );
1171 DALI_TEST_CHECK( dummyImpl.GetVisual( TEST_PROPERTY ) == visual );
1172 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false );
1174 Stage::GetCurrent().Add(dummy);
1176 // Render and notify
1177 application.SendNotification();
1178 application.Render();
1180 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false );
1182 DALI_TEST_CHECK( dummy.OnStage() == true );
1184 dummyImpl.EnableVisual( TEST_PROPERTY, true );
1186 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true );
1191 int UtcDaliControlImplDisableRegisteredVisual(void)
1193 ToolkitTestApplication application;
1195 DummyControl dummy = DummyControl::New();
1196 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1198 Property::Index TEST_PROPERTY =1;
1200 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1201 Toolkit::Visual::Base visual;
1204 map[Visual::Property::TYPE] = Visual::COLOR;
1205 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1207 visual = visualFactory.CreateVisual( map );
1208 DALI_TEST_CHECK(visual);
1210 // Register index with a color visual
1211 dummyImpl.RegisterVisual( TEST_PROPERTY, dummy, visual );
1213 Stage::GetCurrent().Add(dummy);
1215 // Render and notify
1216 application.SendNotification();
1217 application.Render();
1219 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true);
1221 DALI_TEST_CHECK( dummy.OnStage() == true );
1223 dummyImpl.EnableVisual( TEST_PROPERTY, false );
1225 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false );
1230 int UtcDaliControlImplEnabledVisualParentRemovedFromStage(void)
1232 // Visual enabled but then parent removed from stage, test ensures visual/renderer are also removed from stage.
1233 // Then adding parent back to stage should automatically put visual/renderer back
1235 ToolkitTestApplication application;
1237 DummyControl dummy = DummyControl::New();
1238 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1240 Property::Index TEST_PROPERTY =1;
1242 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1243 Toolkit::Visual::Base visual;
1246 map[Visual::Property::TYPE] = Visual::COLOR;
1247 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1249 visual = visualFactory.CreateVisual( map );
1250 DALI_TEST_CHECK(visual);
1252 // Register index with a color visual
1253 dummyImpl.RegisterVisual( TEST_PROPERTY, dummy, visual, false );
1255 Stage::GetCurrent().Add(dummy);
1256 // Render and notify
1257 application.SendNotification();
1258 application.Render();
1260 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false );
1261 DALI_TEST_CHECK( dummy.OnStage() == true );
1262 dummyImpl.EnableVisual( TEST_PROPERTY, true );
1264 // Render and notify
1265 application.SendNotification();
1266 application.Render();
1267 DALI_TEST_CHECK( dummy.GetRendererCount() == 1u );
1269 // Remove control from stage, visual should be removed from stage too
1270 Stage::GetCurrent().Remove(dummy);
1271 // Render and notify
1272 application.SendNotification();
1273 application.Render();
1274 DALI_TEST_CHECK( dummy.GetRendererCount() == 0u );
1276 Stage::GetCurrent().Add(dummy);
1277 // Render and notify
1278 application.SendNotification();
1279 application.Render();
1280 DALI_TEST_CHECK( dummy.GetRendererCount() == 1u );
1282 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true );
1287 int UtcDaliControlImplRegisterTwoVisualsAndEnableOnlyOne(void)
1289 // Register 2 visuals and enable by default
1291 // Remove control from stage then put it back
1292 // Check that only 1 visual/renderer is staged.
1294 ToolkitTestApplication application;
1296 DummyControl dummy = DummyControl::New();
1297 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1299 Property::Index TEST_PROPERTY1 =1;
1300 Property::Index TEST_PROPERTY2 =2;
1302 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
1303 Toolkit::Visual::Base visual1;
1304 Toolkit::Visual::Base visual2;
1307 map[Visual::Property::TYPE] = Visual::COLOR;
1308 map[ColorVisual::Property::MIX_COLOR] = Color::RED;
1311 map[Visual::Property::TYPE] = Visual::COLOR;
1312 map[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
1314 visual1 = visualFactory.CreateVisual( map );
1315 DALI_TEST_CHECK(visual1);
1317 visual2 = visualFactory.CreateVisual( map );
1318 DALI_TEST_CHECK(visual2);
1320 // Register index with a color visual
1321 dummyImpl.RegisterVisual( TEST_PROPERTY1, dummy, visual1 );
1322 // Register second index with a color visual
1323 dummyImpl.RegisterVisual( TEST_PROPERTY2, dummy, visual2 );
1325 Stage::GetCurrent().Add(dummy);
1326 // Render and notify
1327 application.SendNotification();
1328 application.Render();
1330 DALI_TEST_CHECK( dummy.GetRendererCount() == 2u );
1331 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true );
1332 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true);
1333 DALI_TEST_CHECK( dummy.OnStage() == true );
1334 dummyImpl.EnableVisual( TEST_PROPERTY2, false );
1336 // Render and notify
1337 application.SendNotification();
1338 application.Render();
1339 DALI_TEST_CHECK( dummy.GetRendererCount() == 1u );
1341 // Remove control from stage, visual should be removed from stage too
1342 Stage::GetCurrent().Remove(dummy);
1343 // Render and notify
1344 application.SendNotification();
1345 application.Render();
1346 DALI_TEST_CHECK( dummy.GetRendererCount() == 0u );
1348 Stage::GetCurrent().Add(dummy);
1349 // Render and notify
1350 application.SendNotification();
1351 application.Render();
1352 DALI_TEST_CHECK( dummy.GetRendererCount() == 1u );
1354 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true );
1355 DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY2 ) == false );