2 * Copyright (c) 2022 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.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
25 #include <test-application.h>
28 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);
342 application.SendNotification();
343 application.Render();
345 Vector3 preVisualPaddingSize = checkBox.GetNaturalSize();
347 tet_printf("Button RelayoutSize with text and icon (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height);
349 checkBox.SetProperty(Toolkit::DevelButton::Property::VISUAL_PADDING, Vector4(25.0f, 25.0f, 25.0f, 25.0f));
351 application.SendNotification();
352 application.Render();
354 Vector3 paddingAddedSize = checkBox.GetNaturalSize();
356 tet_printf("Button RelayoutSize with text, icon and padding (%f,%f)\n", checkBox.GetNaturalSize().width, checkBox.GetNaturalSize().height);
358 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);
360 tet_infoline("Comparing original size of button before adding padding to visual foreground\n");
362 DALI_TEST_GREATER(paddingAddedSize.width, preVisualPaddingSize.width, TEST_LOCATION);
364 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");
366 DALI_TEST_GREATER(paddingAddedSize.height, preVisualPaddingSize.height, TEST_LOCATION);
371 // Deprecated API Tests
373 int UtcDaliCheckBoxButtonSetGetSelected(void)
375 ToolkitTestApplication application;
376 tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected");
378 CheckBoxButton checkBoxButton = CheckBoxButton::New();
379 checkBoxButton.StateChangedSignal().Connect(&CheckBoxButtonClicked);
381 // global var used to check if CheckBoxButtonClicked is called;
382 gCheckBoxButtonState = false;
384 checkBoxButton.SetProperty(Button::Property::SELECTED, true);
386 DALI_TEST_EQUALS(checkBoxButton.GetProperty(Button::Property::SELECTED).Get<bool>(), true, TEST_LOCATION);
387 DALI_TEST_CHECK(gCheckBoxButtonState);
389 checkBoxButton.SetProperty(Button::Property::SELECTED, false);
391 DALI_TEST_EQUALS(checkBoxButton.GetProperty(Button::Property::SELECTED).Get<bool>(), false, TEST_LOCATION);
392 DALI_TEST_CHECK(!gCheckBoxButtonState);
394 checkBoxButton.SetProperty(Button::Property::SELECTED, true);
396 DALI_TEST_EQUALS(checkBoxButton.GetProperty(Button::Property::SELECTED).Get<bool>(), true, TEST_LOCATION);
397 DALI_TEST_CHECK(gCheckBoxButtonState);
401 int UtcDaliCheckBoxSetLabelDisabledP(void)
403 ToolkitTestApplication application;
405 CheckBoxButton checkBox = CheckBoxButton::New();
406 application.GetScene().Add(checkBox);
408 checkBox.SetProperty(Actor::Property::SIZE, Vector2(20.0f, 20.0f));
409 checkBox.SetProperty(Button::Property::DISABLED_UNSELECTED_VISUAL, "Image.jpg");
411 application.SendNotification();
412 application.Render();
414 Property::Map propertyMap;
416 propertyMap.Add(Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT)
417 .Add(Toolkit::TextVisual::Property::TEXT, "activate")
418 .Add(Toolkit::TextVisual::Property::POINT_SIZE, 15.0f);
420 checkBox.SetProperty(checkBox.GetPropertyIndex("disabled"), true);
421 checkBox.SetProperty(checkBox.GetPropertyIndex("label"), propertyMap);
423 DALI_TEST_CHECK(checkBox.GetProperty<bool>(checkBox.GetPropertyIndex("disabled")));
424 DALI_TEST_EQUALS(GetButtonText(checkBox), "activate", TEST_LOCATION);