X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TextLabel.cpp;h=f4655ab8acc9ec2d96e64696f27fdcc70f97d266;hp=d420979c0795404381a9bc00f7c08066f4b50645;hb=91a31a5bdf35ebea5818c3809467b6fb74a547a2;hpb=9586f40d19b66c16e7daed9df3f58aeef82b3282 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp old mode 100755 new mode 100644 index d420979..f4655ab --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,8 @@ #include #include #include +#include +#include using namespace Dali; using namespace Toolkit; @@ -70,10 +72,42 @@ const char* const PROPERTY_NAME_BACKGROUND = "textBackground"; const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize"; const char* const PROPERTY_NAME_ELLIPSIS = "ellipsis"; const char* const PROPERTY_NAME_AUTO_SCROLL_LOOP_DELAY = "autoScrollLoopDelay"; +const char* const PROPERTY_NAME_FONT_SIZE_SCALE = "fontSizeScale"; + +const char* const PROPERTY_NAME_ELLIPSIS_POSITION = "ellipsisPosition"; const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); const unsigned int EMOJI_FONT_SIZE = 3840u; // 60 * 64 +static bool gAnchorClickedCallBackCalled; +static bool gAnchorClickedCallBackNotCalled; + +struct CallbackFunctor +{ + CallbackFunctor(bool* callbackFlag) + : mCallbackFlag( callbackFlag ) + { + } + + void operator()() + { + *mCallbackFlag = true; + } + bool* mCallbackFlag; +}; + +static void TestAnchorClickedCallback(TextLabel control, const char* href, unsigned int hrefLength) +{ + tet_infoline(" TestAnchorClickedCallback"); + + gAnchorClickedCallBackNotCalled = false; + + if (!strcmp(href, "https://www.tizen.org") && hrefLength == strlen(href)) + { + gAnchorClickedCallBackCalled = true; + } +} + bool DaliTestCheckMaps( const Property::Map& mapGet, const Property::Map& mapSet, const std::vector& indexConversionTable = std::vector() ) { const Property::Map::SizeType size = mapGet.Count(); @@ -228,6 +262,23 @@ int UtcDaliToolkitTextLabelCopyConstructorP(void) END_TEST; } +int UtcDaliTextLabelMoveConstructor(void) +{ + ToolkitTestApplication application; + + TextLabel textLabel = TextLabel::New(); + textLabel.SetProperty( TextLabel::Property::TEXT, "Test" ); + DALI_TEST_CHECK( textLabel.GetProperty( TextLabel::Property::TEXT ) == "Test" ); + + TextLabel moved = std::move( textLabel ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_CHECK( moved.GetProperty( TextLabel::Property::TEXT ) == "Test" ); + DALI_TEST_CHECK( !textLabel ); + + END_TEST; +} + int UtcDaliToolkitTextLabelAssignmentOperatorP(void) { ToolkitTestApplication application; @@ -241,6 +292,24 @@ int UtcDaliToolkitTextLabelAssignmentOperatorP(void) END_TEST; } +int UtcDaliTextLabelMoveAssignment(void) +{ + ToolkitTestApplication application; + + TextLabel textLabel = TextLabel::New(); + textLabel.SetProperty( TextLabel::Property::TEXT, "Test" ); + DALI_TEST_CHECK( textLabel.GetProperty( TextLabel::Property::TEXT ) == "Test" ); + + TextLabel moved; + moved = std::move( textLabel ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_CHECK( moved.GetProperty( TextLabel::Property::TEXT ) == "Test" ); + DALI_TEST_CHECK( !textLabel ); + + END_TEST; +} + // Positive test case for a method int UtcDaliToolkitTextLabelGetPropertyP(void) { @@ -250,7 +319,7 @@ int UtcDaliToolkitTextLabelGetPropertyP(void) DALI_TEST_CHECK( label ); // Check Property Indices are correct - DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextLabel::Property::RENDERING_BACKEND ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == DevelTextLabel::Property::RENDERING_BACKEND ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextLabel::Property::TEXT ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextLabel::Property::FONT_FAMILY ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextLabel::Property::FONT_STYLE ); @@ -273,6 +342,8 @@ int UtcDaliToolkitTextLabelGetPropertyP(void) DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == TextLabel::Property::PIXEL_SIZE ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ELLIPSIS ) == TextLabel::Property::ELLIPSIS ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_AUTO_SCROLL_LOOP_DELAY ) == TextLabel::Property::AUTO_SCROLL_LOOP_DELAY ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_SIZE_SCALE ) == DevelTextLabel::Property::FONT_SIZE_SCALE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ELLIPSIS_POSITION ) == DevelTextLabel::Property::ELLIPSIS_POSITION ); END_TEST; } @@ -284,11 +355,11 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) TextLabel label = TextLabel::New(); DALI_TEST_CHECK( label ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); // Note - we can't check the defaults since the stylesheets are platform-specific - label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS ); - DALI_TEST_EQUALS( (Text::RenderingType)label.GetProperty( TextLabel::Property::RENDERING_BACKEND ), Text::RENDERING_SHARED_ATLAS, TEST_LOCATION ); + label.SetProperty( DevelTextLabel::Property::RENDERING_BACKEND, DevelText::RENDERING_SHARED_ATLAS ); + DALI_TEST_EQUALS( (DevelText::RenderingType)label.GetProperty( DevelTextLabel::Property::RENDERING_BACKEND ), DevelText::RENDERING_SHARED_ATLAS, TEST_LOCATION ); // Check that text can be correctly reset label.SetProperty( TextLabel::Property::TEXT, "Setting Text" ); @@ -324,6 +395,10 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) label.SetProperty( TextLabel::Property::POINT_SIZE, 10.f ); DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::POINT_SIZE ), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + label.SetProperty( DevelTextLabel::Property::FONT_SIZE_SCALE, 2.5f ); + DALI_TEST_EQUALS( label.GetProperty( DevelTextLabel::Property::FONT_SIZE_SCALE ), 2.5f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + label.SetProperty( DevelTextLabel::Property::FONT_SIZE_SCALE, 1.0f ); + // Reset font style. fontStyleMapSet.Clear(); fontStyleMapSet.Insert( "weight", "normal" ); @@ -658,7 +733,7 @@ int UtcDaliToolkitTextlabelAtlasRenderP(void) // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); // Turn on all the effects label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); @@ -677,7 +752,7 @@ int UtcDaliToolkitTextlabelAtlasRenderP(void) try { // Render some text with the shared atlas backend - label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS ); + label.SetProperty( DevelTextLabel::Property::RENDERING_BACKEND, DevelText::RENDERING_SHARED_ATLAS ); application.SendNotification(); application.Render(); } @@ -689,7 +764,7 @@ int UtcDaliToolkitTextlabelAtlasRenderP(void) try { // Render some text with the shared atlas backend - label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_VECTOR_BASED ); + label.SetProperty( DevelTextLabel::Property::RENDERING_BACKEND, DevelText::RENDERING_VECTOR_BASED ); application.SendNotification(); application.Render(); } @@ -707,7 +782,7 @@ int UtcDaliToolkitTextLabelLanguagesP(void) TextLabel label = TextLabel::New(); DALI_TEST_CHECK( label ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); const std::string scripts( " привет мир, γειά σου Κόσμε, Hello world, مرحبا بالعالم, שלום עולם, " "բարեւ աշխարհը, მსოფლიოში, 안녕하세요, 你好世界, ひらがな, カタカナ, " @@ -732,7 +807,7 @@ int UtcDaliToolkitTextLabelEmojisP(void) TextLabel label = TextLabel::New(); DALI_TEST_CHECK( label ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); @@ -775,7 +850,7 @@ int UtcDaliToolkitTextlabelScrollingP(void) DALI_TEST_CHECK( labelFinished ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( labelImmediate ); + application.GetScene().Add( labelImmediate ); // Turn on all the effects labelImmediate.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); @@ -783,7 +858,7 @@ int UtcDaliToolkitTextlabelScrollingP(void) labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE ); - Stage::GetCurrent().Add( labelFinished ); + application.GetScene().Add( labelFinished ); // Turn on all the effects labelFinished.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); @@ -831,7 +906,7 @@ int UtcDaliToolkitTextlabelScrollingCenterAlignP(void) DALI_TEST_CHECK( labelLong ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( labelShort ); + application.GetScene().Add( labelShort ); // Turn on all the effects labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); @@ -840,7 +915,7 @@ int UtcDaliToolkitTextlabelScrollingCenterAlignP(void) labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE ); - Stage::GetCurrent().Add( labelLong ); + application.GetScene().Add( labelLong ); // Turn on all the effects labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); @@ -881,7 +956,7 @@ int UtcDaliToolkitTextlabelScrollingCenterAlignRTLP(void) DALI_TEST_CHECK( labelLong ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( labelShort ); + application.GetScene().Add( labelShort ); // Turn on all the effects labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); @@ -890,7 +965,7 @@ int UtcDaliToolkitTextlabelScrollingCenterAlignRTLP(void) labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE ); - Stage::GetCurrent().Add( labelLong ); + application.GetScene().Add( labelLong ); // Turn on all the effects labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); @@ -931,7 +1006,7 @@ int UtcDaliToolkitTextlabelScrollingEndAlignP(void) DALI_TEST_CHECK( labelLong ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( labelShort ); + application.GetScene().Add( labelShort ); // Turn on all the effects labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" ); @@ -940,7 +1015,7 @@ int UtcDaliToolkitTextlabelScrollingEndAlignP(void) labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE ); - Stage::GetCurrent().Add( labelLong ); + application.GetScene().Add( labelLong ); // Turn on all the effects labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" ); @@ -981,7 +1056,7 @@ int UtcDaliToolkitTextlabelScrollingEndAlignRTLP(void) DALI_TEST_CHECK( labelLong ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( labelShort ); + application.GetScene().Add( labelShort ); // Turn on all the effects labelShort.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelShort.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" ); @@ -990,7 +1065,7 @@ int UtcDaliToolkitTextlabelScrollingEndAlignRTLP(void) labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); labelShort.SetProperty( TextLabel::Property::AUTO_SCROLL_STOP_MODE, TextLabel::AutoScrollStopMode::IMMEDIATE ); - Stage::GetCurrent().Add( labelLong ); + application.GetScene().Add( labelLong ); // Turn on all the effects labelLong.SetProperty( TextLabel::Property::MULTI_LINE, false ); labelLong.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" ); @@ -1029,8 +1104,8 @@ int UtcDaliToolkitTextlabelScrollingInterruptedP(void) DALI_TEST_CHECK( label ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( label ); - label.SetSize( 360.0f, 20.f ); + application.GetScene().Add( label ); + label.SetProperty( Actor::Property::SIZE, Vector2( 360.0f, 20.f ) ); // Turn on all the effects label.SetProperty( TextLabel::Property::MULTI_LINE, false ); label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); @@ -1082,7 +1157,7 @@ int UtcDaliToolkitTextlabelScrollingN(void) TextLabel label = TextLabel::New("Some text to scroll"); DALI_TEST_CHECK( label ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); @@ -1113,7 +1188,7 @@ int UtcDaliToolkitTextlabelScrollingWithEllipsis(void) TextLabel label = TextLabel::New("Some text to scroll"); DALI_TEST_CHECK( label ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); @@ -1161,12 +1236,12 @@ int UtcDaliToolkitTextlabelEllipsis(void) // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); // Turn on all the effects label.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); label.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - label.SetSize( 360.0f, 10.f ); + label.SetProperty( Actor::Property::SIZE, Vector2( 360.0f, 10.f ) ); try { @@ -1181,7 +1256,7 @@ int UtcDaliToolkitTextlabelEllipsis(void) label.SetProperty( TextLabel::Property::TEXT, "Hello world " ); label.SetProperty( DevelTextLabel::Property::IGNORE_SPACES_AFTER_TEXT, false ); - label.SetSize( 400.0f, 10.f ); + label.SetProperty( Actor::Property::SIZE, Vector2( 400.0f, 10.f ) ); try { @@ -1197,7 +1272,7 @@ int UtcDaliToolkitTextlabelEllipsis(void) label.SetProperty( TextLabel::Property::TEXT, "Hello world" ); label.SetProperty( DevelTextLabel::Property::MATCH_SYSTEM_LANGUAGE_DIRECTION, true ); - label.SetSize( 400.0f, 10.f ); + label.SetProperty( Actor::Property::SIZE, Vector2( 400.0f, 10.f ) ); try { @@ -1221,14 +1296,14 @@ int UtcDaliToolkitTextlabelTextWrapMode(void) int lineCount =0 ; TextLabel label = TextLabel::New(); - label.SetSize( 300.0f, 300.f ); + label.SetProperty( Actor::Property::SIZE, Vector2( 300.0f, 300.f ) ); label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" ); label.SetProperty( TextLabel::Property::MULTI_LINE, true ); //label.SetProperty( TextLabel::Property::POINT_SIZE, 18 ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "WORD" ); DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::WORD ), TEST_LOCATION ); @@ -1296,13 +1371,12 @@ int UtcDaliToolkitTextLabelColorComponents(void) label.SetProperty( TextLabel::Property::TEXT_COLOR_ALPHA, 0.6f ); DALI_TEST_EQUALS( label.GetProperty< float >( TextLabel::Property::TEXT_COLOR_ALPHA ), 0.6f, TEST_LOCATION ); DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION ); - DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::UNUSED_PROPERTY_TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION ); // Test a transparent text - Rendering should be skipped. label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" ); label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace(); drawTrace.Enable( true ); @@ -1339,10 +1413,10 @@ int UtcDaliToolkitTextlabelTextStyle01(void) tet_infoline(" UtcDaliToolkitTextlabelTextStyle Setting Outline after Shadow"); TextLabel label = TextLabel::New(); - label.SetSize( 300.0f, 300.f ); + label.SetProperty( Actor::Property::SIZE, Vector2( 300.0f, 300.f ) ); label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" ); label.SetProperty( TextLabel::Property::POINT_SIZE, 12 ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); Property::Map outlineMapSet; Property::Map outlineMapGet; @@ -1411,7 +1485,7 @@ int UtcDaliToolkitTextlabelMultiline(void) label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world Hello world Hello world Hello world Hello world" ); label.SetProperty( TextLabel::Property::POINT_SIZE, 20 ); label.SetProperty( TextLabel::Property::MULTI_LINE, false ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); application.SendNotification(); application.Render(); @@ -1441,7 +1515,8 @@ int UtcDaliToolkitTextlabelTextDirection(void) label.SetProperty( TextLabel::Property::TEXT, "Hello world" ); label.SetProperty( TextLabel::Property::POINT_SIZE, 20 ); - Stage::GetCurrent().Add( label ); + label.SetProperty( DevelTextLabel::Property::MATCH_SYSTEM_LANGUAGE_DIRECTION, false ); + application.GetScene().Add( label ); // Test LTR text DALI_TEST_EQUALS( label.GetProperty< int >( DevelTextLabel::Property::TEXT_DIRECTION ), static_cast< int >( Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT ), TEST_LOCATION ); @@ -1472,7 +1547,7 @@ int UtcDaliToolkitTextlabelVerticalLineAlignment(void) label.SetProperty( TextLabel::Property::TEXT, "Hello world" ); label.SetProperty( TextLabel::Property::POINT_SIZE, 15 ); label.SetProperty( TextLabel::Property::LINE_SPACING, 12 ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); DALI_TEST_EQUALS( label.GetProperty< int >( DevelTextLabel::Property::VERTICAL_LINE_ALIGNMENT ), static_cast< int >( Toolkit::DevelText::VerticalLineAlignment::TOP ), TEST_LOCATION ); label.SetProperty( DevelTextLabel::Property::VERTICAL_LINE_ALIGNMENT, DevelText::VerticalLineAlignment::MIDDLE ); @@ -1520,7 +1595,7 @@ int UtcDaliToolkitTextLabelBitmapFont(void) // The text has been laid out with the bitmap font if the natural size is the sum of all the width (322) and 34 height. DALI_TEST_EQUALS( label.GetNaturalSize(), Vector3(322.f, 34.f, 0.f), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); application.SendNotification(); application.Render(); @@ -1547,7 +1622,7 @@ int UtcDaliToolkitTextlabelTextFit(void) tet_infoline(" UtcDaliToolkitTextlabelTextFit"); TextLabel label = TextLabel::New(); Vector2 size( 460.0f, 100.0f ); - label.SetSize( size ); + label.SetProperty( Actor::Property::SIZE, size ); label.SetProperty( TextLabel::Property::TEXT, "Hello world" ); // check point size @@ -1561,12 +1636,12 @@ int UtcDaliToolkitTextlabelTextFit(void) label.SetProperty( Toolkit::DevelTextLabel::Property::TEXT_FIT, textFitMapSet ); label.SetProperty( TextLabel::Property::POINT_SIZE, 120.f); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); application.SendNotification(); application.Render(); - const Vector3 EXPECTED_NATURAL_SIZE( 460.0f, 98.0f, 0.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 452.0f, 94.0f, 0.0f ); DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, label.GetNaturalSize(), TEST_LOCATION ); // check pixel size @@ -1617,7 +1692,7 @@ int UtcDaliToolkitTextlabelMaxTextureSet(void) label.SetProperty( TextLabel::Property::UNDERLINE, underlineMapSet ); label.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::BLUE ); - Stage::GetCurrent().Add( label ); + application.GetScene().Add( label ); application.SendNotification(); application.Render(); @@ -1631,3 +1706,318 @@ int UtcDaliToolkitTextlabelMaxTextureSet(void) END_TEST; } + +int UtcDaliToolkitTextlabelLastCharacterIndex(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelLastCharacterIndex"); + + Vector2 size( 300.0f, 100.0f ); + + Dali::Toolkit::DevelText::RendererParameters textParameters; + textParameters.text = "This is a sample text to get the last index."; + textParameters.layout = "multiLine"; + textParameters.fontSize = 20.f; + textParameters.textWidth = 300u; + textParameters.textHeight = 100u; + textParameters.ellipsisEnabled = true; + Dali::Property::Array indexArray = Dali::Toolkit::DevelText::GetLastCharacterIndex( textParameters ); + + DALI_TEST_CHECK( !indexArray.Empty() ); + DALI_TEST_EQUALS( indexArray.GetElementAt(0).Get(), 10, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliToolkitTextlabelFontSizeScale(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelFontSizeScale"); + + TextLabel label = TextLabel::New(); + label.SetProperty( TextLabel::Property::POINT_SIZE, 30.f ); + label.SetProperty( TextLabel::Property::TEXT, "Test" ); + Vector3 nonScaledSize = label.GetNaturalSize(); + + TextLabel labelScaled = TextLabel::New(); + labelScaled.SetProperty( TextLabel::Property::POINT_SIZE, 15.f ); + labelScaled.SetProperty( Toolkit::DevelTextLabel::Property::FONT_SIZE_SCALE, 2.f ); + labelScaled.SetProperty( TextLabel::Property::TEXT, "Test" ); + Vector3 scaledSize = labelScaled.GetNaturalSize(); + + DALI_TEST_EQUALS( nonScaledSize, scaledSize, TEST_LOCATION ); + + label.SetProperty( TextLabel::Property::PIXEL_SIZE, 30.f ); + label.SetProperty( TextLabel::Property::TEXT, "Test" ); + nonScaledSize = label.GetNaturalSize(); + + labelScaled.SetProperty( TextLabel::Property::PIXEL_SIZE, 15.f ); + labelScaled.SetProperty( Toolkit::DevelTextLabel::Property::FONT_SIZE_SCALE, 2.f ); + labelScaled.SetProperty( TextLabel::Property::TEXT, "Test" ); + scaledSize = labelScaled.GetNaturalSize(); + + DALI_TEST_EQUALS( nonScaledSize, scaledSize, TEST_LOCATION ); + + END_TEST; +} + +// Positive test for the anchorClicked signal. +int UtcDaliToolkitTextlabelAnchorClicked(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelAnchorClicked"); + TextLabel label = TextLabel::New(); + DALI_TEST_CHECK(label); + + application.GetScene().Add(label); + + // connect to the anchor clicked signal. + ConnectionTracker* testTracker = new ConnectionTracker(); + DevelTextLabel::AnchorClickedSignal(label).Connect(&TestAnchorClickedCallback); + bool anchorClickedSignal = false; + label.ConnectSignal(testTracker, "anchorClicked", CallbackFunctor(&anchorClickedSignal)); + + gAnchorClickedCallBackCalled = false; + label.SetProperty(TextLabel::Property::TEXT, "TIZEN"); + label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + label.SetProperty(Actor::Property::SIZE, Vector2(100.f, 50.f)); + label.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + label.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + application.SendNotification(); + application.Render(); + + // Create a tap event to touch the text label. + TestGenerateTap(application, 5.0f, 25.0f, 100); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gAnchorClickedCallBackCalled); + DALI_TEST_CHECK(anchorClickedSignal); + + // reset + gAnchorClickedCallBackCalled = false; + anchorClickedSignal = false; + label.SetProperty(TextLabel::Property::TEXT, ""); + label.SetProperty(TextLabel::Property::ENABLE_MARKUP, false); + + application.SendNotification(); + application.Render(); + + // sets anchor text + label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + label.SetProperty(TextLabel::Property::TEXT, "TIZEN"); + label.SetProperty(Actor::Property::SIZE, Vector2(100.f, 50.f)); + label.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + label.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + application.SendNotification(); + application.Render(); + + // Create a tap event to touch the text label. + TestGenerateTap(application, 5.0f, 25.0f, 200); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gAnchorClickedCallBackCalled); + DALI_TEST_CHECK(anchorClickedSignal); + + + gAnchorClickedCallBackNotCalled = true; + // Tap the outside of anchor, callback should not be called. + TestGenerateTap(application, 150.f, 100.f, 300); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gAnchorClickedCallBackNotCalled); + + END_TEST; +} + +int UtcDaliTextLabelAtlasLimitationIsEnabledForLargeFontPointSize(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextLabelAtlasLimitationIsEnabledForLargeFontPointSize "); + + //TextLabel is not using Atlas but this is to unify font-size on text-controllers + + // +2: First one to handle the equal case. Second one to handle odd to even case of GetNaturalSize + const uint32_t lessThanWidth = TextAbstraction::FontClient::MAX_TEXT_ATLAS_WIDTH - TextAbstraction::FontClient::PADDING_TEXT_ATLAS_BLOCK + 2; + const uint32_t lessThanHeight = TextAbstraction::FontClient::MAX_TEXT_ATLAS_HEIGHT - TextAbstraction::FontClient::PADDING_TEXT_ATLAS_BLOCK + 2; + + // Create a text editor + TextLabel textLabel = TextLabel::New(); + //Set size to avoid automatic eliding + textLabel.SetProperty( Actor::Property::SIZE, Vector2(1025, 1025)); + //Set very large font-size using point-size + textLabel.SetProperty( TextLabel::Property::POINT_SIZE, 1000); + //Specify font-family + textLabel.SetProperty( TextLabel::Property::FONT_FAMILY, "DejaVu Sans"); + //Set text to check if appear or not + textLabel.SetProperty( TextLabel::Property::TEXT, "A"); + + application.GetScene().Add( textLabel ); + + application.SendNotification(); + application.Render(); + //Use GetNaturalSize to verify that size of block does not exceed Atlas size + Vector3 naturalSize = textLabel.GetNaturalSize(); + + DALI_TEST_GREATER( lessThanWidth, static_cast(naturalSize.width), TEST_LOCATION ); + DALI_TEST_GREATER( lessThanHeight, static_cast(naturalSize.height), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliTextLabelHyphenWrapMode(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextLabelHyphenWrapMode "); + + int lineCount =0; + TextLabel label = TextLabel::New(); + label.SetProperty( Actor::Property::SIZE, Vector2( 150.0f, 300.f )); + label.SetProperty( TextLabel::Property::POINT_SIZE, 12.f ); + label.SetProperty( TextLabel::Property::MULTI_LINE, true); + application.GetScene().Add( label ); + application.SendNotification(); + application.Render(); + + label.SetProperty( TextLabel::Property::TEXT, "Hi Experimen" ); + label.SetProperty(TextLabel::Property::LINE_WRAP_MODE,DevelText::LineWrap::HYPHENATION); + DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( DevelText::LineWrap::HYPHENATION ), TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + lineCount = label.GetProperty( TextLabel::Property::LINE_COUNT ); + /* + text will be : + Hi Exp- + erimen + */ + DALI_TEST_EQUALS( lineCount, 2, TEST_LOCATION ); + + label.SetProperty( TextLabel::Property::TEXT, "Hi Experimen" ); + label.SetProperty(TextLabel::Property::LINE_WRAP_MODE,DevelText::LineWrap::MIXED); + DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( DevelText::LineWrap::MIXED ), TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + lineCount = label.GetProperty( TextLabel::Property::LINE_COUNT ); + /* + text will be : + Hi + Experi- + men + */ + DALI_TEST_EQUALS( lineCount, 3, TEST_LOCATION ); + + END_TEST; +} + + +int utcDaliTextLabelGetHeightForWidthChangeLineCountWhenTextChanged(void) +{ + ToolkitTestApplication application; + + tet_infoline(" utcDaliTextLabelGetHeightForWidthChangeLineCountWhenTextChanged "); + + int lineCountBefore =0 ; + int lineCountAfter =0 ; + + // Create a text editor + TextLabel textLabel = TextLabel::New(); + //Set very large font-size using point-size + textLabel.SetProperty( TextLabel::Property::POINT_SIZE, 10) ; + //Specify font-family + textLabel.SetProperty( TextLabel::Property::FONT_FAMILY, "DejaVu Sans"); + //Specify size + textLabel.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 100.f ) ); + //Set text longer than width of textLabel + textLabel.SetProperty( TextLabel::Property::TEXT, "Short text"); + //Set line wrap mode Character + textLabel.SetProperty(TextLabel::Property::LINE_WRAP_MODE, "CHARACTER"); + textLabel.SetProperty(TextLabel::Property::MULTI_LINE, true); + + application.GetScene().Add( textLabel ); + + application.SendNotification(); + application.Render(); + + + lineCountBefore = textLabel.GetProperty( TextLabel::Property::LINE_COUNT ); + + textLabel.SetProperty( TextLabel::Property::TEXT, "This is very loooooooooooooooooooooooooooooooooooong text for test"); + lineCountAfter = textLabel.GetProperty( TextLabel::Property::LINE_COUNT ); + + // When the text changed, the Line-count should be updated according to new text. + // Because the GetHeightForWidth is called in Controller::GetLineCount(float width) + DALI_TEST_EQUALS( lineCountBefore ,1, TEST_LOCATION ); + DALI_TEST_GREATER( lineCountAfter,1, TEST_LOCATION ); + + + END_TEST; +} + +int UtcDaliToolkitTextlabelEllipsisPositionProperty(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty "); + TextLabel textLabel = TextLabel::New(); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Default is END"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::END ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to START"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, DevelText::EllipsisPosition::START); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::START ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to MIDDLE"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, DevelText::EllipsisPosition::MIDDLE); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::MIDDLE ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to END"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, DevelText::EllipsisPosition::END); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::END ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to START using integer"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, 1); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::START ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to MIDDLE using integer"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, 2); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::MIDDLE ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to END using integer"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, 0); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::END ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to START using string - uppercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "START"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::START ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to MIDDLE using string - uppercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "MIDDLE"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::MIDDLE ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to END using string - uppercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "END"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::END ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to START using string - lowercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "start"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::START ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to MIDDLE using string - lowercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "middle"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::MIDDLE ), TEST_LOCATION ); + + tet_infoline(" UtcDaliToolkitTextlabelEllipsisPositionProperty - Change to END using string - lowercase"); + textLabel.SetProperty(DevelTextLabel::Property::ELLIPSIS_POSITION, "end"); + DALI_TEST_EQUALS( textLabel.GetProperty< int >( DevelTextLabel::Property::ELLIPSIS_POSITION ), static_cast< int >( Toolkit::DevelText::EllipsisPosition::END ), TEST_LOCATION ); + + + END_TEST; +} \ No newline at end of file