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 );
626 application.SendNotification();
627 application.Render();
629 labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
630 labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
631 application.SendNotification();
632 application.Render();
637 tet_result(TET_FAIL);
643 int UtcDaliToolkitTextlabelScrollingCenterAlignP(void)
645 ToolkitTestApplication application;
646 TextLabel labelShort = TextLabel::New("Some text to scroll");
647 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!");
649 DALI_TEST_CHECK( labelShort );
650 DALI_TEST_CHECK( labelLong );
651 // Avoid a crash when core load gl resources.
652 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
653 Stage::GetCurrent().Add( labelShort );
654 // Turn on all the effects
655 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
656 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
657 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
658 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
659 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
660 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
662 Stage::GetCurrent().Add( labelLong );
663 // Turn on all the effects
664 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
665 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
666 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
667 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
668 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
669 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
673 // Render some text with the shared atlas backend
674 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
675 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
676 application.SendNotification();
677 application.Render();
679 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
680 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
681 application.SendNotification();
682 application.Render();
687 tet_result(TET_FAIL);
693 int UtcDaliToolkitTextlabelScrollingCenterAlignRTLP(void)
695 ToolkitTestApplication application;
696 TextLabel labelShort = TextLabel::New("مرحبا بالعالم");
697 TextLabel labelLong = TextLabel::New("لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار النشوة وتمجيد الألم نشأت بالفعل، وسأعرض لك التفاصيل لتكتشف حقيقة وأساس تلك السعادة البشرية، فلا أحد يرفض أو يكره أو يتجنب الشعور بالسعادة، ولكن بفضل هؤلاء الأشخاص الذين لا يدركون بأن السعادة لا بد أن نستشعرها بصورة أكثر عقلانية ومنطقية فيعرضهم هذا لمواجهة الظروف الأليمة، وأكرر بأنه لا يوجد من يرغب في الحب ونيل المنال ويتلذذ بالآلام، الألم هو الألم ولكن نتيجة لظروف ما قد تكمن السعاده فيما نتحمله من كد وأسي");
699 DALI_TEST_CHECK( labelShort );
700 DALI_TEST_CHECK( labelLong );
701 // Avoid a crash when core load gl resources.
702 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
703 Stage::GetCurrent().Add( labelShort );
704 // Turn on all the effects
705 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
706 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
707 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
708 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
709 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
710 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
712 Stage::GetCurrent().Add( labelLong );
713 // Turn on all the effects
714 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
715 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
716 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
717 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
718 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
719 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
723 // Render some text with the shared atlas backend
724 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
725 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
726 application.SendNotification();
727 application.Render();
729 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
730 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
731 application.SendNotification();
732 application.Render();
737 tet_result(TET_FAIL);
743 int UtcDaliToolkitTextlabelScrollingEndAlignP(void)
745 ToolkitTestApplication application;
746 TextLabel labelShort = TextLabel::New("Some text to scroll");
747 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!");
749 DALI_TEST_CHECK( labelShort );
750 DALI_TEST_CHECK( labelLong );
751 // Avoid a crash when core load gl resources.
752 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
753 Stage::GetCurrent().Add( labelShort );
754 // Turn on all the effects
755 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
756 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
757 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
758 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
759 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
760 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
762 Stage::GetCurrent().Add( labelLong );
763 // Turn on all the effects
764 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
765 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
766 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
767 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
768 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
769 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
773 // Render some text with the shared atlas backend
774 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
775 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
776 application.SendNotification();
777 application.Render();
779 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
780 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
781 application.SendNotification();
782 application.Render();
787 tet_result(TET_FAIL);
793 int UtcDaliToolkitTextlabelScrollingEndAlignRTLP(void)
795 ToolkitTestApplication application;
796 TextLabel labelShort = TextLabel::New("مرحبا بالعالم");
797 TextLabel labelLong = TextLabel::New("لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار النشوة وتمجيد الألم نشأت بالفعل، وسأعرض لك التفاصيل لتكتشف حقيقة وأساس تلك السعادة البشرية، فلا أحد يرفض أو يكره أو يتجنب الشعور بالسعادة، ولكن بفضل هؤلاء الأشخاص الذين لا يدركون بأن السعادة لا بد أن نستشعرها بصورة أكثر عقلانية ومنطقية فيعرضهم هذا لمواجهة الظروف الأليمة، وأكرر بأنه لا يوجد من يرغب في الحب ونيل المنال ويتلذذ بالآلام، الألم هو الألم ولكن نتيجة لظروف ما قد تكمن السعاده فيما نتحمله من كد وأسي");
799 DALI_TEST_CHECK( labelShort );
800 DALI_TEST_CHECK( labelLong );
801 // Avoid a crash when core load gl resources.
802 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
803 Stage::GetCurrent().Add( labelShort );
804 // Turn on all the effects
805 labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false );
806 labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
807 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
808 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
809 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
810 labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE );
812 Stage::GetCurrent().Add( labelLong );
813 // Turn on all the effects
814 labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false );
815 labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
816 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
817 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
818 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
819 labelLong.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::FINISH_LOOP );
823 // Render some text with the shared atlas backend
824 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
825 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
826 application.SendNotification();
827 application.Render();
829 labelShort.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
830 labelLong.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
831 application.SendNotification();
832 application.Render();
837 tet_result(TET_FAIL);
843 int UtcDaliToolkitTextlabelScrollingInterruptedP(void)
845 ToolkitTestApplication application;
846 tet_infoline(" UtcDaliToolkitTextlabelScrollingInterruptedP");
847 TextLabel label = TextLabel::New("Some text to scroll");
848 DALI_TEST_CHECK( label );
849 // Avoid a crash when core load gl resources.
850 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
851 Stage::GetCurrent().Add( label );
852 label.SetSize( 360.0f, 20.f );
853 // Turn on all the effects
854 label.SetProperty( TextLabel::Property::MULTI_LINE, false );
855 label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
856 label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
857 label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
860 application.SendNotification();
861 application.Render();
863 unsigned int actorCount1 = label.GetChildCount();
864 tet_printf("Initial actor count is(%d)\n", actorCount1 );
868 // Render some text with the shared atlas backend
869 label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
870 application.SendNotification();
871 application.Render(2000);
873 unsigned int actorCount1 = label.GetChildCount();
874 tet_printf("Actor count after scrolling is(%d)\n", actorCount1 );
876 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
879 application.SendNotification();
880 application.Render();
882 unsigned int actorCount2 = label.GetChildCount();
883 tet_printf("After changing color the actor count is(%d)\n", actorCount2 );
885 DALI_TEST_EQUALS( actorCount1, actorCount2, TEST_LOCATION );
890 tet_result(TET_FAIL);
896 int UtcDaliToolkitTextlabelScrollingN(void)
898 ToolkitTestApplication application;
899 tet_infoline(" UtcDaliToolkitTextlabelScrollingN");
901 TextLabel label = TextLabel::New("Some text to scroll");
902 DALI_TEST_CHECK( label );
904 Stage::GetCurrent().Add( label );
906 // Avoid a crash when core load gl resources.
907 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
909 // The text scrolling works only on single line text.
910 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
912 // Turn on all the effects.
913 label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f );
914 label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 );
915 label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f );
917 // Enable the auto scrolling effect.
918 label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
920 // The auto scrolling shouldn't be enabled.
921 const bool enabled = label.GetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL ).Get<bool>();
922 DALI_TEST_CHECK( !enabled );
927 int UtcDaliToolkitTextlabelEllipsis(void)
929 ToolkitTestApplication application;
930 tet_infoline(" UtcDaliToolkitTextlabelEllipsis");
932 TextLabel label = TextLabel::New("Hello world");
933 DALI_TEST_CHECK( label );
935 // Avoid a crash when core load gl resources.
936 application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
938 Stage::GetCurrent().Add( label );
940 // Turn on all the effects
941 label.SetAnchorPoint( AnchorPoint::CENTER );
942 label.SetParentOrigin( ParentOrigin::CENTER );
943 label.SetSize( 360.0f, 10.f );
948 application.SendNotification();
949 application.Render();
953 tet_result(TET_FAIL);
959 int UtcDaliToolkitTextlabelTextWrapMode(void)
961 ToolkitTestApplication application;
962 tet_infoline(" UtcDaliToolkitTextlabelTextWarpMode");
966 TextLabel label = TextLabel::New();
967 label.SetSize( 300.0f, 300.f );
968 label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" );
969 label.SetProperty( TextLabel::Property::MULTI_LINE, true );
973 //label.SetProperty( TextLabel::Property::POINT_SIZE, 18 );
974 Stage::GetCurrent().Add( label );
976 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "WORD" );
977 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::WORD ), TEST_LOCATION );
979 application.SendNotification();
980 application.Render();
982 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
983 DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION );
985 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "CHARACTER" );
986 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
988 application.SendNotification();
989 application.Render();
991 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, Text::LineWrap::WORD );
992 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::WORD ), TEST_LOCATION );
994 application.SendNotification();
995 application.Render();
997 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
998 DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION );
1000 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, Text::LineWrap::CHARACTER );
1001 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
1003 application.SendNotification();
1004 application.Render();
1006 lineCount = label.GetProperty<int>( TextLabel::Property::LINE_COUNT );
1007 DALI_TEST_EQUALS( lineCount, 3, TEST_LOCATION );
1009 tet_infoline( "Ensure invalid string does not change wrapping mode" );
1010 label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "InvalidWrapMode" );
1011 DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION );
1016 int UtcDaliToolkitTextLabelColorComponents(void)
1018 ToolkitTestApplication application;
1020 TextLabel label = TextLabel::New();
1021 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
1022 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_RED ), 1.0f, TEST_LOCATION );
1023 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_GREEN ), 0.0f, TEST_LOCATION );
1024 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_BLUE ), 0.0f, TEST_LOCATION );
1025 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 1.0f, TEST_LOCATION );
1027 label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::GREEN );
1028 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_RED ), 0.0f, TEST_LOCATION );
1029 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_GREEN ), 1.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::BLUE );
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 ), 0.0f, TEST_LOCATION );
1036 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_BLUE ), 1.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_ALPHA, 0.6f );
1040 DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 0.6f, TEST_LOCATION );
1041 DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
1042 DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::UNUSED_PROPERTY_TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
1047 int UtcDaliToolkitTextlabelTextStyle01(void)
1049 ToolkitTestApplication application;
1050 tet_infoline(" UtcDaliToolkitTextlabelTextStyle Setting Outline after Shadow");
1052 TextLabel label = TextLabel::New();
1053 label.SetSize( 300.0f, 300.f );
1054 label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" );
1055 label.SetProperty( TextLabel::Property::POINT_SIZE, 12 );
1056 Stage::GetCurrent().Add( label );
1058 Property::Map outlineMapSet;
1059 Property::Map outlineMapGet;
1061 outlineMapSet["color"] = Color::BLUE;
1062 outlineMapSet["width"] = 2.0f;
1063 label.SetProperty( TextLabel::Property::OUTLINE, outlineMapSet );
1065 application.SendNotification();
1066 application.Render();
1068 Property::Map shadowMapSet;
1069 shadowMapSet.Insert( "color", "green" );
1070 shadowMapSet.Insert( "offset", "2 2" );
1071 shadowMapSet.Insert( "blurRadius", "3" );
1072 label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet );
1074 outlineMapSet["color"] = Color::RED;
1075 outlineMapSet["width"] = 0.0f;
1076 label.SetProperty( TextLabel::Property::OUTLINE, outlineMapSet );
1078 application.SendNotification();
1079 application.Render();
1081 outlineMapGet = label.GetProperty<Property::Map>( TextLabel::Property::OUTLINE );
1083 Property::Value* colorValue = outlineMapGet.Find("color");
1085 bool colorMatched( false );
1089 Property::Type valueType = colorValue->GetType();
1091 if ( Property::STRING == valueType )
1093 std::string stringValue;
1094 colorValue->Get( stringValue );
1095 if ( stringValue == "red" )
1097 colorMatched = true;
1100 else if ( Property::VECTOR4 == valueType )
1102 Vector4 colorVector4;
1103 colorValue->Get( colorVector4 );
1104 if ( colorVector4 == Color::RED )
1106 colorMatched = true;
1111 DALI_TEST_EQUALS( colorMatched, true, TEST_LOCATION );