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>
22 #include <dali-toolkit/devel-api/styling/style-manager.h>
25 using namespace Toolkit;
27 void dali_textfield_startup(void)
29 test_return_value = TET_UNDEF;
32 void dali_textfield_cleanup(void)
34 test_return_value = TET_PASS;
40 const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend";
41 const char* const PROPERTY_NAME_PLACEHOLDER_TEXT = "placeholder-text";
42 const char* const PROPERTY_NAME_TEXT = "text";
43 const char* const PROPERTY_NAME_FONT_FAMILY = "font-family";
44 const char* const PROPERTY_NAME_FONT_STYLE = "font-style";
45 const char* const PROPERTY_NAME_POINT_SIZE = "point-size";
46 const char* const PROPERTY_NAME_EXCEED_POLICY = "exceed-policy";
47 const char* const PROPERTY_NAME_PRIMARY_CURSOR_COLOR = "primary-cursor-color";
48 const char* const PROPERTY_NAME_SECONDARY_CURSOR_COLOR = "secondary-cursor-color";
49 const char* const PROPERTY_NAME_ENABLE_CURSOR_BLINK = "enable-cursor-blink";
50 const char* const PROPERTY_NAME_CURSOR_BLINK_INTERVAL = "cursor-blink-interval";
51 const char* const PROPERTY_NAME_CURSOR_BLINK_DURATION = "cursor-blink-duration";
52 const char* const PROPERTY_NAME_GRAB_HANDLE_IMAGE = "grab-handle-image";
53 const char* const PROPERTY_NAME_DECORATION_BOUNDING_BOX = "decoration-bounding-box";
54 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment";
55 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment";
59 int UtcDaliToolkitTextFieldConstructorP(void)
61 ToolkitTestApplication application;
62 tet_infoline(" UtcDaliToolkitTextFieldConstructorP");
64 DALI_TEST_CHECK( !textField );
68 int UtcDaliToolkitTextFieldNewP(void)
70 ToolkitTestApplication application;
71 tet_infoline(" UtcDaliToolkitTextFieldNewP");
72 TextField textField = TextField::New();
73 DALI_TEST_CHECK( textField );
77 int UtcDaliToolkitTextFieldDownCastP(void)
79 ToolkitTestApplication application;
80 tet_infoline(" UtcDaliToolkitTextFieldDownCastP");
81 TextField textField1 = TextField::New();
82 BaseHandle object( textField1 );
84 TextField textField2 = TextField::DownCast( object );
85 DALI_TEST_CHECK( textField2 );
87 TextField textField3 = DownCast< TextField >( object );
88 DALI_TEST_CHECK( textField3 );
92 int UtcDaliToolkitTextFieldDownCastN(void)
94 ToolkitTestApplication application;
95 tet_infoline(" UtcDaliToolkitTextFieldDownCastN");
96 BaseHandle uninitializedObject;
97 TextField textField1 = TextField::DownCast( uninitializedObject );
98 DALI_TEST_CHECK( !textField1 );
100 TextField textField2 = DownCast< TextField >( uninitializedObject );
101 DALI_TEST_CHECK( !textField2 );
105 int UtcDaliToolkitTextFieldCopyConstructorP(void)
107 ToolkitTestApplication application;
108 tet_infoline(" UtcDaliToolkitTextFieldCopyConstructorP");
109 TextField textField = TextField::New();
110 textField.SetProperty( TextField::Property::TEXT, "Test" );
112 TextField copy( textField );
113 DALI_TEST_CHECK( copy );
114 DALI_TEST_CHECK( copy.GetProperty<std::string>( TextLabel::Property::TEXT ) == textField.GetProperty<std::string>( TextLabel::Property::TEXT ) );
118 int UtcDaliToolkitTextFieldAssignmentOperatorP(void)
120 ToolkitTestApplication application;
121 tet_infoline(" UtcDaliToolkitTextFieldAssignmentOperatorP");
122 TextField textField = TextField::New();
123 textField.SetProperty( TextField::Property::TEXT, "Test" );
125 TextField copy = textField;
126 DALI_TEST_CHECK( copy );
127 DALI_TEST_CHECK( copy.GetProperty<std::string>( TextField::Property::TEXT ) == textField.GetProperty<std::string>( TextField::Property::TEXT ) );
131 int UtcDaliTextFieldNewP(void)
133 ToolkitTestApplication application;
134 tet_infoline(" UtcDaliToolkitTextFieldNewP");
135 TextField textField = TextField::New();
136 DALI_TEST_CHECK( textField );
140 int UtcDaliTextFieldGetPropertyN(void)
142 ToolkitTestApplication application;
143 tet_infoline(" UtcDaliToolkitTextFieldGetPropertyN");
144 TextField field = TextField::New();
145 DALI_TEST_CHECK( field );
150 Property::Value value = field.GetProperty<bool>( 0 );
158 tet_result(TET_PASS);
162 tet_result(TET_FAIL);
167 // Positive test case for a method
168 int UtcDaliTextFieldGetPropertyP(void)
170 ToolkitTestApplication application;
171 tet_infoline(" UtcDaliToolkitTextFieldGetPropertyP");
172 TextField field = TextField::New();
173 DALI_TEST_CHECK( field );
175 // Check Property Indices are correct
176 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextField::Property::RENDERING_BACKEND );
177 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT ) == TextField::Property::PLACEHOLDER_TEXT );
178 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextField::Property::TEXT );
179 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextField::Property::FONT_FAMILY );
180 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextField::Property::FONT_STYLE );
181 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextField::Property::POINT_SIZE );
182 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_EXCEED_POLICY ) == TextField::Property::EXCEED_POLICY );
183 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PRIMARY_CURSOR_COLOR ) == TextField::Property::PRIMARY_CURSOR_COLOR );
184 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SECONDARY_CURSOR_COLOR ) == TextField::Property::SECONDARY_CURSOR_COLOR );
185 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_ENABLE_CURSOR_BLINK ) == TextField::Property::ENABLE_CURSOR_BLINK );
186 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_INTERVAL ) == TextField::Property::CURSOR_BLINK_INTERVAL );
187 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_DURATION ) == TextField::Property::CURSOR_BLINK_DURATION );
188 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_GRAB_HANDLE_IMAGE ) == TextField::Property::GRAB_HANDLE_IMAGE );
189 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_DECORATION_BOUNDING_BOX ) == TextField::Property::DECORATION_BOUNDING_BOX );
190 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextField::Property::HORIZONTAL_ALIGNMENT );
191 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextField::Property::VERTICAL_ALIGNMENT );
195 // Positive test case for a method
196 int UtcDaliTextFieldSetPropertyP(void)
198 ToolkitTestApplication application;
199 tet_infoline(" UtcDaliToolkitTextFieldSetPropertyP");
200 TextField field = TextField::New();
201 DALI_TEST_CHECK( field );
203 // Check exceed policy
204 field.SetProperty( TextField::Property::EXCEED_POLICY, TextField::EXCEED_POLICY_CLIP );
205 DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::EXCEED_POLICY ), TextField::EXCEED_POLICY_CLIP, TEST_LOCATION );
207 // Check cursor properties
208 field.SetProperty( TextField::Property::ENABLE_CURSOR_BLINK, true );
209 DALI_TEST_EQUALS( field.GetProperty<bool>( TextField::Property::ENABLE_CURSOR_BLINK ), true, TEST_LOCATION );
210 field.SetProperty( TextField::Property::PRIMARY_CURSOR_COLOR, Color::RED );
211 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PRIMARY_CURSOR_COLOR ), Color::RED, TEST_LOCATION );
212 field.SetProperty( TextField::Property::SECONDARY_CURSOR_COLOR, Color::BLUE );
213 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SECONDARY_CURSOR_COLOR ), Color::BLUE, TEST_LOCATION );
214 field.SetProperty( TextField::Property::CURSOR_BLINK_DURATION, 10.0f );
215 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_DURATION ), 10.0f, TEST_LOCATION );
218 field.SetProperty( TextField::Property::CURSOR_BLINK_INTERVAL, 1.0f );
219 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_INTERVAL ), 1.0f, TEST_LOCATION );
221 // Decoration bounding box
222 field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( 0, 0, 1, 1 ) );
223 DALI_TEST_EQUALS( field.GetProperty<Rect <int > >( TextField::Property::DECORATION_BOUNDING_BOX ), Rect<int>( 0, 0, 1, 1 ), TEST_LOCATION );
225 // Check that the Alignment properties can be correctly set
226 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
227 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION );
228 field.SetProperty( TextField::Property::VERTICAL_ALIGNMENT, "CENTER" );
229 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::VERTICAL_ALIGNMENT ), "CENTER", TEST_LOCATION );
232 field.SetProperty( TextField::Property::TEXT, "Setting Text" );
234 // Set placeholder text (currently not implemented)
235 field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "Setting Text" );
237 // Set Grab Handle image
238 field.SetProperty( TextField::Property::GRAB_HANDLE_IMAGE, "" );
240 // Check that the MAX_LENGTH property can be correctly set
241 const int maxNumberOfCharacters = 20;
242 field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
243 DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::MAX_LENGTH ), maxNumberOfCharacters, TEST_LOCATION );
248 // Negative test case for a method
249 int UtcDaliTextFieldSetPropertyN(void)
251 ToolkitTestApplication application;
252 tet_infoline(" UtcDaliToolkitTextFieldSetPropertyN");
253 TextField field = TextField::New();
254 DALI_TEST_CHECK( field );
259 field.SetProperty( 0, true );
267 tet_result(TET_PASS);
271 tet_result(TET_FAIL);
276 // Positive Basic Text Renderer test
277 int utcDaliTextFieldBasicRenderP(void)
279 ToolkitTestApplication application;
280 tet_infoline("UtcDaliToolkitTextFieldBasicRenderP");
281 TextField field = TextField::New();
282 DALI_TEST_CHECK( field );
284 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
288 // Render some text with the basic backend
289 field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_BASIC );
290 application.SendNotification();
291 application.Render();
295 tet_result(TET_FAIL);
300 // Positive Atlas Text Renderer test
301 int utcDaliTextFieldAtlasRenderP(void)
303 ToolkitTestApplication application;
304 tet_infoline(" UtcDaliToolkitTextFieldAtlasRenderP");
305 StyleManager styleManager = StyleManager::Get();
306 styleManager.RequestDefaultTheme();
307 TextField field = TextField::New();
308 DALI_TEST_CHECK( field );
310 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
313 // Render some text with the shared atlas backend
314 field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
315 application.SendNotification();
316 application.Render();
320 tet_result(TET_FAIL);