2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
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>
27 using namespace Toolkit;
32 static bool gCheckBoxButtonState = false;
33 bool CheckBoxButtonClicked( Button button )
35 gCheckBoxButtonState = button.GetProperty<bool>(button.GetPropertyIndex("selected")) ;
39 static const char* TEST_IMAGE_ONE = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
40 const Vector2 TEST_IMAGE_SIZE = Vector2( 66.0f, 66.0f );
42 static std::string GetButtonText( Button button )
44 Property::Value value = button.GetProperty( Toolkit::Button::Property::LABEL );
46 Property::Map *labelProperty = value.GetMap();
48 std::string textLabel;
52 Property::Value* value = labelProperty->Find( Toolkit::TextVisual::Property::TEXT );
53 value->Get( textLabel );
61 void checkbox_button_startup(void)
63 test_return_value = TET_UNDEF;
66 void checkbox_button_cleanup(void)
68 test_return_value = TET_PASS;
71 int UtcDaliCheckBoxButtonConstructorP(void)
73 ToolkitTestApplication application;
75 CheckBoxButton checkBox;
77 DALI_TEST_CHECK( !checkBox );
81 int UtcDaliCheckBoxButtonCopyConstructorP(void)
83 ToolkitTestApplication application;
85 // Initialize an object, ref count == 1
86 CheckBoxButton checkBox = CheckBoxButton::New();
88 CheckBoxButton copy( checkBox );
89 DALI_TEST_CHECK( copy );
93 int UtcDaliCheckBoxButtonMoveConstructor(void)
95 ToolkitTestApplication application;
97 CheckBoxButton button = CheckBoxButton::New();
98 DALI_TEST_EQUALS( 1, button.GetBaseObject().ReferenceCount(), TEST_LOCATION );
99 DALI_TEST_EQUALS( button.GetProperty<bool>( Button::Property::TOGGLABLE ), true , TEST_LOCATION );
100 button.SetProperty( Button::Property::TOGGLABLE, false );
101 DALI_TEST_EQUALS( button.GetProperty<bool>( Button::Property::TOGGLABLE ), false , TEST_LOCATION );
103 CheckBoxButton moved = std::move( button );
104 DALI_TEST_CHECK( moved );
105 DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
106 DALI_TEST_EQUALS( moved.GetProperty<bool>( Button::Property::TOGGLABLE ), false , TEST_LOCATION );
107 DALI_TEST_CHECK( !button );
112 int UtcDaliCheckBoxButtonAssignmentOperatorP(void)
114 ToolkitTestApplication application;
116 CheckBoxButton checkBox = CheckBoxButton::New();
118 CheckBoxButton copy( checkBox );
119 DALI_TEST_CHECK( copy );
121 DALI_TEST_CHECK( checkBox == copy );
125 int UtcDaliCheckBoxButtonMoveAssignment(void)
127 ToolkitTestApplication application;
129 CheckBoxButton button = CheckBoxButton::New();
130 DALI_TEST_EQUALS( 1, button.GetBaseObject().ReferenceCount(), TEST_LOCATION );
131 DALI_TEST_EQUALS( button.GetProperty<bool>( Button::Property::TOGGLABLE ), true , TEST_LOCATION );
132 button.SetProperty( Button::Property::TOGGLABLE, false );
133 DALI_TEST_EQUALS( button.GetProperty<bool>( Button::Property::TOGGLABLE ), false , TEST_LOCATION );
135 CheckBoxButton moved;
136 moved = std::move( button );
137 DALI_TEST_CHECK( moved );
138 DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
139 DALI_TEST_EQUALS( moved.GetProperty<bool>( Button::Property::TOGGLABLE ), false , TEST_LOCATION );
140 DALI_TEST_CHECK( !button );
145 int UtcDaliCheckBoxButtonNewP(void)
147 ToolkitTestApplication application;
149 CheckBoxButton checkBox = CheckBoxButton::New();
151 DALI_TEST_CHECK( checkBox );
155 int UtcDaliCheckBoxButtonDownCastP(void)
157 ToolkitTestApplication application;
159 CheckBoxButton checkBox = CheckBoxButton::New();
161 BaseHandle object(checkBox);
163 CheckBoxButton checkBox2 = CheckBoxButton::DownCast( object );
164 DALI_TEST_CHECK(checkBox2);
166 CheckBoxButton checkBox3 = DownCast< CheckBoxButton >(object);
167 DALI_TEST_CHECK(checkBox3);
171 int UtcDaliCheckBoxButtonDownCastN(void)
173 ToolkitTestApplication application;
175 BaseHandle unInitializedObject;
177 CheckBoxButton checkBox1 = CheckBoxButton::DownCast( unInitializedObject );
178 DALI_TEST_CHECK( !checkBox1 );
180 CheckBoxButton checkBox2 = DownCast< CheckBoxButton >( unInitializedObject );
181 DALI_TEST_CHECK( !checkBox2 );
185 int UtcDaliCheckBoxButtonSelectedPropertyP(void)
187 ToolkitTestApplication application;
188 tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
190 CheckBoxButton checkBoxButton = CheckBoxButton::New();
191 checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
193 // global var used to check if CheckBoxButtonClicked is called;
194 gCheckBoxButtonState = false;
196 checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), true );
198 DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), true, TEST_LOCATION );
199 DALI_TEST_CHECK( gCheckBoxButtonState );
201 checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), false );
203 DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), false, TEST_LOCATION );
204 DALI_TEST_CHECK( !gCheckBoxButtonState );
206 checkBoxButton.SetProperty( checkBoxButton.GetPropertyIndex("selected"), true );
208 DALI_TEST_EQUALS( checkBoxButton.GetProperty<bool>(checkBoxButton.GetPropertyIndex("selected")), true, TEST_LOCATION );
209 DALI_TEST_CHECK( gCheckBoxButtonState );
213 int UtcDaliCheckBoxSetLabelP(void)
215 ToolkitTestApplication application;
217 CheckBoxButton checkBox = CheckBoxButton::New();
219 Property::Map propertyMap;
221 propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
222 .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
223 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
225 checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
227 DALI_TEST_EQUALS( GetButtonText( checkBox ) , "activate", TEST_LOCATION );
231 int UtcDaliCheckBoxSetDisabledPropertyP(void)
233 ToolkitTestApplication application;
235 CheckBoxButton checkBox = CheckBoxButton::New();
236 application.GetScene().Add( checkBox );
238 checkBox.SetProperty( Actor::Property::SIZE, Vector2( 20.0f, 20.0f ) );
239 checkBox.SetProperty(checkBox.GetPropertyIndex("disabledUnselectedBackgroundVisual"), "Image.jpg" );
241 application.SendNotification();
242 application.Render();
244 Property::Map propertyMap;
246 propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
247 .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
248 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
250 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
251 checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
253 DALI_TEST_EQUALS( checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")), true, TEST_LOCATION );
254 DALI_TEST_EQUALS( GetButtonText( checkBox ) , "activate", TEST_LOCATION );
259 int UtcDaliCheckBoxSettingDisabled(void)
261 ToolkitTestApplication application;
263 CheckBoxButton checkBox = CheckBoxButton::New();
265 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
266 DALI_TEST_CHECK( checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
268 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), false);
270 DALI_TEST_CHECK( !checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
275 int UtcDaliCheckBoxSetLabelPadding(void)
277 tet_infoline("UtcDaliCheckBoxSetLabelPadding\n");
279 ToolkitTestApplication application;
281 CheckBoxButton checkBox = CheckBoxButton::New();
283 Property::Map propertyMap;
285 propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
286 .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
287 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
289 checkBox.SetProperty( Toolkit::Button::Property::LABEL, propertyMap );
291 application.SendNotification();
292 application.Render();
294 Vector3 orginalSize = checkBox.GetNaturalSize();
296 checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
298 application.SendNotification();
299 application.Render();
301 Vector3 paddingAddedSize = checkBox.GetNaturalSize();
303 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 );
305 tet_infoline("Comparing original size of button with just text and button size with text and padding\n");
307 DALI_TEST_EQUALS( orginalSize.width +10.0f + 10.0f , paddingAddedSize.width, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
309 DALI_TEST_EQUALS( orginalSize.height +10.0f + 10.0f , paddingAddedSize.height, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
314 int UtcDaliCheckBoxSetForegroundPadding(void)
316 tet_infoline("UtcDaliCheckBoxSetForegroundPadding\n");
318 ToolkitTestApplication application;
320 CheckBoxButton checkBox = CheckBoxButton::New();
322 Property::Map propertyMap;
324 propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
325 .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
326 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
328 checkBox.SetProperty( Toolkit::Button::Property::LABEL, propertyMap );
329 checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 5.0f, 5.0f, 5.0f, 5.0f ) );
331 application.SendNotification();
332 application.Render();
334 tet_printf( "Button RelayoutSize with text(%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
336 TestPlatformAbstraction& platform = application.GetPlatform();
337 platform.SetClosestImageSize( TEST_IMAGE_SIZE );
339 checkBox.SetProperty( Toolkit::Button::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE );
340 checkBox.SetProperty( Toolkit::Button::Property::SELECTED_VISUAL, TEST_IMAGE_ONE );
343 application.SendNotification();
344 application.Render();
346 Vector3 preVisualPaddingSize = checkBox.GetNaturalSize();
348 tet_printf( "Button RelayoutSize with text and icon (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
350 checkBox.SetProperty( Toolkit::DevelButton::Property::VISUAL_PADDING, Vector4( 25.0f, 25.0f, 25.0f, 25.0f ) );
352 application.SendNotification();
353 application.Render();
355 Vector3 paddingAddedSize = checkBox.GetNaturalSize();
357 tet_printf( "Button RelayoutSize with text, icon and padding (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
359 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 );
361 tet_infoline("Comparing original size of button before adding padding to visual foreground\n");
363 DALI_TEST_GREATER( paddingAddedSize.width, preVisualPaddingSize.width , TEST_LOCATION );
365 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");
367 DALI_TEST_GREATER( paddingAddedSize.height, preVisualPaddingSize.height , TEST_LOCATION );
372 // Deprecated API Tests
374 int UtcDaliCheckBoxButtonSetGetSelected(void)
376 ToolkitTestApplication application;
377 tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
379 CheckBoxButton checkBoxButton = CheckBoxButton::New();
380 checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
382 // global var used to check if CheckBoxButtonClicked is called;
383 gCheckBoxButtonState = false;
385 checkBoxButton.SetProperty( Button::Property::SELECTED, true );
387 DALI_TEST_EQUALS( checkBoxButton.GetProperty( Button::Property::SELECTED ).Get<bool>(), true, TEST_LOCATION );
388 DALI_TEST_CHECK( gCheckBoxButtonState );
390 checkBoxButton.SetProperty( Button::Property::SELECTED, false );
392 DALI_TEST_EQUALS( checkBoxButton.GetProperty( Button::Property::SELECTED ).Get<bool>(), false, TEST_LOCATION );
393 DALI_TEST_CHECK( !gCheckBoxButtonState );
395 checkBoxButton.SetProperty( Button::Property::SELECTED, true );
397 DALI_TEST_EQUALS( checkBoxButton.GetProperty( Button::Property::SELECTED ).Get<bool>(), true, TEST_LOCATION );
398 DALI_TEST_CHECK( gCheckBoxButtonState );
402 int UtcDaliCheckBoxSetLabelDisabledP(void)
404 ToolkitTestApplication application;
406 CheckBoxButton checkBox = CheckBoxButton::New();
407 application.GetScene().Add( checkBox );
409 checkBox.SetProperty( Actor::Property::SIZE, Vector2( 20.0f, 20.0f ) );
410 checkBox.SetProperty(Button::Property::DISABLED_UNSELECTED_VISUAL, "Image.jpg" );
412 application.SendNotification();
413 application.Render();
415 Property::Map propertyMap;
417 propertyMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
418 .Add( Toolkit::TextVisual::Property::TEXT, "activate" )
419 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
421 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
422 checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
424 DALI_TEST_CHECK( checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
425 DALI_TEST_EQUALS( GetButtonText(checkBox), "activate", TEST_LOCATION );