2 * Copyright (c) 2014 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>
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>
29 using namespace Toolkit;
34 static bool gCheckBoxButtonState = false;
35 bool CheckBoxButtonClicked( Button button )
37 gCheckBoxButtonState = button.IsSelected();
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 );
47 void checkbox_button_startup(void)
49 test_return_value = TET_UNDEF;
52 void checkbox_button_cleanup(void)
54 test_return_value = TET_PASS;
57 int UtcDaliCheckBoxButtonConstructorP(void)
59 TestApplication application;
61 CheckBoxButton checkBox;
63 DALI_TEST_CHECK( !checkBox );
67 int UtcDaliCheckBoxButtonCopyConstructorP(void)
69 TestApplication application;
71 // Initialize an object, ref count == 1
72 CheckBoxButton checkBox = CheckBoxButton::New();
74 CheckBoxButton copy( checkBox );
75 DALI_TEST_CHECK( copy );
79 int UtcDaliCheckBoxButtonAssignmentOperatorP(void)
81 TestApplication application;
83 CheckBoxButton checkBox = CheckBoxButton::New();
85 CheckBoxButton copy( checkBox );
86 DALI_TEST_CHECK( copy );
88 DALI_TEST_CHECK( checkBox == copy );
92 int UtcDaliCheckBoxButtonNewP(void)
94 TestApplication application;
96 CheckBoxButton checkBox = CheckBoxButton::New();
98 DALI_TEST_CHECK( checkBox );
102 int UtcDaliCheckBoxButtonDownCastP(void)
104 TestApplication application;
106 CheckBoxButton checkBox = CheckBoxButton::New();
108 BaseHandle object(checkBox);
110 CheckBoxButton checkBox2 = CheckBoxButton::DownCast( object );
111 DALI_TEST_CHECK(checkBox2);
113 CheckBoxButton checkBox3 = DownCast< CheckBoxButton >(object);
114 DALI_TEST_CHECK(checkBox3);
118 int UtcDaliCheckBoxButtonDownCastN(void)
120 TestApplication application;
122 BaseHandle unInitializedObject;
124 CheckBoxButton checkBox1 = CheckBoxButton::DownCast( unInitializedObject );
125 DALI_TEST_CHECK( !checkBox1 );
127 CheckBoxButton checkBox2 = DownCast< CheckBoxButton >( unInitializedObject );
128 DALI_TEST_CHECK( !checkBox2 );
132 int UtcDaliCheckBoxButtonSetGetSelected(void)
134 ToolkitTestApplication application;
135 tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
137 CheckBoxButton checkBoxButton = CheckBoxButton::New();
138 checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked );
140 // global var used to check if CheckBoxButtonClicked is called;
141 gCheckBoxButtonState = false;
143 checkBoxButton.SetSelected( true );
145 DALI_TEST_CHECK( checkBoxButton.IsSelected() );
146 DALI_TEST_CHECK( gCheckBoxButtonState );
148 checkBoxButton.SetSelected( false );
150 DALI_TEST_CHECK( !checkBoxButton.IsSelected() );
151 DALI_TEST_CHECK( !gCheckBoxButtonState );
153 checkBoxButton.SetSelected( true );
155 DALI_TEST_CHECK( checkBoxButton.IsSelected() );
156 DALI_TEST_CHECK( gCheckBoxButtonState );
160 int UtcDaliCheckBoxSetLabelP(void)
162 TestApplication application;
164 CheckBoxButton checkBox = CheckBoxButton::New();
166 Property::Map propertyMap;
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 );
172 checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
174 DALI_TEST_EQUALS( checkBox.GetLabelText(), "activate", TEST_LOCATION ); // Change to use GerProperty once that code is implemented
178 int UtcDaliCheckBoxSetLabelDisabledP(void)
180 TestApplication application;
182 CheckBoxButton checkBox = CheckBoxButton::New();
183 Stage::GetCurrent().Add( checkBox );
185 checkBox.SetSize( Vector2( 20.0f, 20.0f ) );
186 checkBox.SetDisabledBackgroundImage( "Image.jpg" );
188 application.SendNotification();
189 application.Render();
191 Property::Map propertyMap;
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 );
197 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
198 checkBox.SetProperty( checkBox.GetPropertyIndex("label"), propertyMap );
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
206 int UtcDaliCheckBoxSettingDisabled(void)
208 ToolkitTestApplication application;
210 CheckBoxButton checkBox = CheckBoxButton::New();
212 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
213 DALI_TEST_CHECK( checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
215 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), false);
217 DALI_TEST_CHECK( !checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")) );
222 int UtcDaliCheckBoxSetLabelPadding(void)
224 tet_infoline("UtcDaliCheckBoxSetLabelPadding\n");
226 ToolkitTestApplication application;
228 CheckBoxButton checkBox = CheckBoxButton::New();
230 Property::Map propertyMap;
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 );
236 checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL, propertyMap );
238 application.SendNotification();
239 application.Render();
241 Vector3 orginalSize = checkBox.GetNaturalSize();
243 checkBox.SetProperty( Toolkit::DevelButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
245 application.SendNotification();
246 application.Render();
248 Vector3 paddingAddedSize = checkBox.GetNaturalSize();
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 );
252 tet_infoline("Comparing original size of button with just text and button size with text and padding\n");
254 DALI_TEST_EQUALS( orginalSize.width +10.0f + 10.0f , paddingAddedSize.width, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
256 DALI_TEST_EQUALS( orginalSize.height +10.0f + 10.0f , paddingAddedSize.height, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
261 int UtcDaliCheckBoxSetForegroundPadding(void)
263 tet_infoline("UtcDaliCheckBoxSetForegroundPadding\n");
265 ToolkitTestApplication application;
267 CheckBoxButton checkBox = CheckBoxButton::New();
269 Property::Map propertyMap;
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 );
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 ) );
278 application.SendNotification();
279 application.Render();
281 tet_printf( "Button RelayoutSize with text(%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
283 TestPlatformAbstraction& platform = application.GetPlatform();
284 platform.SetClosestImageSize( TEST_IMAGE_SIZE );
286 checkBox.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE );
287 checkBox.SetProperty( Toolkit::DevelButton::Property::SELECTED_VISUAL, TEST_IMAGE_ONE );
290 application.SendNotification();
291 application.Render();
293 Vector3 preVisualPaddingSize = checkBox.GetNaturalSize();
295 tet_printf( "Button RelayoutSize with text and icon (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
297 checkBox.SetProperty( Toolkit::DevelButton::Property::VISUAL_PADDING, Vector4( 25.0f, 25.0f, 25.0f, 25.0f ) );
299 application.SendNotification();
300 application.Render();
302 Vector3 paddingAddedSize = checkBox.GetNaturalSize();
304 tet_printf( "Button RelayoutSize with text, icon and padding (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height );
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 );
308 tet_infoline("Comparing original size of button before adding padding to visual foreground\n");
310 DALI_TEST_GREATER( paddingAddedSize.width, preVisualPaddingSize.width , TEST_LOCATION );
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");
314 DALI_TEST_GREATER( paddingAddedSize.height, preVisualPaddingSize.height , TEST_LOCATION );