3ea0786a7c1f329b1fb2bae7bddeadec5cbc20b1
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ControlWrapper.cpp
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20
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
25 #include <dali.h>
26 #include <dali/public-api/dali-core.h>
27 #include <dali-toolkit/dali-toolkit.h>
28 #include <dali-toolkit/devel-api/controls/control-wrapper.h>
29 #include <dali-toolkit/devel-api/controls/control-wrapper-impl.h>
30 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
31 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
32
33 using namespace Dali;
34 using namespace Dali::Toolkit;
35
36 void utc_dali_toolkit_control_wrapper_startup(void)
37 {
38   test_return_value = TET_UNDEF;
39 }
40
41 void utc_dali_toolkit_control_wrapper_cleanup(void)
42 {
43   test_return_value = TET_PASS;
44 }
45
46 ///////////////////////////////////////////////////////////////////////////////////////////////////
47
48 namespace
49 {
50 bool gOnRelayout = false;
51 } // namespace
52
53 ///////////////////////////////////////////////////////////////////////////////////////////////////
54
55 namespace Impl
56 {
57 struct TestCustomControl : public Toolkit::Internal::ControlWrapper
58 {
59   /**
60   * Constructor
61   */
62   TestCustomControl()  : Toolkit::Internal::ControlWrapper( CustomControlBehaviour( Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS |
63           Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT )) ,
64           mDaliProperty( Property::INVALID_INDEX ),
65           mSizeSet( Vector3::ZERO ),
66           mTargetSize( Vector3::ZERO ),
67           mNego( false ),
68           mDepth( 0u )
69   {
70   }
71
72   TestCustomControl(bool nego)  : Toolkit::Internal::ControlWrapper( CustomControlBehaviour( Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS |
73           Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT ) ),
74           mDaliProperty( Property::INVALID_INDEX ),
75           mSizeSet( Vector3::ZERO ),
76           mTargetSize( Vector3::ZERO ),
77           mNego( nego )
78   {
79   }
80   /**
81    * Destructor
82    */
83   virtual ~TestCustomControl()
84   {
85   }
86
87   void Initialize( const char* name = NULL )
88   {
89     mDaliProperty = Self().RegisterProperty( "Dali", std::string("no"), Property::READ_WRITE );
90
91     OnInitialize( name );
92   }
93
94   virtual void OnInitialize( const char* name ) {}
95
96   // From Toolkit::Internal::ControlWrapper
97   virtual void OnStageConnection( int depth )
98   {
99     mDepth = depth;
100   }
101   virtual void OnStageDisconnection()
102   {
103   }
104   virtual void OnChildAdd( Actor& child )
105   {
106   }
107   virtual void OnChildRemove( Actor& child )
108   {
109   }
110   virtual void OnPropertySet( Property::Index index, Property::Value propertyValue )
111   {
112   }
113   virtual void OnSizeSet( const Vector3& targetSize )
114   {
115     mSizeSet = targetSize;
116   }
117   virtual void OnSizeAnimation( Animation& animation, const Vector3& targetSize )
118   {
119     mTargetSize = targetSize;
120   }
121   virtual bool OnTouchEvent( const TouchEvent& event )
122   {
123     return true;
124   }
125   virtual bool OnHoverEvent( const HoverEvent& event )
126   {
127     return true;
128   }
129   virtual bool OnWheelEvent( const WheelEvent& event )
130   {
131     return true;
132   }
133   virtual bool OnKeyEvent( const KeyEvent& event )
134   {
135     return true;
136   }
137   virtual void OnKeyInputFocusGained()
138   {
139   }
140   virtual void OnKeyInputFocusLost()
141   {
142   }
143   virtual Vector3 GetNaturalSize()
144   {
145     return Vector3( 0.0f, 0.0f, 0.0f );
146   }
147
148   virtual float GetHeightForWidth( float width )
149   {
150     return 0.0f;
151   }
152
153   virtual float GetWidthForHeight( float height )
154   {
155     return 0.0f;
156   }
157
158   virtual void OnRelayout( const Vector2& size, RelayoutContainer& container )
159   {
160     gOnRelayout = true;
161   }
162
163   virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
164   {
165   }
166
167   virtual void OnCalculateRelayoutSize( Dimension::Type dimension )
168   {
169   }
170
171   virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
172   {
173     return 0.0f;
174   }
175
176   virtual void OnLayoutNegotiated( float size, Dimension::Type dimension )
177   {
178   }
179
180   virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS )
181   {
182     return false;
183   }
184
185   void SetDaliProperty(std::string s)
186   {
187     Self().SetProperty(mDaliProperty, s);
188   }
189   void TestRelayoutRequest()
190   {
191     RelayoutRequest();
192   }
193
194   float TestGetHeightForWidthBase( float width )
195   {
196     return GetHeightForWidthBase( width );
197   }
198
199   float TestGetWidthForHeightBase( float height )
200   {
201     return GetWidthForHeightBase( height );
202   }
203
204   float TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension )
205   {
206     return CalculateChildSizeBase( child, dimension );
207   }
208
209   bool TestRelayoutDependentOnChildrenBase( Dimension::Type dimension )
210   {
211     return RelayoutDependentOnChildrenBase( dimension );
212   }
213
214   Property::Index mDaliProperty;
215   Vector3 mSizeSet;
216   Vector3 mTargetSize;
217   bool mNego;
218   unsigned int mDepth;
219 };
220
221 }
222
223 static std::string customControlTypeName = "TestCustomControl";
224 static TypeRegistration customControl( customControlTypeName, typeid(Dali::Toolkit::Control), NULL );
225
226 int UtcDaliControlWrapperConstructor(void)
227 {
228   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
229
230   Toolkit::Internal::ControlWrapper* controlWrapperImpl = new Toolkit::Internal::ControlWrapper( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
231   ControlWrapper controlWrapper;
232
233   DALI_TEST_CHECK( !ControlWrapper::DownCast( controlWrapper ) );
234
235   controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
236
237   DALI_TEST_CHECK( ControlWrapper::DownCast( controlWrapper ) );
238
239   END_TEST;
240 }
241
242 int UtcDaliControlWrapperDestructor(void)
243 {
244   TestApplication application;
245
246   ControlWrapper control = ControlWrapper::New( customControlTypeName, *( new Toolkit::Internal::ControlWrapper( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ) ) );
247
248   ControlWrapper control2( control );
249
250   DALI_TEST_CHECK( control );
251   control.Reset();
252   DALI_TEST_CHECK( !control );
253
254   DALI_TEST_CHECK( control2 );
255   control2.Reset();
256   DALI_TEST_CHECK( !control2 );
257
258   END_TEST;
259 }
260
261 int UtcDaliControlWrapperRelayoutRequest(void)
262 {
263   TestApplication application;
264
265   DALI_TEST_EQUALS( gOnRelayout, false, TEST_LOCATION );
266
267   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
268   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
269
270   Stage::GetCurrent().Add( controlWrapper );
271
272   application.SendNotification();
273   application.Render();
274
275   DALI_TEST_EQUALS( gOnRelayout, true, TEST_LOCATION );
276   gOnRelayout = false;
277
278   controlWrapperImpl->TestRelayoutRequest();
279   application.SendNotification();
280   application.Render();
281
282   DALI_TEST_EQUALS( gOnRelayout, true, TEST_LOCATION );
283
284   END_TEST;
285 }
286
287 int UtcDaliControlWrapperImplGetHeightForWidthBase(void)
288 {
289   TestApplication application;
290
291   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
292   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
293
294   float width = 300.0f;
295   float v = 0.0f;
296
297   application.SendNotification();
298   application.Render();
299
300   v = controlWrapperImpl->TestGetHeightForWidthBase( width );
301
302   DALI_TEST_EQUALS( width, v, TEST_LOCATION );
303
304   END_TEST;
305 }
306
307 int UtcDaliControlWrapperGetWidthForHeightBase(void)
308 {
309   TestApplication application;
310
311   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
312   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
313
314   float height = 300.0f;
315   float v = 0.0f;
316
317   application.SendNotification();
318   application.Render();
319
320   v = controlWrapperImpl->TestGetWidthForHeightBase( height );
321
322   DALI_TEST_EQUALS( height, v, TEST_LOCATION );
323
324   END_TEST;
325 }
326
327 int UtcDaliControlWrapperCalculateChildSizeBase(void)
328 {
329   TestApplication application;
330
331   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
332   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
333
334   Actor child = Actor::New();
335   child.SetResizePolicy( Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS );
336   child.SetSize(150, 150);
337
338   application.SendNotification();
339   application.Render();
340
341   float v = 9.99f;
342   v = controlWrapperImpl->TestCalculateChildSizeBase( child, Dali::Dimension::ALL_DIMENSIONS );
343   DALI_TEST_EQUALS( v, 0.0f, TEST_LOCATION );
344
345   END_TEST;
346 }
347
348 int UtcDaliControlWrapperRelayoutDependentOnChildrenBase(void)
349 {
350   TestApplication application;
351
352   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
353   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
354
355   bool v = false;
356
357   v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase( Dali::Dimension::ALL_DIMENSIONS );
358   application.SendNotification();
359   application.Render();
360
361   DALI_TEST_EQUALS( v, true, TEST_LOCATION );
362
363   controlWrapper.SetResizePolicy( Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS );
364   v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase( Dali::Dimension::WIDTH );
365   application.SendNotification();
366   application.Render();
367   DALI_TEST_EQUALS( v, false, TEST_LOCATION );
368
369   END_TEST;
370 }
371
372 int UtcDaliControlWrapperRegisterVisualToSelf(void)
373 {
374   ToolkitTestApplication application;
375
376   Test::ObjectDestructionTracker objectDestructionTracker;
377
378   {
379     Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
380     ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
381
382     objectDestructionTracker.Start( controlWrapper );
383
384     Property::Index index = 1;
385
386     Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
387     Toolkit::Visual::Base visual;
388
389     Property::Map map;
390     map[Visual::Property::TYPE] = Visual::COLOR;
391     map[ColorVisual::Property::MIX_COLOR] = Color::RED;
392
393     visual = visualFactory.CreateVisual( map );
394     DALI_TEST_CHECK( visual );
395
396     // Register to self
397     controlWrapperImpl->RegisterVisual( index, visual );
398
399     DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet
400     DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION );
401   }
402
403   DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed
404
405   END_TEST;
406 }
407
408 int UtcDaliControlWrapperRegisterVisualWithDepthIndexToSelf(void)
409 {
410   ToolkitTestApplication application;
411
412   Test::ObjectDestructionTracker objectDestructionTracker;
413
414   {
415     Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
416     ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
417
418     objectDestructionTracker.Start( controlWrapper );
419
420     Property::Index index = 1;
421
422     Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
423     Toolkit::Visual::Base visual;
424
425     Property::Map map;
426     map[Visual::Property::TYPE] = Visual::COLOR;
427     map[ColorVisual::Property::MIX_COLOR] = Color::RED;
428
429     visual = visualFactory.CreateVisual( map );
430     DALI_TEST_CHECK( visual );
431
432     // Register to self
433     controlWrapperImpl->RegisterVisual( index, visual, 4 );
434
435     DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet
436     DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION );
437     DALI_TEST_EQUALS( visual.GetDepthIndex(), 4, TEST_LOCATION );
438   }
439
440   DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed
441
442   END_TEST;
443 }
444
445 int UtcDaliControlWrapperRegisterDisabledVisual(void)
446 {
447   ToolkitTestApplication application;
448
449   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
450   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
451
452   Property::Index TEST_PROPERTY = 1;
453
454   Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
455   Toolkit::Visual::Base visual;
456
457   Property::Map map;
458   map[Visual::Property::TYPE] = Visual::COLOR;
459   map[ColorVisual::Property::MIX_COLOR] = Color::RED;
460
461   visual = visualFactory.CreateVisual( map );
462   DALI_TEST_CHECK(visual);
463
464   // Register index with a color visual
465   controlWrapperImpl->RegisterVisual( TEST_PROPERTY, visual, false );
466
467   DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( TEST_PROPERTY ), visual, TEST_LOCATION );
468   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION );
469
470   Stage::GetCurrent().Add( controlWrapper );
471
472   // Render and notify
473   application.SendNotification();
474   application.Render();
475
476   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION );
477
478   DALI_TEST_EQUALS( controlWrapper.OnStage(), true, TEST_LOCATION );
479
480   controlWrapperImpl->EnableVisual( TEST_PROPERTY, true );
481
482   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), true, TEST_LOCATION );
483
484   END_TEST;
485 }
486
487 int UtcDaliControlWrapperRegisterDisabledVisualWithDepthIndex(void)
488 {
489   ToolkitTestApplication application;
490
491   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
492   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
493
494   Property::Index TEST_PROPERTY = 1;
495
496   Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
497   Toolkit::Visual::Base visual;
498
499   Property::Map map;
500   map[Visual::Property::TYPE] = Visual::COLOR;
501   map[ColorVisual::Property::MIX_COLOR] = Color::RED;
502
503   visual = visualFactory.CreateVisual( map );
504   DALI_TEST_CHECK(visual);
505
506   // Register index with a color visual
507   controlWrapperImpl->RegisterVisual( TEST_PROPERTY, visual, false, 10 );
508
509   DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( TEST_PROPERTY ), visual, TEST_LOCATION );
510   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION );
511   DALI_TEST_EQUALS( visual.GetDepthIndex(), 10, TEST_LOCATION );
512
513   Stage::GetCurrent().Add( controlWrapper );
514
515   // Render and notify
516   application.SendNotification();
517   application.Render();
518
519   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION );
520
521   DALI_TEST_EQUALS( controlWrapper.OnStage(), true, TEST_LOCATION );
522
523   controlWrapperImpl->EnableVisual( TEST_PROPERTY, true );
524
525   DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), true, TEST_LOCATION );
526
527   END_TEST;
528 }
529
530 int UtcDaliControlWrapperRegisterUnregisterVisual(void)
531 {
532   ToolkitTestApplication application;
533
534   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
535   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
536
537   Property::Index index = 1;
538
539   Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
540   Toolkit::Visual::Base visual;
541
542   Property::Map map;
543   map[Visual::Property::TYPE] = Visual::COLOR;
544   map[ColorVisual::Property::MIX_COLOR] = Color::RED;
545
546   visual = visualFactory.CreateVisual( map );
547   DALI_TEST_CHECK(visual);
548
549   // Register index with a color visual
550   controlWrapperImpl->RegisterVisual( index, visual );
551
552   DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION );
553
554   // Unregister visual
555   controlWrapperImpl->UnregisterVisual( index );
556
557   DALI_TEST_CHECK( !controlWrapperImpl->GetVisual( index ) );
558
559   END_TEST;
560 }
561
562 int UtcDaliControlWrapperTransitionDataMap1N(void)
563 {
564   TestApplication application;
565
566   Property::Map map;
567   map["target"] = "Actor1";
568   map["property"] = "randomProperty";
569   map["initialValue"] = Color::MAGENTA;
570   map["targetValue"] = Color::RED;
571   map["animator"] = Property::Map()
572     .Add("alphaFunction", "EASE_OUT")
573     .Add("timePeriod", Property::Map()
574          .Add("delay", 0.5f)
575          .Add("duration", 1.0f));
576
577   Dali::Toolkit::TransitionData transition = TransitionData::New( map );
578
579   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
580   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
581
582   //DummyControl actor = DummyControl::New();
583   controlWrapper.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
584   controlWrapper.SetName("Actor1");
585   controlWrapper.SetColor(Color::CYAN);
586   Stage::GetCurrent().Add(controlWrapper);
587
588   Animation anim = controlWrapperImpl->CreateTransition( transition );
589   DALI_TEST_CHECK( ! anim );
590
591   Property::Map returnedMap = transition.GetAnimatorAt(0);
592
593   Property::Value* value = returnedMap.Find("property");
594   DALI_TEST_CHECK( value != NULL);
595   DALI_TEST_EQUALS( "randomProperty", value->Get<std::string>(), TEST_LOCATION );
596
597   value = returnedMap.Find("initialValue");
598   DALI_TEST_CHECK( value != NULL);
599   DALI_TEST_EQUALS( Color::MAGENTA, value->Get<Vector4>(), TEST_LOCATION );
600
601   value = returnedMap.Find("targetValue");
602   DALI_TEST_CHECK( value != NULL);
603   DALI_TEST_EQUALS( Color::RED, value->Get<Vector4>(), TEST_LOCATION );
604
605   value = returnedMap.Find("animator");
606   DALI_TEST_CHECK( value != NULL);
607   Property::Map returnedAnimatorMap = value->Get<Property::Map>();
608
609   value = returnedAnimatorMap.Find("alphaFunction");
610   DALI_TEST_CHECK( value != NULL);
611   DALI_TEST_EQUALS( "EASE_OUT", value->Get<std::string>(), TEST_LOCATION );
612
613   value = returnedAnimatorMap.Find("timePeriod");
614   DALI_TEST_CHECK( value != NULL);
615   Property::Map returnedTimePeriodMap = value->Get<Property::Map>();
616
617   value = returnedTimePeriodMap.Find("delay");
618   DALI_TEST_CHECK( value != NULL);
619   DALI_TEST_EQUALS( 0.5f, value->Get<float>(), TEST_LOCATION );
620
621   value = returnedTimePeriodMap.Find("duration");
622   DALI_TEST_CHECK( value != NULL);
623   DALI_TEST_EQUALS( 1.0f, value->Get<float>(), TEST_LOCATION );
624
625   END_TEST;
626 }
627
628 int UtcDaliControlWrapperApplyThemeStyle(void)
629 {
630   ToolkitTestApplication application;
631
632   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
633   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
634
635   controlWrapperImpl->ApplyThemeStyle();
636
637   DALI_TEST_CHECK( true );
638   END_TEST;
639 }
640
641 int UtcDaliControlWrapperTestControlProperties(void)
642 {
643   ToolkitTestApplication application;
644
645   Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT );
646   ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl );
647
648   Stage::GetCurrent().Add( controlWrapper );
649
650   // "background" property
651   Property::Map rendererMap;
652   rendererMap[Visual::Property::TYPE] = Visual::COLOR;
653   rendererMap[ColorVisual::Property::MIX_COLOR] = Color::RED;
654   controlWrapper.SetProperty( Control::Property::BACKGROUND, rendererMap );
655   Property::Value propertyValue = controlWrapper.GetProperty( Control::Property::BACKGROUND );
656   Property::Map* resultMap = propertyValue.GetMap();
657   DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE ) );
658   DALI_TEST_EQUALS( resultMap->Find( Visual::Property::TYPE )->Get<int>(), (int)Visual::COLOR, TEST_LOCATION );
659   DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR ) );
660   DALI_TEST_EQUALS( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get<Vector4>(), Color::RED, TEST_LOCATION );
661
662   // "keyInputFocus" property
663   controlWrapper.SetProperty( Control::Property::KEY_INPUT_FOCUS, true );
664   DALI_TEST_EQUALS( true, controlWrapper.GetProperty( Control::Property::KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION );
665
666   // "styleName" property
667   controlWrapper.SetProperty( Control::Property::STYLE_NAME, "MyCustomStyle" );
668   DALI_TEST_EQUALS( "MyCustomStyle", controlWrapper.GetProperty( Control::Property::STYLE_NAME ).Get< std::string >(), TEST_LOCATION );
669
670   END_TEST;
671 }
672
673 int UtcDaliControlWrapperTypeRegistryCreation(void)
674 {
675   ToolkitTestApplication application;
676
677   TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo( "ControlWrapper" );
678   DALI_TEST_CHECK( typeInfo )
679
680   // Check that we can't create a ControlWrapper instance
681   BaseHandle baseHandle = typeInfo.CreateInstance();
682   DALI_TEST_CHECK( !baseHandle )
683
684   END_TEST;
685 }