Merge "Updated control transitions to work with visual transform" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-CheckBoxButton.cpp
1 /*
2  * Copyright (c) 2014 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 #include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
24 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
25 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
26
27
28 using namespace Dali;
29 using namespace Toolkit;
30
31 namespace
32 {
33
34 static bool gCheckBoxButtonState = false;
35 bool CheckBoxButtonClicked( Button button )
36 {
37   gCheckBoxButtonState = button.IsSelected();
38   return true;
39 }
40
41 static const char* TEST_IMAGE_ONE = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
42 const Vector2 TEST_IMAGE_SIZE = Vector2( 66.0f, 66.0f );
43
44
45 } // namespace
46
47 void checkbox_button_startup(void)
48 {
49   test_return_value = TET_UNDEF;
50 }
51
52 void checkbox_button_cleanup(void)
53 {
54   test_return_value = TET_PASS;
55 }
56
57 int UtcDaliCheckBoxButtonConstructorP(void)
58 {
59   TestApplication application;
60
61   CheckBoxButton checkBox;
62
63   DALI_TEST_CHECK( !checkBox );
64   END_TEST;
65 }
66
67 int UtcDaliCheckBoxButtonCopyConstructorP(void)
68 {
69   TestApplication application;
70
71   // Initialize an object, ref count == 1
72   CheckBoxButton checkBox = CheckBoxButton::New();
73
74   CheckBoxButton copy( checkBox );
75   DALI_TEST_CHECK( copy );
76   END_TEST;
77 }
78
79 int UtcDaliCheckBoxButtonAssignmentOperatorP(void)
80 {
81   TestApplication application;
82
83   CheckBoxButton checkBox = CheckBoxButton::New();
84
85   CheckBoxButton copy( checkBox );
86   DALI_TEST_CHECK( copy );
87
88   DALI_TEST_CHECK( checkBox == copy );
89   END_TEST;
90 }
91
92 int UtcDaliCheckBoxButtonNewP(void)
93 {
94   TestApplication application;
95
96   CheckBoxButton checkBox = CheckBoxButton::New();
97
98   DALI_TEST_CHECK( checkBox );
99   END_TEST;
100 }
101
102 int UtcDaliCheckBoxButtonDownCastP(void)
103 {
104   TestApplication application;
105
106   CheckBoxButton checkBox = CheckBoxButton::New();
107
108   BaseHandle object(checkBox);
109
110   CheckBoxButton checkBox2 = CheckBoxButton::DownCast( object );
111   DALI_TEST_CHECK(checkBox2);
112
113   CheckBoxButton checkBox3 = DownCast< CheckBoxButton >(object);
114   DALI_TEST_CHECK(checkBox3);
115   END_TEST;
116 }
117
118 int UtcDaliCheckBoxButtonDownCastN(void)
119 {
120   TestApplication application;
121
122   BaseHandle unInitializedObject;
123
124   CheckBoxButton checkBox1 = CheckBoxButton::DownCast( unInitializedObject );
125   DALI_TEST_CHECK( !checkBox1 );
126
127   CheckBoxButton checkBox2 = DownCast< CheckBoxButton >( unInitializedObject );
128   DALI_TEST_CHECK( !checkBox2 );
129   END_TEST;
130 }
131
132 int UtcDaliCheckBoxButtonSetGetSelected(void)
133 {
134   ToolkitTestApplication application;
135   tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
136
137   CheckBoxButton checkBoxButton = CheckBoxButton::New();
138   checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
139
140   // global var used to check if CheckBoxButtonClicked is called;
141   gCheckBoxButtonState = false;
142
143   checkBoxButton.SetSelected( true );
144
145   DALI_TEST_CHECK( checkBoxButton.IsSelected() );
146   DALI_TEST_CHECK( gCheckBoxButtonState );
147
148   checkBoxButton.SetSelected( false );
149
150   DALI_TEST_CHECK( !checkBoxButton.IsSelected() );
151   DALI_TEST_CHECK( !gCheckBoxButtonState );
152
153   checkBoxButton.SetSelected( true );
154
155   DALI_TEST_CHECK( checkBoxButton.IsSelected() );
156   DALI_TEST_CHECK( gCheckBoxButtonState );
157   END_TEST;
158 }
159
160 int UtcDaliCheckBoxSetLabelP(void)
161 {
162   TestApplication application;
163
164   CheckBoxButton checkBox = CheckBoxButton::New();
165
166   Property::Map propertyMap;
167
168   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
169              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
170              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
171
172   checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
173
174   DALI_TEST_EQUALS( checkBox.GetLabelText(), "activate", TEST_LOCATION ); // Change to use GerProperty once that code is implemented
175   END_TEST;
176 }
177
178 int UtcDaliCheckBoxSetLabelDisabledP(void)
179 {
180   TestApplication application;
181
182   CheckBoxButton checkBox = CheckBoxButton::New();
183   Stage::GetCurrent().Add( checkBox );
184
185   checkBox.SetSize( Vector2( 20.0f, 20.0f ) );
186   checkBox.SetDisabledBackgroundImage( "Image.jpg" );
187
188   application.SendNotification();
189   application.Render();
190
191   Property::Map propertyMap;
192
193   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
194              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
195              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
196
197   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
198   checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
199
200   DALI_TEST_CHECK(  checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
201   DALI_TEST_EQUALS( checkBox.GetLabelText(), "activate", TEST_LOCATION ); // Change to use GetProperty once that code is implemented
202
203   END_TEST;
204 }
205
206 int UtcDaliCheckBoxSettingDisabled(void)
207 {
208   ToolkitTestApplication application;
209
210   CheckBoxButton checkBox = CheckBoxButton::New();
211
212   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
213   DALI_TEST_CHECK(  checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
214
215   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), false);
216
217   DALI_TEST_CHECK(  !checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
218
219   END_TEST;
220 }
221
222 int UtcDaliCheckBoxSetLabelPadding(void)
223 {
224   tet_infoline("UtcDaliCheckBoxSetLabelPadding\n");
225
226   ToolkitTestApplication application;
227
228   CheckBoxButton checkBox = CheckBoxButton::New();
229
230   Property::Map propertyMap;
231
232   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
233              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
234              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
235
236   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL, propertyMap );
237
238   application.SendNotification();
239   application.Render();
240
241   Vector3 orginalSize = checkBox.GetNaturalSize();
242
243   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
244
245   application.SendNotification();
246   application.Render();
247
248   Vector3 paddingAddedSize = checkBox.GetNaturalSize();
249
250   DALI_TEST_EQUALS( checkBox.GetProperty<Vector4>( Toolkit::DevelButton::Property::LABEL_PADDING ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
251
252   tet_infoline("Comparing original size of button with just text and button size with text and padding\n");
253
254   DALI_TEST_EQUALS( orginalSize.width +10.0f + 10.0f , paddingAddedSize.width, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
255
256   DALI_TEST_EQUALS( orginalSize.height +10.0f + 10.0f , paddingAddedSize.height, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
257
258   END_TEST;
259 }
260
261 int UtcDaliCheckBoxSetForegroundPadding(void)
262 {
263   tet_infoline("UtcDaliCheckBoxSetForegroundPadding\n");
264
265   ToolkitTestApplication application;
266
267   CheckBoxButton checkBox = CheckBoxButton::New();
268
269   Property::Map propertyMap;
270
271   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
272              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
273              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
274
275   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL, propertyMap );
276   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 5.0f, 5.0f, 5.0f, 5.0f ) );
277
278   application.SendNotification();
279   application.Render();
280
281   tet_printf( "Button RelayoutSize with text(%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
282
283   TestPlatformAbstraction& platform = application.GetPlatform();
284   platform.SetClosestImageSize( TEST_IMAGE_SIZE );
285
286   checkBox.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE );
287   checkBox.SetProperty( Toolkit::DevelButton::Property::SELECTED_VISUAL, TEST_IMAGE_ONE );
288
289
290   application.SendNotification();
291   application.Render();
292
293   Vector3 preVisualPaddingSize = checkBox.GetNaturalSize();
294
295   tet_printf( "Button RelayoutSize with text and icon (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
296
297   checkBox.SetProperty( Toolkit::DevelButton::Property::VISUAL_PADDING, Vector4( 25.0f, 25.0f, 25.0f, 25.0f ) );
298
299   application.SendNotification();
300   application.Render();
301
302   Vector3 paddingAddedSize = checkBox.GetNaturalSize();
303
304   tet_printf( "Button RelayoutSize with text, icon and padding (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
305
306   DALI_TEST_EQUALS( checkBox.GetProperty<Vector4>( Toolkit::DevelButton::Property::VISUAL_PADDING ), Vector4( 25.0f, 25.0f, 25.0f, 25.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
307
308   tet_infoline("Comparing original size of button before adding padding to visual foreground\n");
309
310   DALI_TEST_GREATER( paddingAddedSize.width, preVisualPaddingSize.width , TEST_LOCATION );
311
312   tet_infoline("Text and Visual are side by side, visual height and padding must be greater than text height and padding for this test\n");
313
314   DALI_TEST_GREATER( paddingAddedSize.height, preVisualPaddingSize.height , TEST_LOCATION );
315
316   END_TEST;
317 }