[dali_1.2.30] Merge branch '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 #include <test-application.h>
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.GetProperty<bool>(button.GetPropertyIndex("selected")) ;
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 static std::string GetButtonText( Button button )
45 {
46   Property::Value value = button.GetProperty( Toolkit::Button::Property::LABEL );
47
48   Property::Map *labelProperty = value.GetMap();
49
50   std::string textLabel;
51
52   if ( labelProperty )
53   {
54     Property::Value* value = labelProperty->Find( Toolkit::TextVisual::Property::TEXT );
55     value->Get( textLabel );
56   }
57
58   return textLabel;
59 }
60
61 } // namespace
62
63 void checkbox_button_startup(void)
64 {
65   test_return_value = TET_UNDEF;
66 }
67
68 void checkbox_button_cleanup(void)
69 {
70   test_return_value = TET_PASS;
71 }
72
73 int UtcDaliCheckBoxButtonConstructorP(void)
74 {
75   TestApplication application;
76
77   CheckBoxButton checkBox;
78
79   DALI_TEST_CHECK( !checkBox );
80   END_TEST;
81 }
82
83 int UtcDaliCheckBoxButtonCopyConstructorP(void)
84 {
85   TestApplication application;
86
87   // Initialize an object, ref count == 1
88   CheckBoxButton checkBox = CheckBoxButton::New();
89
90   CheckBoxButton copy( checkBox );
91   DALI_TEST_CHECK( copy );
92   END_TEST;
93 }
94
95 int UtcDaliCheckBoxButtonAssignmentOperatorP(void)
96 {
97   TestApplication application;
98
99   CheckBoxButton checkBox = CheckBoxButton::New();
100
101   CheckBoxButton copy( checkBox );
102   DALI_TEST_CHECK( copy );
103
104   DALI_TEST_CHECK( checkBox == copy );
105   END_TEST;
106 }
107
108 int UtcDaliCheckBoxButtonNewP(void)
109 {
110   TestApplication application;
111
112   CheckBoxButton checkBox = CheckBoxButton::New();
113
114   DALI_TEST_CHECK( checkBox );
115   END_TEST;
116 }
117
118 int UtcDaliCheckBoxButtonDownCastP(void)
119 {
120   TestApplication application;
121
122   CheckBoxButton checkBox = CheckBoxButton::New();
123
124   BaseHandle object(checkBox);
125
126   CheckBoxButton checkBox2 = CheckBoxButton::DownCast( object );
127   DALI_TEST_CHECK(checkBox2);
128
129   CheckBoxButton checkBox3 = DownCast< CheckBoxButton >(object);
130   DALI_TEST_CHECK(checkBox3);
131   END_TEST;
132 }
133
134 int UtcDaliCheckBoxButtonDownCastN(void)
135 {
136   TestApplication application;
137
138   BaseHandle unInitializedObject;
139
140   CheckBoxButton checkBox1 = CheckBoxButton::DownCast( unInitializedObject );
141   DALI_TEST_CHECK( !checkBox1 );
142
143   CheckBoxButton checkBox2 = DownCast< CheckBoxButton >( unInitializedObject );
144   DALI_TEST_CHECK( !checkBox2 );
145   END_TEST;
146 }
147
148 int UtcDaliCheckBoxButtonSelectedPropertyP(void)
149 {
150   ToolkitTestApplication application;
151   tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
152
153   CheckBoxButton checkBoxButton = CheckBoxButton::New();
154   checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
155
156   // global var used to check if CheckBoxButtonClicked is called;
157   gCheckBoxButtonState = false;
158
159   checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), true );
160
161   DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), true, TEST_LOCATION );
162   DALI_TEST_CHECK( gCheckBoxButtonState );
163
164   checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), false );
165
166   DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), false, TEST_LOCATION );
167   DALI_TEST_CHECK( !gCheckBoxButtonState );
168
169   checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), true );
170
171   DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), true, TEST_LOCATION );
172   DALI_TEST_CHECK( gCheckBoxButtonState );
173   END_TEST;
174 }
175
176 int UtcDaliCheckBoxSetLabelP(void)
177 {
178   TestApplication application;
179
180   CheckBoxButton checkBox = CheckBoxButton::New();
181
182   Property::Map propertyMap;
183
184   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
185              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
186              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
187
188   checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
189
190   DALI_TEST_EQUALS( GetButtonText( checkBox ) , "activate", TEST_LOCATION );
191   END_TEST;
192 }
193
194 int UtcDaliCheckBoxSetDisabledPropertyP(void)
195 {
196   TestApplication application;
197
198   CheckBoxButton checkBox = CheckBoxButton::New();
199   Stage::GetCurrent().Add( checkBox );
200
201   checkBox.SetSize( Vector2( 20.0f, 20.0f ) );
202   checkBox.SetProperty(checkBox.GetPropertyIndex("disabledUnselectedBackgroundVisual"),  "Image.jpg" );
203
204   application.SendNotification();
205   application.Render();
206
207   Property::Map propertyMap;
208
209   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
210              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
211              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
212
213   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
214   checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
215
216   DALI_TEST_EQUALS( checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")), true, TEST_LOCATION );
217   DALI_TEST_EQUALS( GetButtonText( checkBox ) , "activate", TEST_LOCATION );
218
219   END_TEST;
220 }
221
222 int UtcDaliCheckBoxSettingDisabled(void)
223 {
224   ToolkitTestApplication application;
225
226   CheckBoxButton checkBox = CheckBoxButton::New();
227
228   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
229   DALI_TEST_CHECK(  checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
230
231   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), false);
232
233   DALI_TEST_CHECK(  !checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
234
235   END_TEST;
236 }
237
238 int UtcDaliCheckBoxSetLabelPadding(void)
239 {
240   tet_infoline("UtcDaliCheckBoxSetLabelPadding\n");
241
242   ToolkitTestApplication application;
243
244   CheckBoxButton checkBox = CheckBoxButton::New();
245
246   Property::Map propertyMap;
247
248   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
249              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
250              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
251
252   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL, propertyMap );
253
254   application.SendNotification();
255   application.Render();
256
257   Vector3 orginalSize = checkBox.GetNaturalSize();
258
259   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
260
261   application.SendNotification();
262   application.Render();
263
264   Vector3 paddingAddedSize = checkBox.GetNaturalSize();
265
266   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 );
267
268   tet_infoline("Comparing original size of button with just text and button size with text and padding\n");
269
270   DALI_TEST_EQUALS( orginalSize.width +10.0f + 10.0f , paddingAddedSize.width, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
271
272   DALI_TEST_EQUALS( orginalSize.height +10.0f + 10.0f , paddingAddedSize.height, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
273
274   END_TEST;
275 }
276
277 int UtcDaliCheckBoxSetForegroundPadding(void)
278 {
279   tet_infoline("UtcDaliCheckBoxSetForegroundPadding\n");
280
281   ToolkitTestApplication application;
282
283   CheckBoxButton checkBox = CheckBoxButton::New();
284
285   Property::Map propertyMap;
286
287   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
288              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
289              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
290
291   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL, propertyMap );
292   checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 5.0f, 5.0f, 5.0f, 5.0f ) );
293
294   application.SendNotification();
295   application.Render();
296
297   tet_printf( "Button RelayoutSize with text(%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
298
299   TestPlatformAbstraction& platform = application.GetPlatform();
300   platform.SetClosestImageSize( TEST_IMAGE_SIZE );
301
302   checkBox.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE );
303   checkBox.SetProperty( Toolkit::DevelButton::Property::SELECTED_VISUAL, TEST_IMAGE_ONE );
304
305
306   application.SendNotification();
307   application.Render();
308
309   Vector3 preVisualPaddingSize = checkBox.GetNaturalSize();
310
311   tet_printf( "Button RelayoutSize with text and icon (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
312
313   checkBox.SetProperty( Toolkit::DevelButton::Property::VISUAL_PADDING, Vector4( 25.0f, 25.0f, 25.0f, 25.0f ) );
314
315   application.SendNotification();
316   application.Render();
317
318   Vector3 paddingAddedSize = checkBox.GetNaturalSize();
319
320   tet_printf( "Button RelayoutSize with text, icon and padding (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
321
322   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 );
323
324   tet_infoline("Comparing original size of button before adding padding to visual foreground\n");
325
326   DALI_TEST_GREATER( paddingAddedSize.width, preVisualPaddingSize.width , TEST_LOCATION );
327
328   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");
329
330   DALI_TEST_GREATER( paddingAddedSize.height, preVisualPaddingSize.height , TEST_LOCATION );
331
332   END_TEST;
333 }
334
335 // Deprecated API Tests
336
337 int UtcDaliCheckBoxButtonSetGetSelected(void)
338 {
339   ToolkitTestApplication application;
340   tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
341
342   CheckBoxButton checkBoxButton = CheckBoxButton::New();
343   checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
344
345   // global var used to check if CheckBoxButtonClicked is called;
346   gCheckBoxButtonState = false;
347
348   checkBoxButton.SetSelected( true );
349
350   DALI_TEST_CHECK( checkBoxButton.IsSelected() );
351   DALI_TEST_CHECK( gCheckBoxButtonState );
352
353   checkBoxButton.SetSelected( false );
354
355   DALI_TEST_CHECK( !checkBoxButton.IsSelected() );
356   DALI_TEST_CHECK( !gCheckBoxButtonState );
357
358   checkBoxButton.SetSelected( true );
359
360   DALI_TEST_CHECK( checkBoxButton.IsSelected() );
361   DALI_TEST_CHECK( gCheckBoxButtonState );
362   END_TEST;
363 }
364
365 int UtcDaliCheckBoxSetLabelDisabledP(void)
366 {
367   TestApplication application;
368
369   CheckBoxButton checkBox = CheckBoxButton::New();
370   Stage::GetCurrent().Add( checkBox );
371
372   checkBox.SetSize( Vector2( 20.0f, 20.0f ) );
373   checkBox.SetDisabledBackgroundImage( "Image.jpg" );
374
375   application.SendNotification();
376   application.Render();
377
378   Property::Map propertyMap;
379
380   propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
381              .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
382              .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
383
384   checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
385   checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
386
387   DALI_TEST_CHECK(  checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
388   DALI_TEST_EQUALS( checkBox.GetLabelText(), "activate", TEST_LOCATION );
389
390   END_TEST;
391 }