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=0ece7176d371b90b9ae95c08138f48546d8398e1;hp=e12ce040252c34b5a2e2720b22092410b6f1518f;hb=0cb355e273c2ef5b0efc545749496def9f25c27e;hpb=b7e3a56ad86f6f45b9cd126647a6161757c3674e diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index e12ce04..0ece717 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -644,6 +644,21 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) DALI_TEST_EQUALS(strikethroughMapGet.Count(), strikethroughMapSet.Count(), TEST_LOCATION); DALI_TEST_EQUALS(DaliTestCheckMaps(strikethroughMapGet, strikethroughMapSet), true, TEST_LOCATION); + // Check the transparent strikethrough property for coverage. + strikethroughMapSet.Clear(); + strikethroughMapSet.Insert("enable", true); + strikethroughMapSet.Insert("color", Color::TRANSPARENT); + strikethroughMapSet.Insert("height", 2.0f); + + label.SetProperty(DevelTextLabel::Property::STRIKETHROUGH, strikethroughMapSet); + + application.SendNotification(); + application.Render(); + + strikethroughMapGet = label.GetProperty(DevelTextLabel::Property::STRIKETHROUGH); + DALI_TEST_EQUALS(strikethroughMapGet.Count(), strikethroughMapSet.Count(), TEST_LOCATION); + DALI_TEST_EQUALS(DaliTestCheckMaps(strikethroughMapGet, strikethroughMapSet), true, TEST_LOCATION); + strikethroughMapSet.Clear(); strikethroughMapSet.Insert(Toolkit::DevelText::Strikethrough::Property::ENABLE, true); strikethroughMapSet.Insert(Toolkit::DevelText::Strikethrough::Property::COLOR, Color::RED); @@ -803,6 +818,24 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) DALI_TEST_EQUALS(underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION); DALI_TEST_EQUALS(DaliTestCheckMaps(underlineMapGet, underlineMapSet), true, TEST_LOCATION); + // Check the transparent double underline property for coverage. + underlineMapSet.Clear(); + underlineMapSet.Insert("enable", true); + underlineMapSet.Insert("color", Color::TRANSPARENT); + underlineMapSet.Insert("height", 1); + underlineMapSet.Insert("type", Text::Underline::DOUBLE); + underlineMapSet.Insert("dashWidth", 2); + underlineMapSet.Insert("dashGap", 1); + + label.SetProperty(TextLabel::Property::UNDERLINE, underlineMapSet); + + application.SendNotification(); + application.Render(); + + 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(); underlineMapSet.Insert(Toolkit::DevelText::Underline::Property::ENABLE, true); underlineMapSet.Insert(Toolkit::DevelText::Underline::Property::COLOR, Color::GREEN); @@ -931,6 +964,19 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) DALI_TEST_EQUALS(backgroundMapGet.Count(), backgroundMapSet.Count(), TEST_LOCATION); DALI_TEST_EQUALS(DaliTestCheckMaps(backgroundMapGet, backgroundMapSet), true, TEST_LOCATION); + // Check the transparent background property for coverage + backgroundMapSet.Clear(); + backgroundMapSet["enable"] = true; + backgroundMapSet["color"] = Color::TRANSPARENT; + label.SetProperty(DevelTextLabel::Property::BACKGROUND, backgroundMapSet); + + application.SendNotification(); + application.Render(); + + backgroundMapGet = label.GetProperty(DevelTextLabel::Property::BACKGROUND); + DALI_TEST_EQUALS(backgroundMapGet.Count(), backgroundMapSet.Count(), TEST_LOCATION); + DALI_TEST_EQUALS(DaliTestCheckMaps(backgroundMapGet, backgroundMapSet), true, TEST_LOCATION); + backgroundMapSet.Clear(); backgroundMapSet[Toolkit::DevelText::Background::Property::ENABLE] = true; backgroundMapSet[Toolkit::DevelText::Background::Property::COLOR] = Color::GREEN; @@ -1094,27 +1140,33 @@ int UtcDaliToolkitTextLabelEmojisP(void) // EMOJI Sequences case for coverage. std::string emojiSequences = + "Glyphs not included in the font \n" //case for coverage when glyph is not included in the font "Text VS15 ☪︎\n" //text presentation sequence and selector "Color VS16 ☪️\n" //emoji presentation sequence and selector "Default ☪ \n" //default presentation "FamilyManWomanGirlBoy 👨‍👩‍👧‍👦\n" // emoji multi zwj sequence "WomanScientist 👩‍🔬\n" // emoji zwj sequence - "WomanScientistLightSkinTone👩🏻‍🔬 \n" //emoji modifier sequence: skin tone & JWZ - "LeftRightArrowText↔︎\n" //text presentation sequence and selector - "LeftRightArrowEmoji↔️\n" //emoji presentation sequence and selector - "SouthKoreaFlag🇰🇷\n" //emoji flag sequence + "WomanScientistLightSkinTone👩🏻‍🔬 \n" // emoji modifier sequence: skin tone & JWZ + "LeftRightArrowText↔︎\n" // text presentation sequence and selector + "LeftRightArrowEmoji↔️\n" // emoji presentation sequence and selector + "SouthKoreaFlag🇰🇷\n" // emoji flag sequence "JordanFlag🇯🇴\n" // emoji flag sequence - "EnglandFlag🏴󠁧󠁢󠁥󠁮󠁧󠁿\n" //emoji tag sequence like England flag + "EnglandFlag🏴󠁧󠁢󠁥󠁮󠁧󠁿\n" // emoji tag sequence like England flag "Runner 🏃‍➡️ \n" - "VictoryHandMediumLightSkinTone:✌️🏼\n" //emoji modifier sequence: skin tone - "RainbowFlag:🏳️‍🌈 \n" //emoji zwj sequence: Rainbow Flag - "keycap# #️⃣ \n" // fully-qualified emoji keycap sequence - "keycap#_text #⃣ \n" // unqualified emoji keycap sequence - "keycap3 3️⃣ \n" // fully-qualified emoji keycap sequence - "keycap3_text 3⃣ \n" // unqualified emoji keycap sequence - "two adjacent glyphs ☪️️️☪️\n" //This line should be rendered as two adjacent glyphs - "Digit 8️ 8︎ 8\n" // should be rendered according to selector - "Surfing Medium Skin Female: 🏄🏼‍♀️"; // Person Surfing + Medium Skin Tone +? Zero Width Joiner + Female Sign + "VictoryHandMediumLightSkinTone:✌️🏼\n" // emoji modifier sequence: skin tone + "RainbowFlag:🏳️‍🌈 \n" // emoji zwj sequence: Rainbow Flag + "keycap# #️⃣ \n" // fully-qualified emoji keycap sequence + "keycap#_text #⃣ \n" // unqualified emoji keycap sequence + "keycap3 3️⃣ \n" // fully-qualified emoji keycap sequence + "keycap3_text 3⃣ \n" // unqualified emoji keycap sequence + "two adjacent glyphs ☪️️️☪️\n" // This line should be rendered as two adjacent glyphs + "Digit 8️ 8︎ 8\n" // should be rendered according to selector + "Surfing Medium Skin Female: 🏄🏼‍♀️\n" // Person Surfing + Medium Skin Tone +? Zero Width Joiner + Female Sign + "SYMBOLS_NSLCL variation selector: 🅰️🅱️🅲︎🅳︎🅴︎\n" // 1F170 ~ 1F174 with variation selector, text vs emoji + "SYMBOLS_NSLCL with VS15: 🅰︎🅱︎🅲︎🅳︎🅴︎\n" // 1F170 ~ 1F174 with VS15 + "SYMBOLS_NSLCL with VS16: 🅰️🅱️🅲️🅳️🅴️\n" // 1F170 ~ 1F174 with VS16 + + ; label.SetProperty(TextLabel::Property::TEXT, emojiSequences); label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); @@ -2041,6 +2093,13 @@ int UtcDaliToolkitTextlabelMaxTextureSet(void) // Check if the number of renderers is greater than 1. DALI_TEST_CHECK(label.GetRendererCount() > 1u); + // Coverage test for case of layoutSize is bigger than maxTextureSize + float max_value = static_cast(std::numeric_limits::max()); + label.SetProperty(Actor::Property::SIZE, Vector2(max_value, 30.0f)); + application.SendNotification(); + application.Render(); + + END_TEST; } @@ -2525,8 +2584,53 @@ int utcDaliTextLabelGeometryGlyphMiddle(void) Vector expectedSizes; Vector expectedPositions; - expectedPositions.PushBack(Vector2(12, 0)); - expectedSizes.PushBack(Vector2(118, 25)); + expectedPositions.PushBack(Vector2(6, 0)); + expectedSizes.PushBack(Vector2(124, 25)); + + TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); + + END_TEST; +} + +int utcDaliTextLabelGeometryOneGlyph(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextLabelGeometryOneGlyph "); + + TextLabel label = TextLabel::New(); + DALI_TEST_CHECK(label); + + application.GetScene().Add(label); + + label.SetProperty(TextLabel::Property::POINT_SIZE, 7.f); + label.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + label.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + label.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + label.SetProperty(TextLabel::Property::TEXT, "H"); + + // Avoid a crash when core load gl resources. + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); + + // Render and notify + application.SendNotification(); + application.Render(); + + unsigned int expectedCount = 1; + unsigned int startIndex = 0; + unsigned int endIndex = 0; + + Vector positionsList = DevelTextLabel::GetTextPosition(label, startIndex, endIndex); + Vector sizeList = DevelTextLabel::GetTextSize(label, startIndex, endIndex); + + DALI_TEST_EQUALS(positionsList.Size(), expectedCount, TEST_LOCATION); + DALI_TEST_EQUALS(sizeList.Size(), expectedCount, TEST_LOCATION); + + Vector expectedSizes; + Vector expectedPositions; + + expectedPositions.PushBack(Vector2(-2, 0)); + expectedSizes.PushBack(Vector2(16, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -2632,6 +2736,58 @@ int UtcDaliToolkitTextLabelStrikethroughGeneration(void) END_TEST; } +int UtcDaliToolkitTextLabelMarkupRelativeLineHeight(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextLabelMarkupRelativeLineHeight"); + + TextLabel label = TextLabel::New(); + label.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 300.f)); + label.SetProperty(TextLabel::Property::POINT_SIZE, 10); + label.SetProperty(TextLabel::Property::MULTI_LINE, true); + label.SetProperty(TextLabel::Property::TEXT, "line 1\nline 2\nline 3\nline 4\nline 5"); + label.SetProperty(DevelTextLabel::Property::RELATIVE_LINE_SIZE, 1.0f); + label.SetProperty(TextLabel::Property::ELLIPSIS, false); + label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + + TextLabel labelSingleLineParagraph = TextLabel::New(); + labelSingleLineParagraph.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 300.f)); + labelSingleLineParagraph.SetProperty(TextLabel::Property::POINT_SIZE, 10); + labelSingleLineParagraph.SetProperty(TextLabel::Property::MULTI_LINE, true); + labelSingleLineParagraph.SetProperty(TextLabel::Property::TEXT, "

line 1

line 2

line 3

line 4

line 5"); + labelSingleLineParagraph.SetProperty(DevelTextLabel::Property::RELATIVE_LINE_SIZE, 1.0f); + labelSingleLineParagraph.SetProperty(TextLabel::Property::ELLIPSIS, false); + labelSingleLineParagraph.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + + TextLabel labelMultiLineParagraph = TextLabel::New(); + labelMultiLineParagraph.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 300.f)); + labelMultiLineParagraph.SetProperty(TextLabel::Property::POINT_SIZE, 10); + labelMultiLineParagraph.SetProperty(TextLabel::Property::MULTI_LINE, true); + labelMultiLineParagraph.SetProperty(TextLabel::Property::TEXT, "

line 1

line\n2

line 3

line\n4

line 5"); + labelMultiLineParagraph.SetProperty(DevelTextLabel::Property::RELATIVE_LINE_SIZE, 1.0f); + labelMultiLineParagraph.SetProperty(TextLabel::Property::ELLIPSIS, false); + labelMultiLineParagraph.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); + + application.GetScene().Add(label); + application.GetScene().Add(labelSingleLineParagraph); + application.GetScene().Add(labelMultiLineParagraph); + application.SendNotification(); + application.Render(); + + Vector3 naturalSize = label.GetNaturalSize(); + Vector3 relativeSingleNaturalSize = labelSingleLineParagraph.GetNaturalSize(); + Vector3 relativeMultiNaturalSize = labelMultiLineParagraph.GetNaturalSize(); + + float lineSize = naturalSize.y / 5.0f; //total size/number of lines + + //no effect of relative line size for paragraph with single line + DALI_TEST_EQUALS(naturalSize.y, relativeSingleNaturalSize.y, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + + DALI_TEST_EQUALS(lineSize * 8.5f, relativeMultiNaturalSize.y, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + + END_TEST; +} + int UtcDaliToolkitTextLabelRelativeLineHeight(void) { ToolkitTestApplication application; @@ -2725,6 +2881,37 @@ int UtcDaliTextTextLabelSizeNegativeLineSpacing(void) END_TEST; } +int UtcDaliTextLabelNegativeLineSpacingWithEllipsis(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliTextLabelNegativeLineSpacingWithEllipsis"); + + TextLabel label = TextLabel::New(); + + float lineSpacing = -20.f; + + label.SetProperty(Actor::Property::SIZE, Vector2(480.0f, 100.f)); + label.SetProperty(TextLabel::Property::POINT_SIZE, 11.0f); + label.SetProperty(DevelTextLabel::Property::LINE_SPACING, lineSpacing); + label.SetProperty(TextLabel::Property::MULTI_LINE, true); + label.SetProperty(TextLabel::Property::TEXT, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + label.SetProperty(TextLabel::Property::ELLIPSIS, true); + + application.GetScene().Add(label); + application.SendNotification(); + application.Render(); + + Vector sizeList = DevelTextLabel::GetTextSize(label, 0, 123); + + int lineCount = sizeList.Size(); + DALI_TEST_EQUALS(4, lineCount, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + END_TEST; +} + int UtcDaliToolkitTextlabelParagraphTag(void) { ToolkitTestApplication application;