2 * Copyright (c) 2017 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.
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
26 using namespace Toolkit;
28 void dali_textlabel_startup(void)
30 test_return_value = TET_UNDEF;
33 void dali_textlabel_cleanup(void)
35 test_return_value = TET_PASS;
41 const char* const PROPERTY_NAME_RENDERING_BACKEND = "renderingBackend";
42 const char* const PROPERTY_NAME_TEXT = "text";
43 const char* const PROPERTY_NAME_FONT_FAMILY = "fontFamily";
44 const char* const PROPERTY_NAME_FONT_STYLE = "fontStyle";
45 const char* const PROPERTY_NAME_POINT_SIZE = "pointSize";
46 const char* const PROPERTY_NAME_MULTI_LINE = "multiLine";
47 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontalAlignment";
48 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "verticalAlignment";
49 const char* const PROPERTY_NAME_TEXT_COLOR = "textColor";
50 const char* const PROPERTY_NAME_SHADOW_OFFSET = "shadowOffset";
51 const char* const PROPERTY_NAME_SHADOW_COLOR = "shadowColor";
52 const char* const PROPERTY_NAME_UNDERLINE_ENABLED = "underlineEnabled";
53 const char* const PROPERTY_NAME_UNDERLINE_COLOR = "underlineColor";
54 const char* const PROPERTY_NAME_UNDERLINE_HEIGHT = "underlineHeight";
55 const char* const PROPERTY_NAME_ENABLE_MARKUP = "enableMarkup";
56 const char* const PROPERTY_NAME_ENABLE_AUTO_SCROLL = "enableAutoScroll";
57 const char* const PROPERTY_NAME_ENABLE_AUTO_SCROLL_SPEED = "autoScrollSpeed";
58 const char* const PROPERTY_NAME_ENABLE_AUTO_SCROLL_LOOPS = "autoScrollLoopCount";
59 const char* const PROPERTY_NAME_ENABLE_AUTO_SCROLL_GAP = "autoScrollGap";
61 const char* const PROPERTY_NAME_LINE_SPACING = "lineSpacing";
62 const char* const PROPERTY_NAME_UNDERLINE = "underline";
63 const char* const PROPERTY_NAME_SHADOW = "shadow";
64 const char* const PROPERTY_NAME_EMBOSS = "emboss";
65 const char* const PROPERTY_NAME_OUTLINE = "outline";
67 const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize";
68 const char* const PROPERTY_NAME_ELLIPSIS = "ellipsis";
69 const char* const PROPERTY_NAME_AUTO_SCROLL_LOOP_DELAY = "autoScrollLoopDelay";
71 const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND;
72 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
73 const unsigned int EMOJI_FONT_SIZE = 3840u; // 60 * 64
75 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
77 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
79 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
81 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
83 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
84 if( NULL != valueSet )
86 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
88 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
94 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
105 int UtcDaliToolkitTextLabelConstructorP(void)
107 ToolkitTestApplication application;
108 tet_infoline(" UtcDaliToolkitTextLabelConstructorP");
110 DALI_TEST_CHECK( !textLabel );
114 int UtcDaliToolkitTextLabelNewP(void)
116 ToolkitTestApplication application;
117 tet_infoline(" UtcDaliToolkitTextLabelNewP");
118 TextLabel textLabel = TextLabel::New( "Test Text" );
119 DALI_TEST_CHECK( textLabel );
123 int UtcDaliToolkitTextLabelDownCastP(void)
125 ToolkitTestApplication application;
126 tet_infoline(" UtcDaliToolkitTextLabelDownCastP");
127 TextLabel textLabel1 = TextLabel::New();
128 BaseHandle object( textLabel1 );
130 TextLabel textLabel2 = TextLabel::DownCast( object );
131 DALI_TEST_CHECK( textLabel2 );
133 TextLabel textLabel3 = DownCast< TextLabel >( object );
134 DALI_TEST_CHECK( textLabel3 );
138 int UtcDaliToolkitTextLabelDownCastN(void)
140 ToolkitTestApplication application;
141 tet_infoline(" UtcDaliToolkitTextLabelDownCastN");
142 BaseHandle uninitializedObject;
143 TextLabel textLabel1 = TextLabel::DownCast( uninitializedObject );
144 DALI_TEST_CHECK( !textLabel1 );
146 TextLabel textLabel2 = DownCast< TextLabel >( uninitializedObject );
147 DALI_TEST_CHECK( !textLabel2 );
151 int UtcDaliToolkitTextLabelCopyConstructorP(void)
153 ToolkitTestApplication application;
154 tet_infoline(" UtcDaliToolkitTextLabelCopyConstructorP");
155 TextLabel textLabel = TextLabel::New();
156 textLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
158 TextLabel copy( textLabel );
159 DALI_TEST_CHECK( copy );
160 DALI_TEST_CHECK( copy.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) == textLabel.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) );
164 int UtcDaliToolkitTextLabelAssignmentOperatorP(void)
166 ToolkitTestApplication application;
167 tet_infoline(" UtcDaliToolkitTextLabelAssingmentOperatorP");
168 TextLabel textLabel = TextLabel::New();
169 textLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
171 TextLabel copy = textLabel;
172 DALI_TEST_CHECK( copy );
173 DALI_TEST_CHECK( copy.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) == textLabel.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) );
177 // Positive test case for a method
178 int UtcDaliToolkitTextLabelGetPropertyP(void)
180 ToolkitTestApplication application;
181 tet_infoline(" UtcDaliToolkitTextLabelGetPropertyP");
182 TextLabel label = TextLabel::New("Test Text");
183 DALI_TEST_CHECK( label );
185 // Check Property Indices are correct
186 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextLabel::Property::RENDERING_BACKEND );
187 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextLabel::Property::TEXT );
188 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextLabel::Property::FONT_FAMILY );
189 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextLabel::Property::FONT_STYLE );
190 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextLabel::Property::POINT_SIZE );
191 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_MULTI_LINE ) == TextLabel::Property::MULTI_LINE );
192 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextLabel::Property::HORIZONTAL_ALIGNMENT );
193 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextLabel::Property::VERTICAL_ALIGNMENT );
194 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT_COLOR ) == TextLabel::Property::TEXT_COLOR );
195 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_OFFSET ) == TextLabel::Property::SHADOW_OFFSET );
196 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_COLOR ) == TextLabel::Property::SHADOW_COLOR );
197 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_ENABLED ) == TextLabel::Property::UNDERLINE_ENABLED );
198 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_COLOR ) == TextLabel::Property::UNDERLINE_COLOR );
199 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_HEIGHT) == TextLabel::Property::UNDERLINE_HEIGHT );
200 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ENABLE_MARKUP) == TextLabel::Property::ENABLE_MARKUP );
201 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ENABLE_AUTO_SCROLL ) == TextLabel::Property::ENABLE_AUTO_SCROLL );
202 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ENABLE_AUTO_SCROLL_SPEED ) == TextLabel::Property::AUTO_SCROLL_SPEED );
203 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ENABLE_AUTO_SCROLL_LOOPS ) == TextLabel::Property::AUTO_SCROLL_LOOP_COUNT );
204 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ENABLE_AUTO_SCROLL_GAP ) == TextLabel::Property::AUTO_SCROLL_GAP );
205 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_LINE_SPACING ) == TextLabel::Property::LINE_SPACING );
206 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE ) == TextLabel::Property::UNDERLINE );
207 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW ) == TextLabel::Property::SHADOW );
208 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_EMBOSS ) == TextLabel::Property::EMBOSS );
209 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_OUTLINE ) == TextLabel::Property::OUTLINE );
210 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == TextLabel::Property::PIXEL_SIZE );
211 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ELLIPSIS ) == TextLabel::Property::ELLIPSIS );
212 DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_AUTO_SCROLL_LOOP_DELAY ) == TextLabel::Property::AUTO_SCROLL_LOOP_DELAY );
217 int UtcDaliToolkitTextLabelSetPropertyP(void)
219 ToolkitTestApplication application;
220 tet_infoline(" UtcDaliToolkitTextLabelSetPropertyP");
221 TextLabel label = TextLabel::New();
222 DALI_TEST_CHECK( label );
224 Stage::GetCurrent().Add( label );
226 // Note - we can't check the defaults since the stylesheets are platform-specific
227 label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
228 DALI_TEST_EQUALS( (Text::RenderingType)label.GetProperty<int>( TextLabel::Property::RENDERING_BACKEND ), Text::RENDERING_SHARED_ATLAS, TEST_LOCATION );
230 // Check that text can be correctly reset
231 label.SetProperty( TextLabel::Property::TEXT, "Setting Text" );
232 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::TEXT ), std::string("Setting Text"), TEST_LOCATION );
234 // Check font properties.
235 label.SetProperty( TextLabel::Property::FONT_FAMILY, "Setting font family" );
236 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::FONT_FAMILY ), std::string("Setting font family"), TEST_LOCATION );
238 Property::Map fontStyleMapSet;
239 Property::Map fontStyleMapGet;
241 fontStyleMapSet.Insert( "weight", "bold" );
242 fontStyleMapSet.Insert( "width", "condensed" );
243 fontStyleMapSet.Insert( "slant", "italic" );
244 label.SetProperty( TextLabel::Property::FONT_STYLE, fontStyleMapSet );
246 fontStyleMapGet = label.GetProperty<Property::Map>( TextLabel::Property::FONT_STYLE );
247 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
248 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
250 // Check the old font style format.
251 fontStyleMapSet.Clear();
252 fontStyleMapSet.Insert( "weight", "thin" );
253 fontStyleMapSet.Insert( "width", "expanded" );
254 fontStyleMapSet.Insert( "slant", "oblique" );
255 const std::string strFontStyle = "{\"weight\":\"thin\",\"width\":\"expanded\",\"slant\":\"oblique\"}";
257 label.SetProperty( TextLabel::Property::FONT_STYLE, "{\"weight\":\"thin\",\"width\":\"expanded\",\"slant\":\"oblique\"}" );
258 std::string getFontStyle = label.GetProperty<std::string>( TextLabel::Property::FONT_STYLE );
259 DALI_TEST_EQUALS( getFontStyle, strFontStyle, TEST_LOCATION );
261 label.SetProperty( TextLabel::Property::POINT_SIZE, 10.f );
262 DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::POINT_SIZE ), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
265 fontStyleMapSet.Clear();
266 fontStyleMapSet.Insert( "weight", "normal" );
267 fontStyleMapSet.Insert( "slant", "oblique" );
269 label.SetProperty( TextLabel::Property::FONT_STYLE, fontStyleMapSet );
270 fontStyleMapGet = label.GetProperty<Property::Map>( TextLabel::Property::FONT_STYLE );
271 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
272 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
274 fontStyleMapSet.Clear();
275 fontStyleMapSet.Insert( "slant", "roman" );
277 label.SetProperty( TextLabel::Property::FONT_STYLE, fontStyleMapSet );
278 fontStyleMapGet = label.GetProperty<Property::Map>( TextLabel::Property::FONT_STYLE );
279 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
281 // Replace 'roman' for 'normal'.
282 Property::Value* slantValue = fontStyleMapGet.Find( "slant" );
283 if( NULL != slantValue )
285 if( "normal" == slantValue->Get<std::string>() )
287 fontStyleMapGet["slant"] = "roman";
290 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
292 fontStyleMapSet.Clear();
294 label.SetProperty( TextLabel::Property::FONT_STYLE, fontStyleMapSet );
295 fontStyleMapGet = label.GetProperty<Property::Map>( TextLabel::Property::FONT_STYLE );
296 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
297 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
300 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
301 DALI_TEST_EQUALS( label.GetProperty<bool>( TextLabel::Property::MULTI_LINE ), true, TEST_LOCATION );
303 // Check that the Alignment properties can be correctly set
304 label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
305 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::HORIZONTAL_ALIGNMENT ), "CENTER", TEST_LOCATION );
306 label.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
307 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::VERTICAL_ALIGNMENT ), "CENTER", TEST_LOCATION );
309 // Check that text color can be properly set
310 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE );
311 DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ), Color::BLUE, TEST_LOCATION );
312 // The underline color is changed as well.
313 DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::UNDERLINE_COLOR ), Color::BLUE, TEST_LOCATION );
315 Property::Map underlineMapSet;
316 Property::Map underlineMapGet;
318 underlineMapSet.Insert( "enable", "false" );
319 underlineMapSet.Insert( "color", "blue" );
320 underlineMapSet.Insert( "height", "0" );
322 underlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::UNDERLINE );
323 DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION );
324 DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION );
326 // Check that shadow parameters can be correctly set
327 label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 3.0f, 3.0f ) );
328 DALI_TEST_EQUALS( label.GetProperty<Vector2>( TextLabel::Property::SHADOW_OFFSET ), Vector2( 3.0f, 3.0f ), TEST_LOCATION );
329 label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE );
330 DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::SHADOW_COLOR ), Color::BLUE, TEST_LOCATION );
332 // Check that underline parameters can be correctly set
333 label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true );
334 DALI_TEST_EQUALS( label.GetProperty<bool>( TextLabel::Property::UNDERLINE_ENABLED ), true, TEST_LOCATION );
335 label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED );
336 DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::UNDERLINE_COLOR ), Color::RED, TEST_LOCATION );
337 label.SetProperty( TextLabel::Property::UNDERLINE_HEIGHT, 1.0f );
338 DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::UNDERLINE_HEIGHT ), 1.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
340 TextLabel label2 = TextLabel::New( "New text" );
341 DALI_TEST_CHECK( label2 );
342 DALI_TEST_EQUALS( label2.GetProperty<std::string>( TextLabel::Property::TEXT ), std::string("New text"), TEST_LOCATION );
344 // Check the enable markup property.
345 DALI_TEST_CHECK( !label.GetProperty<bool>( TextLabel::Property::ENABLE_MARKUP ) );
346 label.SetProperty( TextLabel::Property::ENABLE_MARKUP, true );
347 DALI_TEST_CHECK( label.GetProperty<bool>( TextLabel::Property::ENABLE_MARKUP ) );
349 // Check the text property when markup is enabled
350 label.SetProperty( TextLabel::Property::TEXT, "<color value='white'>Markup</color><color value='cyan'>Text</color>" );
351 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::TEXT ), std::string("MarkupText"), TEST_LOCATION );
353 application.SendNotification();
354 application.Render();
356 // Check autoscroll properties
357 const int SCROLL_SPEED = 80;
358 const int SCROLL_LOOPS = 4;
359 const float SCROLL_GAP = 50.0f;
360 const float SCROLL_LOOP_DELAY = 0.3f;
361 const std::string STOP_IMMEDIATE = std::string( "IMMEDIATE" );
362 const std::string STOP_FINISH_LOOP = std::string( "FINISH_LOOP" );
364 label.SetProperty( TextLabel::Property::MULTI_LINE, false ); // Autoscroll only supported in single line
365 DALI_TEST_CHECK( !label.GetProperty<bool>( TextLabel::Property::ENABLE_AUTO_SCROLL ) );
366 label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
367 DALI_TEST_CHECK( label.GetProperty<bool>( TextLabel::Property::ENABLE_AUTO_SCROLL ) );
368 label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, SCROLL_SPEED );
369 DALI_TEST_EQUALS( SCROLL_SPEED, label.GetProperty<int>( TextLabel::Property::AUTO_SCROLL_SPEED ), TEST_LOCATION );
370 label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, SCROLL_LOOPS );
371 DALI_TEST_EQUALS( SCROLL_LOOPS, label.GetProperty<int>( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT ), TEST_LOCATION );
372 label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, SCROLL_GAP );
373 DALI_TEST_EQUALS( SCROLL_GAP, label.GetProperty<float>( TextLabel::Property::AUTO_SCROLL_GAP ), TEST_LOCATION );
374 label.SetProperty(TextLabel::Property::AUTO_SCROLL_LOOP_DELAY, SCROLL_LOOP_DELAY );
375 DALI_TEST_EQUALS( SCROLL_LOOP_DELAY, label.GetProperty<float>( TextLabel::Property::AUTO_SCROLL_LOOP_DELAY ), TEST_LOCATION );
377 //Check autoscroll stop type property
378 label.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
379 DALI_TEST_EQUALS( STOP_IMMEDIATE, label.GetProperty<std::string>( TextLabel::Property::AUTO_SCROLL_STOP_MODE ), TEST_LOCATION );
381 label.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
382 DALI_TEST_EQUALS( STOP_FINISH_LOOP, label.GetProperty<std::string>( TextLabel::Property::AUTO_SCROLL_STOP_MODE ), TEST_LOCATION );
385 // Check the line spacing property
386 DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::LINE_SPACING ), 0.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
387 label.SetProperty( TextLabel::Property::LINE_SPACING, 10.f );
388 DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::LINE_SPACING ), 10.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
390 // Check the underline property
392 underlineMapSet.Clear();
393 underlineMapSet.Insert( "enable", "true" );
394 underlineMapSet.Insert( "color", "red" );
395 underlineMapSet.Insert( "height", "1" );
397 label.SetProperty( TextLabel::Property::UNDERLINE, underlineMapSet );
399 application.SendNotification();
400 application.Render();
402 underlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::UNDERLINE );
403 DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION );
404 DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION );
406 underlineMapSet.Clear();
408 Property::Map underlineDisabledMapGet;
409 underlineDisabledMapGet.Insert( "enable", "false" );
410 underlineDisabledMapGet.Insert( "color", "red" );
411 underlineDisabledMapGet.Insert( "height", "1" );
413 label.SetProperty( TextLabel::Property::UNDERLINE, underlineMapSet );
414 underlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::UNDERLINE );
415 DALI_TEST_EQUALS( underlineMapGet.Count(), underlineDisabledMapGet.Count(), TEST_LOCATION );
416 DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineDisabledMapGet ), true, TEST_LOCATION );
418 // Check the shadow property
420 Property::Map shadowMapSet;
421 Property::Map shadowMapGet;
423 shadowMapSet.Insert( "color", Color::GREEN );
424 shadowMapSet.Insert( "offset", Vector2(2.0f, 2.0f) );
425 shadowMapSet.Insert( "blurRadius", 5.0f );
427 label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet );
429 shadowMapGet = label.GetProperty<Property::Map>( TextLabel::Property::SHADOW );
430 DALI_TEST_EQUALS( shadowMapGet.Count(), shadowMapSet.Count(), TEST_LOCATION );
431 DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowMapSet ), true, TEST_LOCATION );
433 shadowMapSet.Clear();
434 Property::Map shadowDisabledMapGet;
435 shadowDisabledMapGet.Insert( "color", Color::GREEN );
436 shadowDisabledMapGet.Insert( "offset", Vector2(0.0f, 0.0f) );
437 shadowDisabledMapGet.Insert( "blurRadius", 5.0f );
439 label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet );
441 shadowMapGet = label.GetProperty<Property::Map>( TextLabel::Property::SHADOW );
442 DALI_TEST_EQUALS( shadowMapGet.Count(), shadowDisabledMapGet.Count(), TEST_LOCATION );
443 DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowDisabledMapGet ), true, TEST_LOCATION );
445 // Check the emboss property
446 label.SetProperty( TextLabel::Property::EMBOSS, "Emboss properties" );
447 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::EMBOSS ), std::string("Emboss properties"), TEST_LOCATION );
449 // Check the outline property
451 // Test string type first
452 // This is purely to maintain backward compatibility, but we don't support string as the outline property type.
453 label.SetProperty( TextLabel::Property::OUTLINE, "Outline properties" );
454 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::OUTLINE ), std::string("Outline properties"), TEST_LOCATION );
456 // Then test the property map type
457 Property::Map outlineMapSet;
458 Property::Map outlineMapGet;
460 outlineMapSet["color"] = Color::RED;
461 outlineMapSet["width"] = 2.0f;
462 label.SetProperty( TextLabel::Property::OUTLINE, outlineMapSet );
464 outlineMapSet["color"] = "red";
465 outlineMapSet["width"] = "2";
466 outlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::OUTLINE );
467 DALI_TEST_EQUALS( outlineMapGet.Count(), outlineMapSet.Count(), TEST_LOCATION );
468 DALI_TEST_EQUALS( DaliTestCheckMaps( outlineMapGet, outlineMapSet ), true, TEST_LOCATION );
470 // Check the pixel size of font
471 label.SetProperty( TextLabel::Property::PIXEL_SIZE, 20.f );
472 DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
474 // Check the ellipsis property
475 DALI_TEST_CHECK( !label.GetProperty<bool>( TextLabel::Property::ELLIPSIS ) );
476 label.SetProperty( TextLabel::Property::ELLIPSIS, true );
477 DALI_TEST_CHECK( label.GetProperty<bool>( TextLabel::Property::ELLIPSIS ) );
482 int UtcDaliToolkitTextlabelAtlasRenderP(void)
484 ToolkitTestApplication application;
485 tet_infoline(" UtcDaliToolkitTextLabelAtlasRenderP");
486 TextLabel label = TextLabel::New("Test Text");
487 DALI_TEST_CHECK( label );
489 // Avoid a crash when core load gl resources.
490 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
492 Stage::GetCurrent().Add( label );
494 // Turn on all the effects
495 label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
496 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
497 label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true );
498 label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED );
499 label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) );
500 label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE );
504 // Render some text with the shared atlas backend
505 label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
506 application.SendNotification();
507 application.Render();
511 tet_result(TET_FAIL);
516 // Render some text with the shared atlas backend
517 label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_VECTOR_BASED );
518 application.SendNotification();
519 application.Render();
523 tet_result(TET_FAIL);
528 int UtcDaliToolkitTextLabelLanguagesP(void)
530 ToolkitTestApplication application;
531 tet_infoline(" UtcDaliToolkitTextLabelLanguagesP");
532 TextLabel label = TextLabel::New();
533 DALI_TEST_CHECK( label );
535 Stage::GetCurrent().Add( label );
537 const std::string scripts( " привет мир, γειά σου Κόσμε, Hello world, مرحبا بالعالم, שלום עולם, "
538 "բարեւ աշխարհը, მსოფლიოში, 안녕하세요, 你好世界, ひらがな, カタカナ, "
539 "ওহে বিশ্ব, မင်္ဂလာပါကမ္ဘာလောက, हैलो वर्ल्ड, હેલો વર્લ્ડ, ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ, ಹಲೋ ವರ್ಲ್ಡ್, "
540 "ഹലോ വേൾഡ്, ଓଡ଼ିଆ, හෙලෝ වර්ල්ඩ්, ஹலோ உலகம், హలో వరల్డ్, "
541 "ສະບາຍດີໂລກ, สวัสดีโลก, ជំរាបសួរពិភពលោក, "
542 "\xF0\x9F\x98\x81 \xF0\x9F\x98\x82 \xF0\x9F\x98\x83 \xF0\x9F\x98\x84." ); // these characters on the last line are emojis.
544 label.SetProperty( TextLabel::Property::TEXT, scripts );
545 DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::TEXT ), scripts, TEST_LOCATION );
547 application.SendNotification();
548 application.Render();
553 int UtcDaliToolkitTextLabelEmojisP(void)
555 ToolkitTestApplication application;
556 tet_infoline(" UtcDaliToolkitTextLabelLanguagesP");
557 TextLabel label = TextLabel::New();
558 DALI_TEST_CHECK( label );
560 Stage::GetCurrent().Add( label );
562 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
564 char* pathNamePtr = get_current_dir_name();
565 const std::string pathName( pathNamePtr );
568 TextAbstraction::FontDescription fontDescription;
569 fontDescription.path = pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf";
570 fontDescription.family = "BreezeColorEmoji";
571 fontDescription.width = TextAbstraction::FontWidth::NONE;
572 fontDescription.weight = TextAbstraction::FontWeight::NORMAL;
573 fontDescription.slant = TextAbstraction::FontSlant::NONE;
575 fontClient.GetFontId( fontDescription, EMOJI_FONT_SIZE );
577 const std::string emojis = "<font family='BreezeColorEmoji' size='60'>\xF0\x9F\x98\x81 \xF0\x9F\x98\x82 \xF0\x9F\x98\x83 \xF0\x9F\x98\x84</font>";
578 label.SetProperty( TextLabel::Property::ENABLE_MARKUP, true );
579 label.SetProperty( TextLabel::Property::TEXT, emojis );
581 Property::Map shadowMap;
582 shadowMap.Insert( "color", "green" );
583 shadowMap.Insert( "offset", "2 2" );
584 label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
586 application.SendNotification();
587 application.Render();
592 int UtcDaliToolkitTextlabelScrollingP(void)
594 ToolkitTestApplication application;
595 tet_infoline(" UtcDaliToolkitTextLabelScrollingP");
596 TextLabel labelImmediate = TextLabel::New("Some text to scroll");
597 TextLabel labelFinished = TextLabel::New("مرحبا بالعالم");
599 DALI_TEST_CHECK( labelImmediate );
600 DALI_TEST_CHECK( labelFinished );
601 // Avoid a crash when core load gl resources.
602 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
603 Stage::GetCurrent().Add( labelImmediate );
604 // Turn on all the effects
605 labelImmediate.SetProperty( TextLabel::Property::MULTI_LINE, false );
606 labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
607 labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
608 labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
609 labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
611 Stage::GetCurrent().Add( labelFinished );
612 // Turn on all the effects
613 labelFinished.SetProperty( TextLabel::Property::MULTI_LINE, false );
614 labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
615 labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
616 labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
617 labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
623 // Render some text with the shared atlas backend
624 labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
625 labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
627 labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
628 labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
630 labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
631 labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
632 application.SendNotification();
633 application.Render();
635 labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
636 labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
637 application.SendNotification();
638 application.Render();
643 tet_result(TET_FAIL);
649 int UtcDaliToolkitTextlabelScrollingCenterAlignP(void)
651 ToolkitTestApplication application;
652 TextLabel labelShort = TextLabel::New("Some text to scroll");
653 TextLabel labelLong = TextLabel::New("Some text to scroll that is greater than the width of the text. The quick brown fox jumps over the lazy dog. Hello World, we meet again!");
655 DALI_TEST_CHECK( labelShort );
656 DALI_TEST_CHECK( labelLong );
657 // Avoid a crash when core load gl resources.
658 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
659 Stage::GetCurrent().Add( labelShort );
660 // Turn on all the effects
661 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
662 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
663 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
664 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
665 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
666 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
668 Stage::GetCurrent().Add( labelLong );
669 // Turn on all the effects
670 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
671 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
672 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
673 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
674 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
675 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
679 // Render some text with the shared atlas backend
680 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
681 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
682 application.SendNotification();
683 application.Render();
685 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
686 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
687 application.SendNotification();
688 application.Render();
693 tet_result(TET_FAIL);
699 int UtcDaliToolkitTextlabelScrollingCenterAlignRTLP(void)
701 ToolkitTestApplication application;
702 TextLabel labelShort = TextLabel::New("مرحبا بالعالم");
703 TextLabel labelLong = TextLabel::New("لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار النشوة وتمجيد الألم نشأت بالفعل، وسأعرض لك التفاصيل لتكتشف حقيقة وأساس تلك السعادة البشرية، فلا أحد يرفض أو يكره أو يتجنب الشعور بالسعادة، ولكن بفضل هؤلاء الأشخاص الذين لا يدركون بأن السعادة لا بد أن نستشعرها بصورة أكثر عقلانية ومنطقية فيعرضهم هذا لمواجهة الظروف الأليمة، وأكرر بأنه لا يوجد من يرغب في الحب ونيل المنال ويتلذذ بالآلام، الألم هو الألم ولكن نتيجة لظروف ما قد تكمن السعاده فيما نتحمله من كد وأسي");
705 DALI_TEST_CHECK( labelShort );
706 DALI_TEST_CHECK( labelLong );
707 // Avoid a crash when core load gl resources.
708 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
709 Stage::GetCurrent().Add( labelShort );
710 // Turn on all the effects
711 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
712 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
713 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
714 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
715 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
716 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
718 Stage::GetCurrent().Add( labelLong );
719 // Turn on all the effects
720 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
721 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
722 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
723 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
724 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
725 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
729 // Render some text with the shared atlas backend
730 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
731 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
732 application.SendNotification();
733 application.Render();
735 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
736 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
737 application.SendNotification();
738 application.Render();
743 tet_result(TET_FAIL);
749 int UtcDaliToolkitTextlabelScrollingEndAlignP(void)
751 ToolkitTestApplication application;
752 TextLabel labelShort = TextLabel::New("Some text to scroll");
753 TextLabel labelLong = TextLabel::New("Some text to scroll that is greater than the width of the text. The quick brown fox jumps over the lazy dog. Hello World, we meet again!");
755 DALI_TEST_CHECK( labelShort );
756 DALI_TEST_CHECK( labelLong );
757 // Avoid a crash when core load gl resources.
758 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
759 Stage::GetCurrent().Add( labelShort );
760 // Turn on all the effects
761 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
762 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
763 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
764 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
765 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
766 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
768 Stage::GetCurrent().Add( labelLong );
769 // Turn on all the effects
770 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
771 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
772 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
773 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
774 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
775 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
779 // Render some text with the shared atlas backend
780 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
781 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
782 application.SendNotification();
783 application.Render();
785 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
786 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
787 application.SendNotification();
788 application.Render();
793 tet_result(TET_FAIL);
799 int UtcDaliToolkitTextlabelScrollingEndAlignRTLP(void)
801 ToolkitTestApplication application;
802 TextLabel labelShort = TextLabel::New("مرحبا بالعالم");
803 TextLabel labelLong = TextLabel::New("لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار النشوة وتمجيد الألم نشأت بالفعل، وسأعرض لك التفاصيل لتكتشف حقيقة وأساس تلك السعادة البشرية، فلا أحد يرفض أو يكره أو يتجنب الشعور بالسعادة، ولكن بفضل هؤلاء الأشخاص الذين لا يدركون بأن السعادة لا بد أن نستشعرها بصورة أكثر عقلانية ومنطقية فيعرضهم هذا لمواجهة الظروف الأليمة، وأكرر بأنه لا يوجد من يرغب في الحب ونيل المنال ويتلذذ بالآلام، الألم هو الألم ولكن نتيجة لظروف ما قد تكمن السعاده فيما نتحمله من كد وأسي");
805 DALI_TEST_CHECK( labelShort );
806 DALI_TEST_CHECK( labelLong );
807 // Avoid a crash when core load gl resources.
808 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
809 Stage::GetCurrent().Add( labelShort );
810 // Turn on all the effects
811 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
812 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
813 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
814 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
815 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
816 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
818 Stage::GetCurrent().Add( labelLong );
819 // Turn on all the effects
820 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
821 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
822 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
823 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
824 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
825 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
829 // Render some text with the shared atlas backend
830 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
831 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
832 application.SendNotification();
833 application.Render();
835 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
836 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
837 application.SendNotification();
838 application.Render();
843 tet_result(TET_FAIL);
849 int UtcDaliToolkitTextlabelScrollingInterruptedP(void)
851 ToolkitTestApplication application;
852 tet_infoline(" UtcDaliToolkitTextlabelScrollingInterruptedP");
853 TextLabel label = TextLabel::New("Some text to scroll");
854 DALI_TEST_CHECK( label );
855 // Avoid a crash when core load gl resources.
856 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
857 Stage::GetCurrent().Add( label );
858 label.SetSize( 360.0f, 20.f );
859 // Turn on all the effects
860 label.SetProperty( TextLabel::Property::MULTI_LINE, false );
861 label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
862 label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
863 label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
866 application.SendNotification();
867 application.Render();
869 unsigned int actorCount1 = label.GetChildCount();
870 tet_printf("Initial actor count is(%d)\n", actorCount1 );
874 // Render some text with the shared atlas backend
875 label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
876 application.SendNotification();
877 application.Render(2000);
879 unsigned int actorCount1 = label.GetChildCount();
880 tet_printf("Actor count after scrolling is(%d)\n", actorCount1 );
882 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
885 application.SendNotification();
886 application.Render();
888 unsigned int actorCount2 = label.GetChildCount();
889 tet_printf("After changing color the actor count is(%d)\n", actorCount2 );
891 DALI_TEST_EQUALS( actorCount1, actorCount2, TEST_LOCATION );
896 tet_result(TET_FAIL);
902 int UtcDaliToolkitTextlabelScrollingN(void)
904 ToolkitTestApplication application;
905 tet_infoline(" UtcDaliToolkitTextlabelScrollingN");
907 TextLabel label = TextLabel::New("Some text to scroll");
908 DALI_TEST_CHECK( label );
910 Stage::GetCurrent().Add( label );
912 // Avoid a crash when core load gl resources.
913 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
915 // The text scrolling works only on single line text.
916 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
918 // Turn on all the effects.
919 label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
920 label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
921 label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
923 // Enable the auto scrolling effect.
924 label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
926 // The auto scrolling shouldn't be enabled.
927 const bool enabled = label.GetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL ).Get<bool>();
928 DALI_TEST_CHECK( !enabled );
933 int UtcDaliToolkitTextlabelEllipsis(void)
935 ToolkitTestApplication application;
936 tet_infoline(" UtcDaliToolkitTextlabelEllipsis");
938 TextLabel label = TextLabel::New("Hello world");
939 DALI_TEST_CHECK( label );
941 // Avoid a crash when core load gl resources.
942 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
944 Stage::GetCurrent().Add( label );
946 // Turn on all the effects
947 label.SetAnchorPoint( AnchorPoint::CENTER );
948 label.SetParentOrigin( ParentOrigin::CENTER );
949 label.SetSize( 360.0f, 10.f );
954 application.SendNotification();
955 application.Render();
959 tet_result(TET_FAIL);
965 int UtcDaliToolkitTextlabelTextWrapMode(void)
967 ToolkitTestApplication application;
968 tet_infoline(" UtcDaliToolkitTextlabelTextWarpMode");
972 TextLabel label = TextLabel::New();
973 label.SetSize( 300.0f, 300.f );
974 label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" );
975 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
979 //label.SetProperty( TextLabel::Property::POINT_SIZE, 18 );
980 Stage::GetCurrent().Add( label );
982 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "WORD" );
983 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::WORD ), TEST_LOCATION );
985 application.SendNotification();
986 application.Render();
988 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
989 DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION );
991 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "CHARACTER" );
992 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
994 application.SendNotification();
995 application.Render();
997 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, Text::LineWrap::WORD );
998 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::WORD ), TEST_LOCATION );
1000 application.SendNotification();
1001 application.Render();
1003 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
1004 DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION );
1006 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, Text::LineWrap::CHARACTER );
1007 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
1009 application.SendNotification();
1010 application.Render();
1012 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
1013 DALI_TEST_EQUALS( lineCount, 3, TEST_LOCATION );
1015 tet_infoline( "Ensure invalid string does not change wrapping mode" );
1016 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "InvalidWrapMode" );
1017 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
1022 int UtcDaliToolkitTextLabelColorComponents(void)
1024 ToolkitTestApplication application;
1026 TextLabel label = TextLabel::New();
1027 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
1028 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_RED ), 1.0f, TEST_LOCATION );
1029 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_GREEN ), 0.0f, TEST_LOCATION );
1030 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_BLUE ), 0.0f, TEST_LOCATION );
1031 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 1.0f, TEST_LOCATION );
1033 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::GREEN );
1034 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_RED ), 0.0f, TEST_LOCATION );
1035 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_GREEN ), 1.0f, TEST_LOCATION );
1036 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_BLUE ), 0.0f, TEST_LOCATION );
1037 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 1.0f, TEST_LOCATION );
1039 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE );
1040 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_RED ), 0.0f, TEST_LOCATION );
1041 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_GREEN ), 0.0f, TEST_LOCATION );
1042 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_BLUE ), 1.0f, TEST_LOCATION );
1043 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 1.0f, TEST_LOCATION );
1045 label.SetProperty( TextLabel::Property::TEXT_COLOR_ALPHA, 0.6f );
1046 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 0.6f, TEST_LOCATION );
1047 DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
1048 DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::UNUSED_PROPERTY_TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
1053 int UtcDaliToolkitTextlabelTextStyle01(void)
1055 ToolkitTestApplication application;
1056 tet_infoline(" UtcDaliToolkitTextlabelTextStyle Setting Outline after Shadow");
1058 TextLabel label = TextLabel::New();
1059 label.SetSize( 300.0f, 300.f );
1060 label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" );
1061 label.SetProperty( TextLabel::Property::POINT_SIZE, 12 );
1062 Stage::GetCurrent().Add( label );
1064 Property::Map outlineMapSet;
1065 Property::Map outlineMapGet;
1067 outlineMapSet["color"] = Color::BLUE;
1068 outlineMapSet["width"] = 2.0f;
1069 label.SetProperty( TextLabel::Property::OUTLINE, outlineMapSet );
1071 application.SendNotification();
1072 application.Render();
1074 Property::Map shadowMapSet;
1075 shadowMapSet.Insert( "color", "green" );
1076 shadowMapSet.Insert( "offset", "2 2" );
1077 shadowMapSet.Insert( "blurRadius", "3" );
1078 label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet );
1080 outlineMapSet["color"] = Color::RED;
1081 outlineMapSet["width"] = 0.0f;
1082 label.SetProperty( TextLabel::Property::OUTLINE, outlineMapSet );
1084 application.SendNotification();
1085 application.Render();
1087 outlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::OUTLINE );
1089 Property::Value* colorValue = outlineMapGet.Find("color");
1091 bool colorMatched( false );
1095 Property::Type valueType = colorValue->GetType();
1097 if ( Property::STRING == valueType )
1099 std::string stringValue;
1100 colorValue->Get( stringValue );
1101 if ( stringValue == "red" )
1103 colorMatched = true;
1106 else if ( Property::VECTOR4 == valueType )
1108 Vector4 colorVector4;
1109 colorValue->Get( colorVector4 );
1110 if ( colorVector4 == Color::RED )
1112 colorMatched = true;
1117 DALI_TEST_EQUALS( colorMatched, true, TEST_LOCATION );