Refractor ImfManager to InputMethodContext
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-FlexContainer.cpp
1 /*
2  * Copyright (c) 2016 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 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/devel-api/actors/actor-devel.h>
23
24 using namespace Dali;
25 using namespace Toolkit;
26
27 void dali_flexflexContainer_startup(void)
28 {
29   test_return_value = TET_UNDEF;
30 }
31
32 void dali_flexflexContainer_cleanup(void)
33 {
34   test_return_value = TET_PASS;
35 }
36
37 namespace
38 {
39
40 const char* const PROPERTY_NAME_CONTENT_DIRECTION = "contentDirection";
41 const char* const PROPERTY_NAME_FLEX_DIRECTION = "flexDirection";
42 const char* const PROPERTY_NAME_FLEX_WRAP = "flexWrap";
43 const char* const PROPERTY_NAME_JUSTIFY_CONTENT = "justifyContent";
44 const char* const PROPERTY_NAME_ALIGN_ITEMS = "alignItems";
45 const char* const PROPERTY_NAME_ALIGN_CONTENT =  "alignContent";
46 const char* const CHILD_PROPERTY_NAME_FLEX = "flex";
47 const char* const CHILD_PROPERTY_NAME_ALIGN_SELF = "alignSelf";
48 const char* const CHILD_PROPERTY_NAME_FLEX_MARGIN =  "flexMargin";
49
50 } // namespace
51
52 int UtcDaliToolkitFlexContainerConstructorP(void)
53 {
54   ToolkitTestApplication application;
55   tet_infoline(" UtcDaliToolkitFlexContainerConstructorP");
56   FlexContainer flexContainer;
57   DALI_TEST_CHECK( !flexContainer );
58   END_TEST;
59 }
60
61 int UtcDaliToolkitFlexContainerNewP(void)
62 {
63   ToolkitTestApplication application;
64   tet_infoline(" UtcDaliToolkitFlexContainerNewP");
65   FlexContainer flexContainer = FlexContainer::New();
66   DALI_TEST_CHECK( flexContainer );
67   END_TEST;
68 }
69
70 int UtcDaliToolkitFlexContainerDownCastP(void)
71 {
72   ToolkitTestApplication application;
73   tet_infoline(" UtcDaliToolkitFlexContainerDownCastP");
74   FlexContainer flexContainer1 = FlexContainer::New();
75   BaseHandle object( flexContainer1 );
76
77   FlexContainer flexContainer2 = FlexContainer::DownCast( object );
78   DALI_TEST_CHECK( flexContainer2 );
79
80   FlexContainer flexContainer3 = DownCast< FlexContainer >( object );
81   DALI_TEST_CHECK( flexContainer3 );
82   END_TEST;
83 }
84
85 int UtcDaliToolkitFlexContainerDownCastN(void)
86 {
87   ToolkitTestApplication application;
88   tet_infoline(" UtcDaliToolkitFlexContainerDownCastN");
89   BaseHandle uninitializedObject;
90   FlexContainer flexContainer1 = FlexContainer::DownCast( uninitializedObject );
91   DALI_TEST_CHECK( !flexContainer1 );
92
93   FlexContainer flexContainer2 = DownCast< FlexContainer >( uninitializedObject );
94   DALI_TEST_CHECK( !flexContainer2 );
95   END_TEST;
96 }
97
98 int UtcDaliToolkitFlexContainerCopyConstructorP(void)
99 {
100   ToolkitTestApplication application;
101   tet_infoline(" UtcDaliToolkitFlexContainerCopyConstructorP");
102   FlexContainer flexContainer = FlexContainer::New();
103   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW_REVERSE );
104
105   FlexContainer copy( flexContainer );
106   DALI_TEST_CHECK( copy );
107   DALI_TEST_CHECK( copy.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) == flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) );
108
109   END_TEST;
110 }
111
112 int UtcDaliToolkitFlexContainerAssignmentOperatorP(void)
113 {
114   ToolkitTestApplication application;
115   tet_infoline(" UtcDaliToolkitFlexContainerAssingmentOperatorP");
116   FlexContainer flexContainer = FlexContainer::New();
117   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW_REVERSE );
118
119   FlexContainer copy = flexContainer;
120   DALI_TEST_CHECK( copy );
121   DALI_TEST_CHECK( copy.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) == flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) );
122   END_TEST;
123 }
124
125 // Positive test case for a method
126 int UtcDaliToolkitFlexContainerGetPropertyP(void)
127 {
128   ToolkitTestApplication application;
129   tet_infoline(" UtcDaliToolkitFlexContainerGetPropertyP");
130   FlexContainer flexContainer = FlexContainer::New();
131   DALI_TEST_CHECK( flexContainer );
132
133   // Check Property Indices are correct
134   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_CONTENT_DIRECTION ) == FlexContainer::Property::CONTENT_DIRECTION );
135   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_FLEX_DIRECTION ) == FlexContainer::Property::FLEX_DIRECTION );
136   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_FLEX_WRAP ) == FlexContainer::Property::FLEX_WRAP );
137   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_JUSTIFY_CONTENT ) == FlexContainer::Property::JUSTIFY_CONTENT );
138   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_ALIGN_ITEMS ) == FlexContainer::Property::ALIGN_ITEMS );
139   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_ALIGN_CONTENT ) == FlexContainer::Property::ALIGN_CONTENT );
140
141   END_TEST;
142 }
143
144 int UtcDaliToolkitFlexContainerSetPropertyP(void)
145 {
146   ToolkitTestApplication application;
147   tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP");
148   FlexContainer flexContainer = FlexContainer::New();
149   DALI_TEST_CHECK( flexContainer );
150
151   // Add flex container to the stage
152   Stage::GetCurrent().Add( flexContainer );
153
154   // Create two actors and add them to the container
155   Actor actor1 = Actor::New();
156   Actor actor2 = Actor::New();
157   DALI_TEST_CHECK( actor1 );
158   DALI_TEST_CHECK( actor2 );
159
160   flexContainer.Add(actor1);
161   flexContainer.Add(actor2);
162
163   // Check content direction property.
164   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, FlexContainer::RTL );
165   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
166
167   // Check flex direction property.
168   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::COLUMN_REVERSE );
169   DALI_TEST_EQUALS( (FlexContainer::FlexDirection)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ), FlexContainer::COLUMN_REVERSE, TEST_LOCATION );
170
171   // Check flex wrap property.
172   flexContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, FlexContainer::WRAP );
173   DALI_TEST_EQUALS( (FlexContainer::WrapType)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_WRAP ), FlexContainer::WRAP, TEST_LOCATION );
174
175   // Check justify content property.
176   flexContainer.SetProperty( FlexContainer::Property::JUSTIFY_CONTENT, FlexContainer::JUSTIFY_SPACE_BETWEEN );
177   DALI_TEST_EQUALS( (FlexContainer::Justification)flexContainer.GetProperty<int>( FlexContainer::Property::JUSTIFY_CONTENT ), FlexContainer::JUSTIFY_SPACE_BETWEEN, TEST_LOCATION );
178
179   // Check align items property.
180   flexContainer.SetProperty( FlexContainer::Property::ALIGN_ITEMS, FlexContainer::ALIGN_FLEX_START );
181   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_ITEMS ), FlexContainer::ALIGN_FLEX_START, TEST_LOCATION );
182
183   // Check align content property.
184   flexContainer.SetProperty( FlexContainer::Property::ALIGN_CONTENT, FlexContainer::ALIGN_STRETCH );
185   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_CONTENT ), FlexContainer::ALIGN_STRETCH, TEST_LOCATION );
186
187   END_TEST;
188 }
189
190
191 int UtcDaliToolkitFlexContainerSetPropertyEnumP(void)
192 {
193   ToolkitTestApplication application;
194   tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyEnumP");
195   FlexContainer flexContainer = FlexContainer::New();
196   DALI_TEST_CHECK( flexContainer );
197
198   // Add flex container to the stage
199   Stage::GetCurrent().Add( flexContainer );
200
201   // Create two actors and add them to the container
202   Actor actor1 = Actor::New();
203   Actor actor2 = Actor::New();
204   DALI_TEST_CHECK( actor1 );
205   DALI_TEST_CHECK( actor2 );
206
207   flexContainer.Add(actor1);
208   flexContainer.Add(actor2);
209
210   // Check content direction property.
211   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "RTL" );
212   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
213
214   // Check flex direction property.
215   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, "columnReverse" );
216   DALI_TEST_EQUALS( (FlexContainer::FlexDirection)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ), FlexContainer::COLUMN_REVERSE, TEST_LOCATION );
217
218   // Check flex wrap property.
219   flexContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, "wrap" );
220   DALI_TEST_EQUALS( (FlexContainer::WrapType)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_WRAP ), FlexContainer::WRAP, TEST_LOCATION );
221
222   // Check justify content property.
223   flexContainer.SetProperty( FlexContainer::Property::JUSTIFY_CONTENT, "spaceBetween" );
224   DALI_TEST_EQUALS( (FlexContainer::Justification)flexContainer.GetProperty<int>( FlexContainer::Property::JUSTIFY_CONTENT ), FlexContainer::JUSTIFY_SPACE_BETWEEN, TEST_LOCATION );
225
226   // Check align items property.
227   flexContainer.SetProperty( FlexContainer::Property::ALIGN_ITEMS, "flexStart" );
228   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_ITEMS ), FlexContainer::ALIGN_FLEX_START, TEST_LOCATION );
229
230   // Check align content property.
231   flexContainer.SetProperty( FlexContainer::Property::ALIGN_CONTENT, "stretch" );
232   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_CONTENT ), FlexContainer::ALIGN_STRETCH, TEST_LOCATION );
233
234   END_TEST;
235 }
236
237 int UtcDaliToolkitFlexContainerSetChildPropertyP(void)
238 {
239   ToolkitTestApplication application;
240   tet_infoline(" UtcDaliToolkitFlexContainerSetChildPropertyP");
241   FlexContainer flexContainer = FlexContainer::New();
242   DALI_TEST_CHECK( flexContainer );
243
244   // Add flex container to the stage
245   Stage::GetCurrent().Add( flexContainer );
246
247   // Create an actor and add it to the container
248   Actor actor = Actor::New();
249   DALI_TEST_CHECK( actor );
250
251   flexContainer.Add(actor);
252
253   // Check flex child property.
254   actor.SetProperty( FlexContainer::ChildProperty::FLEX, 2.0f );
255   DALI_TEST_EQUALS( actor.GetProperty<float>( FlexContainer::ChildProperty::FLEX ), 2.0f, TEST_LOCATION );
256   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_FLEX ) == FlexContainer::ChildProperty::FLEX );
257
258   // Check align self child property.
259   actor.SetProperty( FlexContainer::ChildProperty::ALIGN_SELF, FlexContainer::ALIGN_FLEX_END );
260   DALI_TEST_EQUALS( (FlexContainer::Alignment)actor.GetProperty<int>( FlexContainer::ChildProperty::ALIGN_SELF ), FlexContainer::ALIGN_FLEX_END, TEST_LOCATION );
261   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_ALIGN_SELF ) == FlexContainer::ChildProperty::ALIGN_SELF );
262
263   // Check flex margin child property.
264   actor.SetProperty( FlexContainer::ChildProperty::FLEX_MARGIN, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
265   DALI_TEST_EQUALS( actor.GetProperty<Vector4>( FlexContainer::ChildProperty::FLEX_MARGIN ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), TEST_LOCATION );
266   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_FLEX_MARGIN ) == FlexContainer::ChildProperty::FLEX_MARGIN );
267
268   application.SendNotification();
269   application.Render();
270
271   END_TEST;
272 }
273
274
275
276 //Functor to test whether RelayoutSignal is emitted
277 class RelayoutSignalHandler : public Dali::ConnectionTracker
278 {
279 public:
280
281   RelayoutSignalHandler( FlexContainer& actor )
282   : mSignalVerified( false ),
283     mActor( actor )
284   {
285   }
286
287   // callback to be connected to RelayoutSignal
288   void RelayoutCallback( Actor actor  )
289   {
290     if( mActor == actor )
291     {
292       mSignalVerified = true;
293     }
294   }
295
296   void Reset()
297   {
298     mSignalVerified = false;
299   }
300
301   bool   mSignalVerified;
302   Actor& mActor;
303 };
304
305 int UtcDaliToolkitFlexContainerRemoveChildP(void)
306 {
307   ToolkitTestApplication application;
308   tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP");
309   FlexContainer flexContainer = FlexContainer::New();
310   DALI_TEST_CHECK( flexContainer );
311
312   // Add flex container to the stage
313   Stage::GetCurrent().Add( flexContainer );
314
315   RelayoutSignalHandler relayoutSignal(flexContainer);
316   flexContainer.OnRelayoutSignal().Connect(&relayoutSignal, &RelayoutSignalHandler::RelayoutCallback );
317
318   // Create two actors and add them to the container
319   Actor actor1 = Actor::New();
320   Actor actor2 = Actor::New();
321   DALI_TEST_CHECK( actor1 );
322   DALI_TEST_CHECK( actor2 );
323
324   flexContainer.Add(actor1);
325   flexContainer.Add(actor2);
326
327   application.SendNotification();
328   application.Render();
329
330   DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION );
331   relayoutSignal.Reset();
332
333   DALI_TEST_CHECK( actor1 );
334   DALI_TEST_CHECK( actor2 );
335
336   flexContainer.Remove(actor1);
337   application.SendNotification();
338   application.Render();
339   DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION );
340   relayoutSignal.Reset();
341
342   flexContainer.Remove(actor2);
343   application.SendNotification();
344   application.Render();
345   DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION );
346   relayoutSignal.Reset();
347
348   END_TEST;
349 }
350
351 namespace
352 {
353
354 // Functors to test whether PreFocusChange signal is emitted when the keyboard focus is about to change
355 class PreFocusChangeCallback : public Dali::ConnectionTracker
356 {
357 public:
358   PreFocusChangeCallback(bool& signalReceived, Actor firstFocusActor)
359   : mSignalVerified(signalReceived),
360     mFirstFocusActor(firstFocusActor),
361     mDirection(Control::KeyboardFocus::LEFT)
362   {
363   }
364
365   Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction)
366   {
367     tet_infoline("Verifying PreFocusChangeCallback()");
368
369     mSignalVerified = true;
370     mDirection = direction;
371     if( ! proposedActorToFocus )
372     {
373       return mFirstFocusActor;
374     }
375     else
376     {
377       return proposedActorToFocus;
378     }
379   }
380
381   void Reset()
382   {
383     mSignalVerified = false;
384     mDirection = Control::KeyboardFocus::LEFT;
385   }
386
387   bool& mSignalVerified;
388   Actor mFirstFocusActor;
389   Control::KeyboardFocus::Direction mDirection;
390 };
391
392 // Functors to test whether focus changed signal is emitted when the keyboard focus is changed
393 class FocusChangedCallback : public Dali::ConnectionTracker
394 {
395 public:
396   FocusChangedCallback(bool& signalReceived)
397   : mSignalVerified(signalReceived),
398     mOriginalFocusedActor(),
399     mCurrentFocusedActor()
400   {
401   }
402
403   void Callback(Actor originalFocusedActor, Actor currentFocusedActor)
404   {
405     tet_infoline("Verifying FocusChangedCallback()");
406
407     if(originalFocusedActor == mCurrentFocusedActor)
408     {
409       mSignalVerified = true;
410     }
411
412     mOriginalFocusedActor = originalFocusedActor;
413     mCurrentFocusedActor = currentFocusedActor;
414   }
415
416   void Reset()
417   {
418     mSignalVerified = false;
419   }
420
421   bool& mSignalVerified;
422   Actor mOriginalFocusedActor;
423   Actor mCurrentFocusedActor;
424 };
425
426 } // anonymous namespace
427
428
429 int UtcDaliToolkitFlexContainerMoveFocus(void)
430 {
431   ToolkitTestApplication application;
432   tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP");
433   FlexContainer flexContainer = FlexContainer::New();
434   DALI_TEST_CHECK( flexContainer );
435
436   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW );
437
438   // Add flex container to the stage
439   Stage::GetCurrent().Add( flexContainer );
440   Size stageSize = Stage::GetCurrent().GetSize();
441
442   RelayoutSignalHandler relayoutSignal(flexContainer);
443   flexContainer.OnRelayoutSignal().Connect(&relayoutSignal, &RelayoutSignalHandler::RelayoutCallback );
444   flexContainer.SetSize( stageSize );
445
446   // Create two actors and add them to the container
447   Actor actor1 = Actor::New();
448   Actor actor2 = Actor::New();
449   actor1.SetKeyboardFocusable(true);
450   actor2.SetKeyboardFocusable(true);
451   DALI_TEST_CHECK( actor1 );
452   DALI_TEST_CHECK( actor2 );
453
454   flexContainer.Add(actor1);
455   flexContainer.Add(actor2);
456
457   application.SendNotification();
458   application.Render();
459
460   KeyboardFocusManager manager = KeyboardFocusManager::Get();
461   DALI_TEST_CHECK(manager);
462
463   bool preFocusChangeSignalVerified = false;
464   PreFocusChangeCallback preFocusChangeCallback(preFocusChangeSignalVerified, actor1);
465   manager.PreFocusChangeSignal().Connect( &preFocusChangeCallback, &PreFocusChangeCallback::Callback );
466
467   bool focusChangedSignalVerified = false;
468   FocusChangedCallback focusChangedCallback(focusChangedSignalVerified);
469   manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback );
470
471   // Move the focus to the right
472   DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::RIGHT), true, TEST_LOCATION);
473   DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified);
474   DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor1, TEST_LOCATION);
475   preFocusChangeCallback.Reset();
476   DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor1, TEST_LOCATION);
477   focusChangedCallback.Reset();
478
479   // Move the focus towards right
480   DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::RIGHT), true, TEST_LOCATION);
481   DALI_TEST_EQUALS(preFocusChangeCallback.mSignalVerified, true, TEST_LOCATION);
482   DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor2, TEST_LOCATION);
483   DALI_TEST_EQUALS(focusChangedCallback.mSignalVerified, true, TEST_LOCATION);
484   DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor2, TEST_LOCATION);
485
486   preFocusChangeCallback.Reset();
487   focusChangedCallback.Reset();
488
489   // Move the focus towards left
490   DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::LEFT), true, TEST_LOCATION);
491   DALI_TEST_EQUALS(preFocusChangeCallback.mSignalVerified, true, TEST_LOCATION);
492   DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor1, TEST_LOCATION);
493   DALI_TEST_EQUALS(focusChangedCallback.mSignalVerified, true, TEST_LOCATION);
494   DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor1, TEST_LOCATION);
495
496   END_TEST;
497 }
498
499 int UtcDaliToolkitFlexContainerRTLSupportP(void)
500 {
501   ToolkitTestApplication application;
502   tet_infoline(" UtcDaliToolkitFlexContainerRTLSupportP");
503   FlexContainer flexContainer = FlexContainer::New();
504   DALI_TEST_CHECK( flexContainer );
505
506   Actor actor0 = Actor::New();
507
508   Stage::GetCurrent().Add( actor0 );
509   actor0.Add( flexContainer );
510
511   // Create two actors and add them to the container
512   Actor actor1 = Actor::New();
513   Actor actor2 = Actor::New();
514   DALI_TEST_CHECK( actor1 );
515   DALI_TEST_CHECK( actor2 );
516
517   flexContainer.Add(actor1);
518   flexContainer.Add(actor2);
519
520   // Check flex direction property.
521   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, "row" );
522   DALI_TEST_EQUALS( (FlexContainer::FlexDirection)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ), FlexContainer::ROW, TEST_LOCATION );
523
524   // Check content direction property.
525   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::INHERIT, TEST_LOCATION );
526
527   actor0.SetProperty( Dali::DevelActor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT );
528   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
529
530   actor0.SetProperty( Dali::DevelActor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT );
531   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::LTR, TEST_LOCATION );
532
533   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "RTL" );
534   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
535
536   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "LTR" );
537   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::LTR, TEST_LOCATION );
538
539   actor0.SetProperty( Dali::DevelActor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT );
540   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::LTR, TEST_LOCATION );
541
542   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "inherit" );
543   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
544
545   actor0.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT );
546   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::LTR, TEST_LOCATION );
547
548   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "inherit" );
549   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::LTR, TEST_LOCATION );
550
551   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "LTR" );
552   application.SendNotification();
553   application.Render();
554
555   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "RTL" );
556   application.SendNotification();
557   application.Render();
558
559   END_TEST;
560 }