Merge "Make FlexContainer as public API" into devel/master
[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
23 using namespace Dali;
24 using namespace Toolkit;
25
26 void dali_flexflexContainer_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void dali_flexflexContainer_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36 namespace
37 {
38
39 const char* const PROPERTY_NAME_CONTENT_DIRECTION = "contentDirection";
40 const char* const PROPERTY_NAME_FLEX_DIRECTION = "flexDirection";
41 const char* const PROPERTY_NAME_FLEX_WRAP = "flexWrap";
42 const char* const PROPERTY_NAME_JUSTIFY_CONTENT = "justifyContent";
43 const char* const PROPERTY_NAME_ALIGN_ITEMS = "alignItems";
44 const char* const PROPERTY_NAME_ALIGN_CONTENT =  "alignContent";
45 const char* const CHILD_PROPERTY_NAME_FLEX = "flex";
46 const char* const CHILD_PROPERTY_NAME_ALIGN_SELF = "alignSelf";
47 const char* const CHILD_PROPERTY_NAME_FLEX_MARGIN =  "flexMargin";
48
49 } // namespace
50
51 int UtcDaliToolkitFlexContainerConstructorP(void)
52 {
53   ToolkitTestApplication application;
54   tet_infoline(" UtcDaliToolkitFlexContainerConstructorP");
55   FlexContainer flexContainer;
56   DALI_TEST_CHECK( !flexContainer );
57   END_TEST;
58 }
59
60 int UtcDaliToolkitFlexContainerNewP(void)
61 {
62   ToolkitTestApplication application;
63   tet_infoline(" UtcDaliToolkitFlexContainerNewP");
64   FlexContainer flexContainer = FlexContainer::New();
65   DALI_TEST_CHECK( flexContainer );
66   END_TEST;
67 }
68
69 int UtcDaliToolkitFlexContainerDownCastP(void)
70 {
71   ToolkitTestApplication application;
72   tet_infoline(" UtcDaliToolkitFlexContainerDownCastP");
73   FlexContainer flexContainer1 = FlexContainer::New();
74   BaseHandle object( flexContainer1 );
75
76   FlexContainer flexContainer2 = FlexContainer::DownCast( object );
77   DALI_TEST_CHECK( flexContainer2 );
78
79   FlexContainer flexContainer3 = DownCast< FlexContainer >( object );
80   DALI_TEST_CHECK( flexContainer3 );
81   END_TEST;
82 }
83
84 int UtcDaliToolkitFlexContainerDownCastN(void)
85 {
86   ToolkitTestApplication application;
87   tet_infoline(" UtcDaliToolkitFlexContainerDownCastN");
88   BaseHandle uninitializedObject;
89   FlexContainer flexContainer1 = FlexContainer::DownCast( uninitializedObject );
90   DALI_TEST_CHECK( !flexContainer1 );
91
92   FlexContainer flexContainer2 = DownCast< FlexContainer >( uninitializedObject );
93   DALI_TEST_CHECK( !flexContainer2 );
94   END_TEST;
95 }
96
97 int UtcDaliToolkitFlexContainerCopyConstructorP(void)
98 {
99   ToolkitTestApplication application;
100   tet_infoline(" UtcDaliToolkitFlexContainerCopyConstructorP");
101   FlexContainer flexContainer = FlexContainer::New();
102   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW_REVERSE );
103
104   FlexContainer copy( flexContainer );
105   DALI_TEST_CHECK( copy );
106   DALI_TEST_CHECK( copy.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) == flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) );
107
108   END_TEST;
109 }
110
111 int UtcDaliToolkitFlexContainerAssignmentOperatorP(void)
112 {
113   ToolkitTestApplication application;
114   tet_infoline(" UtcDaliToolkitFlexContainerAssingmentOperatorP");
115   FlexContainer flexContainer = FlexContainer::New();
116   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW_REVERSE );
117
118   FlexContainer copy = flexContainer;
119   DALI_TEST_CHECK( copy );
120   DALI_TEST_CHECK( copy.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) == flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ) );
121   END_TEST;
122 }
123
124 // Positive test case for a method
125 int UtcDaliToolkitFlexContainerGetPropertyP(void)
126 {
127   ToolkitTestApplication application;
128   tet_infoline(" UtcDaliToolkitFlexContainerGetPropertyP");
129   FlexContainer flexContainer = FlexContainer::New();
130   DALI_TEST_CHECK( flexContainer );
131
132   // Check Property Indices are correct
133   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_CONTENT_DIRECTION ) == FlexContainer::Property::CONTENT_DIRECTION );
134   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_FLEX_DIRECTION ) == FlexContainer::Property::FLEX_DIRECTION );
135   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_FLEX_WRAP ) == FlexContainer::Property::FLEX_WRAP );
136   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_JUSTIFY_CONTENT ) == FlexContainer::Property::JUSTIFY_CONTENT );
137   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_ALIGN_ITEMS ) == FlexContainer::Property::ALIGN_ITEMS );
138   DALI_TEST_CHECK( flexContainer.GetPropertyIndex( PROPERTY_NAME_ALIGN_CONTENT ) == FlexContainer::Property::ALIGN_CONTENT );
139
140   END_TEST;
141 }
142
143 int UtcDaliToolkitFlexContainerSetPropertyP(void)
144 {
145   ToolkitTestApplication application;
146   tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP");
147   FlexContainer flexContainer = FlexContainer::New();
148   DALI_TEST_CHECK( flexContainer );
149
150   // Add flex container to the stage
151   Stage::GetCurrent().Add( flexContainer );
152
153   // Create two actors and add them to the container
154   Actor actor1 = Actor::New();
155   Actor actor2 = Actor::New();
156   DALI_TEST_CHECK( actor1 );
157   DALI_TEST_CHECK( actor2 );
158
159   flexContainer.Add(actor1);
160   flexContainer.Add(actor2);
161
162   // Check content direction property.
163   flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, FlexContainer::RTL );
164   DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty<int>( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION );
165
166   // Check flex direction property.
167   flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::COLUMN_REVERSE );
168   DALI_TEST_EQUALS( (FlexContainer::FlexDirection)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_DIRECTION ), FlexContainer::COLUMN_REVERSE, TEST_LOCATION );
169
170   // Check flex wrap property.
171   flexContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, FlexContainer::WRAP );
172   DALI_TEST_EQUALS( (FlexContainer::WrapType)flexContainer.GetProperty<int>( FlexContainer::Property::FLEX_WRAP ), FlexContainer::WRAP, TEST_LOCATION );
173
174   // Check justify content property.
175   flexContainer.SetProperty( FlexContainer::Property::JUSTIFY_CONTENT, FlexContainer::JUSTIFY_SPACE_BETWEEN );
176   DALI_TEST_EQUALS( (FlexContainer::Justification)flexContainer.GetProperty<int>( FlexContainer::Property::JUSTIFY_CONTENT ), FlexContainer::JUSTIFY_SPACE_BETWEEN, TEST_LOCATION );
177
178   // Check align items property.
179   flexContainer.SetProperty( FlexContainer::Property::ALIGN_ITEMS, FlexContainer::ALIGN_FLEX_START );
180   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_ITEMS ), FlexContainer::ALIGN_FLEX_START, TEST_LOCATION );
181
182   // Check align content property.
183   flexContainer.SetProperty( FlexContainer::Property::ALIGN_CONTENT, FlexContainer::ALIGN_STRETCH );
184   DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty<int>( FlexContainer::Property::ALIGN_CONTENT ), FlexContainer::ALIGN_STRETCH, TEST_LOCATION );
185
186   END_TEST;
187 }
188
189 int UtcDaliToolkitFlexContainerSetChildPropertyP(void)
190 {
191   ToolkitTestApplication application;
192   tet_infoline(" UtcDaliToolkitFlexContainerSetChildPropertyP");
193   FlexContainer flexContainer = FlexContainer::New();
194   DALI_TEST_CHECK( flexContainer );
195
196   // Add flex container to the stage
197   Stage::GetCurrent().Add( flexContainer );
198
199   // Create an actor and add it to the container
200   Actor actor = Actor::New();
201   DALI_TEST_CHECK( actor );
202
203   flexContainer.Add(actor);
204
205   // Check flex child property.
206   actor.SetProperty( FlexContainer::ChildProperty::FLEX, 2.0f );
207   DALI_TEST_EQUALS( actor.GetProperty<float>( FlexContainer::ChildProperty::FLEX ), 2.0f, TEST_LOCATION );
208   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_FLEX ) == FlexContainer::ChildProperty::FLEX );
209
210   // Check align self child property.
211   actor.SetProperty( FlexContainer::ChildProperty::ALIGN_SELF, FlexContainer::ALIGN_FLEX_END );
212   DALI_TEST_EQUALS( (FlexContainer::Alignment)actor.GetProperty<int>( FlexContainer::ChildProperty::ALIGN_SELF ), FlexContainer::ALIGN_FLEX_END, TEST_LOCATION );
213   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_ALIGN_SELF ) == FlexContainer::ChildProperty::ALIGN_SELF );
214
215   // Check flex margin child property.
216   actor.SetProperty( FlexContainer::ChildProperty::FLEX_MARGIN, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
217   DALI_TEST_EQUALS( actor.GetProperty<Vector4>( FlexContainer::ChildProperty::FLEX_MARGIN ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), TEST_LOCATION );
218   DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_FLEX_MARGIN ) == FlexContainer::ChildProperty::FLEX_MARGIN );
219
220   END_TEST;
221 }
222