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/integration-api/events/key-event-integ.h>
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali-toolkit/devel-api/styling/style-manager.h>
26 using namespace Toolkit;
28 void dali_textfield_startup(void)
30 test_return_value = TET_UNDEF;
33 void dali_textfield_cleanup(void)
35 test_return_value = TET_PASS;
41 const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend";
42 const char* const PROPERTY_NAME_TEXT = "text";
43 const char* const PROPERTY_NAME_PLACEHOLDER_TEXT = "placeholder-text";
44 const char* const PROPERTY_NAME_PLACEHOLDER_TEXT_FOCUSED = "placeholder-text-focused";
45 const char* const PROPERTY_NAME_FONT_FAMILY = "font-family";
46 const char* const PROPERTY_NAME_FONT_STYLE = "font-style";
47 const char* const PROPERTY_NAME_POINT_SIZE = "point-size";
48 const char* const PROPERTY_NAME_MAX_LENGTH = "max-length";
49 const char* const PROPERTY_NAME_EXCEED_POLICY = "exceed-policy";
50 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment";
51 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment";
52 const char* const PROPERTY_NAME_TEXT_COLOR = "text-color";
53 const char* const PROPERTY_NAME_PLACEHOLDER_TEXT_COLOR = "placeholder-text-color";
54 const char* const PROPERTY_NAME_SHADOW_OFFSET = "shadow-offset";
55 const char* const PROPERTY_NAME_SHADOW_COLOR = "shadow-color";
56 const char* const PROPERTY_NAME_PRIMARY_CURSOR_COLOR = "primary-cursor-color";
57 const char* const PROPERTY_NAME_SECONDARY_CURSOR_COLOR = "secondary-cursor-color";
58 const char* const PROPERTY_NAME_ENABLE_CURSOR_BLINK = "enable-cursor-blink";
59 const char* const PROPERTY_NAME_CURSOR_BLINK_INTERVAL = "cursor-blink-interval";
60 const char* const PROPERTY_NAME_CURSOR_BLINK_DURATION = "cursor-blink-duration";
61 const char* const PROPERTY_NAME_GRAB_HANDLE_IMAGE = "grab-handle-image";
62 const char* const PROPERTY_NAME_GRAB_HANDLE_PRESSED_IMAGE = "grab-handle-pressed-image";
63 const char* const PROPERTY_NAME_SCROLL_THRESHOLD = "scroll-threshold";
64 const char* const PROPERTY_NAME_SCROLL_SPEED = "scroll-speed";
65 const char* const PROPERTY_NAME_SELECTION_HANDLE_IMAGE_LEFT = "selection-handle-image-left";
66 const char* const PROPERTY_NAME_SELECTION_HANDLE_IMAGE_RIGHT = "selection-handle-image-right";
67 const char* const PROPERTY_NAME_SELECTION_HANDLE_PRESSED_IMAGE_LEFT = "selection-handle-pressed-image-left";
68 const char* const PROPERTY_NAME_SELECTION_HANDLE_PRESSED_IMAGE_RIGHT = "selection-handle-pressed-image-right";
69 const char* const PROPERTY_NAME_SELECTION_HIGHLIGHT_COLOR = "selection-highlight-color";
70 const char* const PROPERTY_NAME_DECORATION_BOUNDING_BOX = "decoration-bounding-box";
71 const char* const PROPERTY_NAME_INPUT_METHOD_SETTINGS = "input-method-settings";
73 const unsigned int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND;
75 const Vector4 PLACEHOLDER_TEXT_COLOR( 0.8f, 0.8f, 0.8f, 0.8f );
76 const Dali::Vector4 LIGHT_BLUE( (0xb2 / 255.0f), (0xeb / 255.0f), (0xf2 / 255.0f), 0.5f ); // The text highlight color.
78 const unsigned int CURSOR_BLINK_INTERVAL = 500u; // Cursor blink interval
79 const float TO_MILLISECONDS = 1000.f;
80 const float TO_SECONDS = 1.f / TO_MILLISECONDS;
82 const float SCROLL_THRESHOLD = 10.f;
83 const float SCROLL_SPEED = 300.f;
85 static bool gTextChangedCallBackCalled;
86 static bool gMaxCharactersCallBackCalled;
88 static void TestTextChangedCallback( TextField control )
90 tet_infoline(" TestTextChangedCallback");
92 gTextChangedCallBackCalled = true;
95 static void TestMaxLengthReachedCallback( TextField control )
97 tet_infoline(" TestMaxLengthReachedCallback");
99 gMaxCharactersCallBackCalled = true;
104 int UtcDaliToolkitTextFieldConstructorP(void)
106 ToolkitTestApplication application;
107 tet_infoline(" UtcDaliToolkitTextFieldConstructorP");
109 DALI_TEST_CHECK( !textField );
113 int UtcDaliToolkitTextFieldNewP(void)
115 ToolkitTestApplication application;
116 tet_infoline(" UtcDaliToolkitTextFieldNewP");
117 TextField textField = TextField::New();
118 DALI_TEST_CHECK( textField );
122 int UtcDaliToolkitTextFieldDownCastP(void)
124 ToolkitTestApplication application;
125 tet_infoline(" UtcDaliToolkitTextFieldDownCastP");
126 TextField textField1 = TextField::New();
127 BaseHandle object( textField1 );
129 TextField textField2 = TextField::DownCast( object );
130 DALI_TEST_CHECK( textField2 );
132 TextField textField3 = DownCast< TextField >( object );
133 DALI_TEST_CHECK( textField3 );
137 int UtcDaliToolkitTextFieldDownCastN(void)
139 ToolkitTestApplication application;
140 tet_infoline(" UtcDaliToolkitTextFieldDownCastN");
141 BaseHandle uninitializedObject;
142 TextField textField1 = TextField::DownCast( uninitializedObject );
143 DALI_TEST_CHECK( !textField1 );
145 TextField textField2 = DownCast< TextField >( uninitializedObject );
146 DALI_TEST_CHECK( !textField2 );
150 int UtcDaliToolkitTextFieldCopyConstructorP(void)
152 ToolkitTestApplication application;
153 tet_infoline(" UtcDaliToolkitTextFieldCopyConstructorP");
154 TextField textField = TextField::New();
155 textField.SetProperty( TextField::Property::TEXT, "Test" );
157 TextField copy( textField );
158 DALI_TEST_CHECK( copy );
159 DALI_TEST_CHECK( copy.GetProperty<std::string>( TextLabel::Property::TEXT ) == textField.GetProperty<std::string>( TextLabel::Property::TEXT ) );
163 int UtcDaliToolkitTextFieldAssignmentOperatorP(void)
165 ToolkitTestApplication application;
166 tet_infoline(" UtcDaliToolkitTextFieldAssignmentOperatorP");
167 TextField textField = TextField::New();
168 textField.SetProperty( TextField::Property::TEXT, "Test" );
170 TextField copy = textField;
171 DALI_TEST_CHECK( copy );
172 DALI_TEST_CHECK( copy.GetProperty<std::string>( TextField::Property::TEXT ) == textField.GetProperty<std::string>( TextField::Property::TEXT ) );
176 int UtcDaliTextFieldNewP(void)
178 ToolkitTestApplication application;
179 tet_infoline(" UtcDaliToolkitTextFieldNewP");
180 TextField textField = TextField::New();
181 DALI_TEST_CHECK( textField );
185 // Positive test case for a method
186 int UtcDaliTextFieldGetPropertyP(void)
188 ToolkitTestApplication application;
189 tet_infoline(" UtcDaliToolkitTextFieldGetPropertyP");
190 TextField field = TextField::New();
191 DALI_TEST_CHECK( field );
193 // Check Property Indices are correct
194 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextField::Property::RENDERING_BACKEND );
195 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextField::Property::TEXT );
196 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT ) == TextField::Property::PLACEHOLDER_TEXT );
197 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT_FOCUSED ) == TextField::Property::PLACEHOLDER_TEXT_FOCUSED );
198 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextField::Property::FONT_FAMILY );
199 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextField::Property::FONT_STYLE );
200 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextField::Property::POINT_SIZE );
201 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_MAX_LENGTH ) == TextField::Property::MAX_LENGTH );
202 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_EXCEED_POLICY ) == TextField::Property::EXCEED_POLICY );
203 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextField::Property::HORIZONTAL_ALIGNMENT );
204 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextField::Property::VERTICAL_ALIGNMENT );
205 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_TEXT_COLOR ) == TextField::Property::TEXT_COLOR );
206 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT_COLOR ) == TextField::Property::PLACEHOLDER_TEXT_COLOR );
207 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SHADOW_OFFSET ) == TextField::Property::SHADOW_OFFSET );
208 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SHADOW_COLOR ) == TextField::Property::SHADOW_COLOR );
209 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PRIMARY_CURSOR_COLOR ) == TextField::Property::PRIMARY_CURSOR_COLOR );
210 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SECONDARY_CURSOR_COLOR ) == TextField::Property::SECONDARY_CURSOR_COLOR );
211 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_ENABLE_CURSOR_BLINK ) == TextField::Property::ENABLE_CURSOR_BLINK );
212 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_INTERVAL ) == TextField::Property::CURSOR_BLINK_INTERVAL );
213 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_DURATION ) == TextField::Property::CURSOR_BLINK_DURATION );
214 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_GRAB_HANDLE_IMAGE ) == TextField::Property::GRAB_HANDLE_IMAGE );
215 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_GRAB_HANDLE_PRESSED_IMAGE ) == TextField::Property::GRAB_HANDLE_PRESSED_IMAGE );
216 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SCROLL_THRESHOLD ) == TextField::Property::SCROLL_THRESHOLD );
217 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SCROLL_SPEED ) == TextField::Property::SCROLL_SPEED );
218 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SELECTION_HANDLE_IMAGE_LEFT ) == TextField::Property::SELECTION_HANDLE_IMAGE_LEFT );
219 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SELECTION_HANDLE_IMAGE_RIGHT ) == TextField::Property::SELECTION_HANDLE_IMAGE_RIGHT );
220 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SELECTION_HANDLE_PRESSED_IMAGE_LEFT ) == TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_LEFT );
221 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SELECTION_HANDLE_PRESSED_IMAGE_RIGHT ) == TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT );
222 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SELECTION_HIGHLIGHT_COLOR ) == TextField::Property::SELECTION_HIGHLIGHT_COLOR );
223 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_DECORATION_BOUNDING_BOX ) == TextField::Property::DECORATION_BOUNDING_BOX );
224 DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_INPUT_METHOD_SETTINGS ) == TextField::Property::INPUT_METHOD_SETTINGS );
228 // Positive test case for a method
229 int UtcDaliTextFieldSetPropertyP(void)
231 ToolkitTestApplication application;
232 tet_infoline(" UtcDaliToolkitTextFieldSetPropertyP");
233 TextField field = TextField::New();
234 DALI_TEST_CHECK( field );
237 DALI_TEST_EQUALS( field.GetProperty<unsigned int>( TextField::Property::RENDERING_BACKEND ), DEFAULT_RENDERING_BACKEND, TEST_LOCATION );
238 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::TEXT ), std::string(""), TEST_LOCATION );
239 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::PLACEHOLDER_TEXT ), std::string(""), TEST_LOCATION );
240 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::PLACEHOLDER_TEXT_FOCUSED ), std::string(""), TEST_LOCATION );
241 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::FONT_FAMILY ), std::string(""), TEST_LOCATION );
242 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::FONT_STYLE ), std::string(""), TEST_LOCATION );
243 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::POINT_SIZE ), 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
244 DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::MAX_LENGTH ), 50u, TEST_LOCATION );
245 DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::EXCEED_POLICY ), TextField::EXCEED_POLICY_CLIP, TEST_LOCATION );
246 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION );
247 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::VERTICAL_ALIGNMENT ), "TOP", TEST_LOCATION );
248 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::TEXT_COLOR ), Color::BLACK, TEST_LOCATION );
249 DALI_TEST_EQUALS( field.GetProperty<Vector2>( TextField::Property::SHADOW_OFFSET ), Vector2::ZERO, TEST_LOCATION );
250 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PLACEHOLDER_TEXT_COLOR ), PLACEHOLDER_TEXT_COLOR, TEST_LOCATION );
251 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SHADOW_COLOR ), Color::BLACK, TEST_LOCATION );
252 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PRIMARY_CURSOR_COLOR ), Color::BLACK, TEST_LOCATION );
253 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SECONDARY_CURSOR_COLOR ), Color::BLACK, TEST_LOCATION );
254 DALI_TEST_EQUALS( field.GetProperty<bool>( TextField::Property::ENABLE_CURSOR_BLINK ), true, TEST_LOCATION );
255 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_INTERVAL ), CURSOR_BLINK_INTERVAL * TO_SECONDS, TEST_LOCATION );
256 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_DURATION ), 0.f, TEST_LOCATION );
257 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::SCROLL_THRESHOLD ), SCROLL_THRESHOLD, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
258 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::SCROLL_SPEED ), SCROLL_SPEED, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
259 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SELECTION_HIGHLIGHT_COLOR ), LIGHT_BLUE, TEST_LOCATION );
261 // Check the render backend property.
262 field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_BASIC );
263 DALI_TEST_EQUALS( field.GetProperty<unsigned int>( TextField::Property::RENDERING_BACKEND ), Text::RENDERING_BASIC, TEST_LOCATION );
265 // Check text property.
266 field.SetProperty( TextField::Property::TEXT, "Setting Text" );
267 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::TEXT ), std::string("Setting Text"), TEST_LOCATION );
269 // Check placeholder text properties.
270 field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "Setting Placeholder Text" );
271 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::PLACEHOLDER_TEXT ), std::string("Setting Placeholder Text"), TEST_LOCATION );
273 field.SetProperty( TextField::Property::PLACEHOLDER_TEXT_FOCUSED, "Setting Placeholder Text Focused" );
274 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::PLACEHOLDER_TEXT_FOCUSED ), std::string("Setting Placeholder Text Focused"), TEST_LOCATION );
276 // Check font properties.
277 field.SetProperty( TextField::Property::FONT_FAMILY, "Setting font family" );
278 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::FONT_FAMILY ), std::string("Setting font family"), TEST_LOCATION );
279 field.SetProperty( TextField::Property::FONT_STYLE, "Setting font style" );
280 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::FONT_STYLE ), std::string("Setting font style"), TEST_LOCATION );
281 field.SetProperty( TextField::Property::POINT_SIZE, 10.f );
282 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::POINT_SIZE ), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
284 // Check that the MAX_LENGTH property can be correctly set
285 const int maxNumberOfCharacters = 20;
286 field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
287 DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::MAX_LENGTH ), maxNumberOfCharacters, TEST_LOCATION );
289 // Check exceed policy
290 // Set a different exceed policy is not implemented.
292 // Check that the Alignment properties can be correctly set
293 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "END" );
294 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::HORIZONTAL_ALIGNMENT ), "END", TEST_LOCATION );
295 field.SetProperty( TextField::Property::VERTICAL_ALIGNMENT, "CENTER" );
296 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::VERTICAL_ALIGNMENT ), "CENTER", TEST_LOCATION );
298 // Check text's color property
299 field.SetProperty( TextField::Property::TEXT_COLOR, Color::WHITE );
300 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::TEXT_COLOR ), Color::WHITE, TEST_LOCATION );
302 // Check placeholder text's color property.
303 field.SetProperty( TextField::Property::PLACEHOLDER_TEXT_COLOR, Color::RED );
304 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PLACEHOLDER_TEXT_COLOR ), Color::RED, TEST_LOCATION );
306 // Check shadow properties.
307 field.SetProperty( TextField::Property::SHADOW_OFFSET, Vector2( 1.f, 1.f ) );
308 DALI_TEST_EQUALS( field.GetProperty<Vector2>( TextField::Property::SHADOW_OFFSET ), Vector2( 1.f, 1.f ), TEST_LOCATION );
309 field.SetProperty( TextField::Property::SHADOW_COLOR, Color::GREEN );
310 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SHADOW_COLOR ), Color::GREEN, TEST_LOCATION );
312 // Check cursor properties
313 field.SetProperty( TextField::Property::PRIMARY_CURSOR_COLOR, Color::RED );
314 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PRIMARY_CURSOR_COLOR ), Color::RED, TEST_LOCATION );
315 field.SetProperty( TextField::Property::SECONDARY_CURSOR_COLOR, Color::BLUE );
316 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SECONDARY_CURSOR_COLOR ), Color::BLUE, TEST_LOCATION );
318 field.SetProperty( TextField::Property::ENABLE_CURSOR_BLINK, false );
319 DALI_TEST_EQUALS( field.GetProperty<bool>( TextField::Property::ENABLE_CURSOR_BLINK ), false, TEST_LOCATION );
320 field.SetProperty( TextField::Property::CURSOR_BLINK_INTERVAL, 1.f );
321 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_INTERVAL ), 1.f, TEST_LOCATION );
322 field.SetProperty( TextField::Property::CURSOR_BLINK_DURATION, 10.f );
323 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_DURATION ), 10.f, TEST_LOCATION );
325 // Check scroll properties.
326 field.SetProperty( TextField::Property::SCROLL_THRESHOLD, 1.f );
327 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::SCROLL_THRESHOLD ), 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
328 field.SetProperty( TextField::Property::SCROLL_SPEED, 100.f );
329 DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::SCROLL_SPEED ), 100.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
331 // Check handle images
332 field.SetProperty( TextField::Property::GRAB_HANDLE_IMAGE, "image1" );
333 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::GRAB_HANDLE_IMAGE ), "image1", TEST_LOCATION );
334 field.SetProperty( TextField::Property::GRAB_HANDLE_PRESSED_IMAGE, "image2" );
335 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::GRAB_HANDLE_PRESSED_IMAGE ), "image2", TEST_LOCATION );
336 field.SetProperty( TextField::Property::SELECTION_HANDLE_IMAGE_LEFT, "image3" );
337 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::SELECTION_HANDLE_IMAGE_LEFT ), "image3", TEST_LOCATION );
338 field.SetProperty( TextField::Property::SELECTION_HANDLE_IMAGE_RIGHT, "image4" );
339 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::SELECTION_HANDLE_IMAGE_RIGHT ), "image4", TEST_LOCATION );
340 field.SetProperty( TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_LEFT, "image5" );
341 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_LEFT ), "image5", TEST_LOCATION );
342 field.SetProperty( TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT, "image6" );
343 DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT ), "image6", TEST_LOCATION );
345 // Check the highlight color
346 field.SetProperty( TextField::Property::SELECTION_HIGHLIGHT_COLOR, Color::GREEN );
347 DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SELECTION_HIGHLIGHT_COLOR ), Color::GREEN, TEST_LOCATION );
349 // Decoration bounding box
350 field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( 0, 0, 1, 1 ) );
351 DALI_TEST_EQUALS( field.GetProperty<Rect <int > >( TextField::Property::DECORATION_BOUNDING_BOX ), Rect<int>( 0, 0, 1, 1 ), TEST_LOCATION );
356 // Positive Basic Text Renderer test
357 int utcDaliTextFieldBasicRenderP(void)
359 ToolkitTestApplication application;
360 tet_infoline("UtcDaliToolkitTextFieldBasicRenderP");
361 TextField field = TextField::New();
362 DALI_TEST_CHECK( field );
364 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
368 // Render some text with the basic backend
369 field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_BASIC );
370 application.SendNotification();
371 application.Render();
375 tet_result(TET_FAIL);
380 // Positive Atlas Text Renderer test
381 int utcDaliTextFieldAtlasRenderP(void)
383 ToolkitTestApplication application;
384 tet_infoline(" UtcDaliToolkitTextFieldAtlasRenderP");
385 StyleManager styleManager = StyleManager::Get();
386 styleManager.RequestDefaultTheme();
387 TextField field = TextField::New();
388 DALI_TEST_CHECK( field );
390 field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
393 // Render some text with the shared atlas backend
394 field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
395 application.SendNotification();
396 application.Render();
400 tet_result(TET_FAIL);
405 // Positive test for the text-changed signal.
406 int utcDaliTextFieldTextChangedP(void)
408 ToolkitTestApplication application;
409 tet_infoline(" utcDaliTextFieldTextChangedP");
410 TextField field = TextField::New();
411 DALI_TEST_CHECK( field );
413 Stage::GetCurrent().Add( field );
415 field.TextChangedSignal().Connect(&TestTextChangedCallback);
417 gTextChangedCallBackCalled = false;
418 field.SetProperty( TextField::Property::TEXT, "ABC" );
419 DALI_TEST_CHECK( gTextChangedCallBackCalled );
421 application.SendNotification();
423 field.SetKeyInputFocus();
425 Dali::Integration::KeyEvent keyevent;
426 keyevent.keyName = "D";
427 keyevent.keyString = "D";
428 keyevent.keyCode = 0;
429 keyevent.keyModifier = 0;
431 keyevent.state = Integration::KeyEvent::Down;
433 gTextChangedCallBackCalled = false;
434 application.ProcessEvent( keyevent );
435 DALI_TEST_CHECK( gTextChangedCallBackCalled );
440 // Negative test for the text-changed signal.
441 int utcDaliTextFieldTextChangedN(void)
443 ToolkitTestApplication application;
444 tet_infoline(" utcDaliTextFieldTextChangedN");
445 TextField field = TextField::New();
446 DALI_TEST_CHECK( field );
448 Stage::GetCurrent().Add( field );
450 field.TextChangedSignal().Connect(&TestTextChangedCallback);
452 gTextChangedCallBackCalled = false;
453 field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "ABC" ); // Setting placeholder, not TEXT
454 DALI_TEST_CHECK( !gTextChangedCallBackCalled );
459 // Positive test for Max Characters reached signal.
460 int utcDaliTextFieldMaxCharactersReachedP(void)
462 ToolkitTestApplication application;
463 tet_infoline(" utcDaliTextFieldMaxCharactersReachedP");
464 TextField field = TextField::New();
465 DALI_TEST_CHECK( field );
467 Stage::GetCurrent().Add( field );
469 const int maxNumberOfCharacters = 1;
470 field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
472 field.SetKeyInputFocus();
474 gMaxCharactersCallBackCalled = false;
475 field.MaxLengthReachedSignal().Connect(&TestMaxLengthReachedCallback);
477 Dali::Integration::KeyEvent keyevent;
478 keyevent.keyName = "a";
479 keyevent.keyString = "a";
480 keyevent.keyCode = 0;
481 keyevent.keyModifier = 0;
483 keyevent.state = Integration::KeyEvent::Down;
485 application.ProcessEvent( keyevent );
487 application.ProcessEvent( keyevent );
489 DALI_TEST_CHECK( gMaxCharactersCallBackCalled );
494 // Negative test for Max Characters reached signal.
495 int utcDaliTextFieldMaxCharactersReachedN(void)
497 ToolkitTestApplication application;
498 tet_infoline(" utcDaliTextFieldMaxCharactersReachedN");
499 TextField field = TextField::New();
500 DALI_TEST_CHECK( field );
502 Stage::GetCurrent().Add( field );
504 const int maxNumberOfCharacters = 3;
505 field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
507 field.SetKeyInputFocus();
509 gMaxCharactersCallBackCalled = false;
510 field.MaxLengthReachedSignal().Connect(&TestMaxLengthReachedCallback);
512 Dali::Integration::KeyEvent keyevent;
513 keyevent.keyName = "a";
514 keyevent.keyString = "a";
515 keyevent.keyCode = 0;
516 keyevent.keyModifier = 0;
518 keyevent.state = Integration::KeyEvent::Down;
520 application.ProcessEvent( keyevent );
521 application.ProcessEvent( keyevent );
523 DALI_TEST_CHECK( !gMaxCharactersCallBackCalled );