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=5671523b62d97638b1955b653bd5c1bc369d72dd;hp=82615306429df1684ea99d3bae37b741838fe09f;hb=6efee146b4c4e40df991b9e3425f97c66150df10;hpb=533d8c2ec94a43bbe098b556bb905cbe10f427ab diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index 8261530..5671523 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -17,8 +17,11 @@ #include #include +#include + #include #include +#include using namespace Dali; using namespace Toolkit; @@ -62,7 +65,13 @@ const char* const PROPERTY_NAME_SHADOW = "shadow"; const char* const PROPERTY_NAME_EMBOSS = "emboss"; const char* const PROPERTY_NAME_OUTLINE = "outline"; +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 int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; +const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); +const unsigned int EMOJI_FONT_SIZE = 3840u; // 60 * 64 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet ) { @@ -199,6 +208,9 @@ int UtcDaliToolkitTextLabelGetPropertyP(void) DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW ) == TextLabel::Property::SHADOW ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_EMBOSS ) == TextLabel::Property::EMBOSS ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_OUTLINE ) == TextLabel::Property::OUTLINE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == DevelTextLabel::Property::PIXEL_SIZE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ELLIPSIS ) == DevelTextLabel::Property::ELLIPSIS ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_AUTO_SCROLL_LOOP_DELAY ) == DevelTextLabel::Property::AUTO_SCROLL_LOOP_DELAY ); END_TEST; } @@ -299,7 +311,16 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) // The underline color is changed as well. DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE_COLOR ), Color::BLUE, TEST_LOCATION ); - DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE ), std::string("{\"enable\":\"false\",\"color\":\"blue\",\"height\":\"0\"}"), TEST_LOCATION ); + Property::Map underlineMapSet; + Property::Map underlineMapGet; + + underlineMapSet.Insert( "enable", "false" ); + underlineMapSet.Insert( "color", "blue" ); + underlineMapSet.Insert( "height", "0" ); + + underlineMapGet = label.GetProperty( TextLabel::Property::UNDERLINE ); + DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION ); // Check that shadow parameters can be correctly set label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 3.0f, 3.0f ) ); @@ -328,6 +349,10 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) const int SCROLL_SPEED = 80; const int SCROLL_LOOPS = 4; const float SCROLL_GAP = 50.0f; + const float SCROLL_LOOP_DELAY = 0.3f; + const std::string STOP_IMMEDIATE = std::string( "IMMEDIATE" ); + const std::string STOP_FINISH_LOOP = std::string( "FINISH_LOOP" ); + label.SetProperty( TextLabel::Property::MULTI_LINE, false ); // Autoscroll only supported in single line DALI_TEST_CHECK( !label.GetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL ) ); label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true ); @@ -338,6 +363,16 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) DALI_TEST_EQUALS( SCROLL_LOOPS, label.GetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT ), TEST_LOCATION ); label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, SCROLL_GAP ); DALI_TEST_EQUALS( SCROLL_GAP, label.GetProperty( TextLabel::Property::AUTO_SCROLL_GAP ), TEST_LOCATION ); + label.SetProperty(DevelTextLabel::Property::AUTO_SCROLL_LOOP_DELAY, SCROLL_LOOP_DELAY ); + DALI_TEST_EQUALS( SCROLL_LOOP_DELAY, label.GetProperty( DevelTextLabel::Property::AUTO_SCROLL_LOOP_DELAY ), TEST_LOCATION ); + + //Check autoscroll stop type property + label.SetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE, DevelTextLabel::AutoScrollStopMode::IMMEDIATE ); + DALI_TEST_EQUALS( STOP_IMMEDIATE, label.GetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE ), TEST_LOCATION ); + + label.SetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE, DevelTextLabel::AutoScrollStopMode::FINISH_LOOP ); + DALI_TEST_EQUALS( STOP_FINISH_LOOP, label.GetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE ), TEST_LOCATION ); + // Check the line spacing property DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::LINE_SPACING ), 0.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); @@ -345,18 +380,54 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::LINE_SPACING ), 10.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); // Check the underline property - label.SetProperty( TextLabel::Property::UNDERLINE, "{\"enable\":\"true\",\"color\":\"red\",\"height\":\"1\"}" ); - DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE ), std::string("{\"enable\":\"true\",\"color\":\"red\",\"height\":\"1\"}"), TEST_LOCATION ); - label.SetProperty( TextLabel::Property::UNDERLINE, "" ); - DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE ), std::string("{\"enable\":\"false\",\"color\":\"red\",\"height\":\"1\"}"), TEST_LOCATION ); + underlineMapSet.Clear(); + underlineMapSet.Insert( "enable", "true" ); + underlineMapSet.Insert( "color", "red" ); + underlineMapSet.Insert( "height", "1" ); + + label.SetProperty( TextLabel::Property::UNDERLINE, underlineMapSet ); + + underlineMapGet = label.GetProperty( TextLabel::Property::UNDERLINE ); + DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION ); + + underlineMapSet.Clear(); + + Property::Map underlineDisabledMapGet; + underlineDisabledMapGet.Insert( "enable", "false" ); + underlineDisabledMapGet.Insert( "color", "red" ); + underlineDisabledMapGet.Insert( "height", "1" ); + + label.SetProperty( TextLabel::Property::UNDERLINE, underlineMapSet ); + underlineMapGet = label.GetProperty( TextLabel::Property::UNDERLINE ); + DALI_TEST_EQUALS( underlineMapGet.Count(), underlineDisabledMapGet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineDisabledMapGet ), true, TEST_LOCATION ); // Check the shadow property - label.SetProperty( TextLabel::Property::SHADOW, "{\"color\":\"green\",\"offset\":\"2 2\"}" ); - DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW ), std::string("{\"color\":\"green\",\"offset\":\"2 2\"}"), TEST_LOCATION ); - label.SetProperty( TextLabel::Property::SHADOW, "" ); - DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW ), std::string("{\"color\":\"green\",\"offset\":\"0 0\"}"), TEST_LOCATION ); + Property::Map shadowMapSet; + Property::Map shadowMapGet; + + shadowMapSet.Insert( "color", "green" ); + shadowMapSet.Insert( "offset", "2 2" ); + + label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet ); + + shadowMapGet = label.GetProperty( TextLabel::Property::SHADOW ); + DALI_TEST_EQUALS( shadowMapGet.Count(), shadowMapSet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowMapSet ), true, TEST_LOCATION ); + + shadowMapSet.Clear(); + Property::Map shadowDisabledMapGet; + shadowDisabledMapGet.Insert( "color", "green" ); + shadowDisabledMapGet.Insert( "offset", "0 0" ); + + label.SetProperty( TextLabel::Property::SHADOW, shadowMapSet ); + + shadowMapGet = label.GetProperty( TextLabel::Property::SHADOW ); + DALI_TEST_EQUALS( shadowMapGet.Count(), shadowDisabledMapGet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowDisabledMapGet ), true, TEST_LOCATION ); // Check the emboss property label.SetProperty( TextLabel::Property::EMBOSS, "Emboss properties" ); @@ -366,6 +437,15 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) label.SetProperty( TextLabel::Property::OUTLINE, "Outline properties" ); DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::OUTLINE ), std::string("Outline properties"), TEST_LOCATION ); + // Check the pixel size of font + label.SetProperty( DevelTextLabel::Property::PIXEL_SIZE, 20.f ); + DALI_TEST_EQUALS( label.GetProperty( DevelTextLabel::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + + // Check the ellipsis property + DALI_TEST_CHECK( !label.GetProperty( DevelTextLabel::Property::ELLIPSIS ) ); + label.SetProperty( DevelTextLabel::Property::ELLIPSIS, true ); + DALI_TEST_CHECK( label.GetProperty( DevelTextLabel::Property::ELLIPSIS ) ); + END_TEST; } @@ -401,6 +481,17 @@ int UtcDaliToolkitTextlabelAtlasRenderP(void) tet_result(TET_FAIL); } + try + { + // Render some text with the shared atlas backend + label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_VECTOR_BASED ); + application.SendNotification(); + application.Render(); + } + catch( ... ) + { + tet_result(TET_FAIL); + } END_TEST; } @@ -429,43 +520,37 @@ int UtcDaliToolkitTextLabelLanguagesP(void) END_TEST; } -int UtcDaliToolkitTextLabelVectorBasedP(void) +int UtcDaliToolkitTextLabelEmojisP(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliToolkitTextLabelVectorBasedP"); - - TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); - glAbstraction.EnableTextureCallTrace( true ); - + tet_infoline(" UtcDaliToolkitTextLabelLanguagesP"); TextLabel label = TextLabel::New(); - label.SetParentOrigin( ParentOrigin::CENTER ); - label.SetSize( Stage::GetCurrent().GetSize() ); - label.SetProperty( TextLabel::Property::TEXT, "Hello World" ); - label.SetProperty( TextLabel::Property::POINT_SIZE, 10.0f ); - label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Toolkit::Text::RENDERING_VECTOR_BASED ); + DALI_TEST_CHECK( label ); + Stage::GetCurrent().Add( label ); - application.SendNotification(); - application.Render(); + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName( pathNamePtr ); + free( pathNamePtr ); - // Test that the vector data is uploaded to atlas - DALI_TEST_CHECK( glAbstraction.GetTextureTrace().FindMethod("TexSubImage2D") ); - glAbstraction.GetTextureTrace().Reset(); + TextAbstraction::FontDescription fontDescription; + fontDescription.path = pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf"; + fontDescription.family = "BreezeColorEmoji"; + fontDescription.width = TextAbstraction::FontWidth::NONE; + fontDescription.weight = TextAbstraction::FontWeight::NORMAL; + fontDescription.slant = TextAbstraction::FontSlant::NONE; - // Add another label with the same text in a different point-size - TextLabel label2 = TextLabel::New(); - label2.SetProperty( TextLabel::Property::TEXT, "Hello World" ); - label2.SetProperty( TextLabel::Property::POINT_SIZE, 13.0f ); - label2.SetProperty( TextLabel::Property::RENDERING_BACKEND, Toolkit::Text::RENDERING_VECTOR_BASED ); - Stage::GetCurrent().Add( label2 ); + fontClient.GetFontId( fontDescription, EMOJI_FONT_SIZE ); + + const std::string emojis = "\xF0\x9F\x98\x81 \xF0\x9F\x98\x82 \xF0\x9F\x98\x83 \xF0\x9F\x98\x84"; + label.SetProperty( TextLabel::Property::ENABLE_MARKUP, true ); + label.SetProperty( TextLabel::Property::TEXT, emojis ); application.SendNotification(); application.Render(); - // Test that no additional vector data was uploaded to atlas - // i.e. the same vector data can be used to render any point-size - DALI_TEST_CHECK( ! glAbstraction.GetTextureTrace().FindMethod("TexSubImage2D") ); - END_TEST; } @@ -473,23 +558,97 @@ int UtcDaliToolkitTextlabelScrollingP(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliToolkitTextLabelScrollingP"); + TextLabel labelImmediate = TextLabel::New("Some text to scroll"); + TextLabel labelFinished = TextLabel::New("Some text to scroll"); + + DALI_TEST_CHECK( labelImmediate ); + DALI_TEST_CHECK( labelFinished ); + // Avoid a crash when core load gl resources. + application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); + Stage::GetCurrent().Add( labelImmediate ); + // Turn on all the effects + labelImmediate.SetProperty( TextLabel::Property::MULTI_LINE, false ); + labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); + labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 ); + labelImmediate.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); + labelImmediate.SetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE, DevelTextLabel::AutoScrollStopMode::IMMEDIATE ); + + Stage::GetCurrent().Add( labelFinished ); + // Turn on all the effects + labelFinished.SetProperty( TextLabel::Property::MULTI_LINE, false ); + labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); + labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 ); + labelFinished.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); + labelFinished.SetProperty( DevelTextLabel::Property::AUTO_SCROLL_STOP_MODE, DevelTextLabel::AutoScrollStopMode::FINISH_LOOP ); + + + + try + { + // Render some text with the shared atlas backend + labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true ); + labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true ); + application.SendNotification(); + application.Render(); + + labelImmediate.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false ); + labelFinished.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false ); + application.SendNotification(); + application.Render(); + + } + catch( ... ) + { + tet_result(TET_FAIL); + } + + END_TEST; +} + +int UtcDaliToolkitTextlabelScrollingInterruptedP(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelScrollingInterruptedP"); TextLabel label = TextLabel::New("Some text to scroll"); 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 ); // Turn on all the effects label.SetProperty( TextLabel::Property::MULTI_LINE, false ); label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 ); label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); + // Render the text. + application.SendNotification(); + application.Render(); + + unsigned int actorCount1 = label.GetChildCount(); + tet_printf("Initial actor count is(%d)\n", actorCount1 ); + try { // Render some text with the shared atlas backend label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true ); application.SendNotification(); + application.Render(2000); + + unsigned int actorCount1 = label.GetChildCount(); + tet_printf("Actor count after scrolling is(%d)\n", actorCount1 ); + + label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED ); + + // Render the text. + application.SendNotification(); application.Render(); + + unsigned int actorCount2 = label.GetChildCount(); + tet_printf("After changing color the actor count is(%d)\n", actorCount2 ); + + DALI_TEST_EQUALS( actorCount1, actorCount2, TEST_LOCATION ); + } catch( ... ) {