X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Text-MultiLanguage.cpp;h=a81a462a8b5013fe381a1bf946c49563f9d4e50a;hb=HEAD;hp=3be899fd83f975eebeac2a6fcb9457266f2efed9;hpb=600d7859cddf8ee59d6ddd49002af5fc99e48bf8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp old mode 100644 new mode 100755 index 3be899f..b1964fb --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -33,35 +34,38 @@ using namespace Dali; using namespace Toolkit; using namespace Text; + // Tests the following functions with different scripts. // -// void MergeFontDescriptions( const Vector& fontDescriptions, -// const TextAbstraction::FontDescription& defaultFontDescription, -// TextAbstraction::PointSize26Dot6 defaultPointSize, -// CharacterIndex characterIndex, -// TextAbstraction::FontDescription& fontDescription, -// TextAbstraction::PointSize26Dot6& fontPointSize, -// bool& isDefaultFont ); +// void MergeFontDescriptions(const Vector& fontDescriptions, +// const TextAbstraction::FontDescription& defaultFontDescription, +// TextAbstraction::PointSize26Dot6 defaultPointSize, +// float fontSizeScale, +// CharacterIndex characterIndex, +// TextAbstraction::FontDescription& fontDescription, +// TextAbstraction::PointSize26Dot6& fontPointSize, +// bool& isDefaultFont); // -// Script GetScript( Length index, -// Vector::ConstIterator& scriptRunIt, -// const Vector::ConstIterator& scriptRunEndIt ); +// Script GetScript(Length index, +// Vector::ConstIterator& scriptRunIt, +// const Vector::ConstIterator& scriptRunEndIt); // // Constructor, destructor and MultilanguageSupport::Get() // -// void MultilanguageSupport::SetScripts( const Vector& text, -// CharacterIndex startIndex, -// Length numberOfCharacters, -// Vector& scripts ); +// void MultilanguageSupport::SetScripts(const Vector& text, +// CharacterIndex startIndex, +// Length numberOfCharacters, +// Vector& scripts); // -// void MultilanguageSupport::ValidateFonts( const Vector& text, -// const Vector& scripts, -// const Vector& fontDescriptions, -// const TextAbstraction::FontDescription& defaultFontDescription, -// TextAbstraction::PointSize26Dot6 defaultFontPointSize, -// CharacterIndex startIndex, -// Length numberOfCharacters, -// Vector& fonts ); +// void MultilanguageSupport::ValidateFonts(const Vector& text, +// const Vector& scripts, +// const Vector& fontDescriptions, +// const TextAbstraction::FontDescription& defaultFontDescription, +// TextAbstraction::PointSize26Dot6 defaultFontPointSize, +// float fontSizeScale, +// CharacterIndex startIndex, +// Length numberOfCharacters, +// Vector& fonts); ////////////////////////////////////////////////////////// @@ -69,7 +73,7 @@ namespace { const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); -const unsigned int EMOJI_FONT_SIZE = 3968u; +const unsigned int EMOJI_FONT_SIZE = 3840u; // 60 * 64 const unsigned int NON_DEFAULT_FONT_SIZE = 40u; struct MergeFontDescriptionsData @@ -78,6 +82,7 @@ struct MergeFontDescriptionsData Vector fontDescriptionRuns; ///< The font description runs. TextAbstraction::FontDescription defaultFontDescription; ///< The default font description. TextAbstraction::PointSize26Dot6 defaultPointSize; ///< The default point size. + float fontSizeScale; ///< The font's size scale. unsigned int startIndex; ///< The start index. unsigned int numberOfCharacters; ///< The number of characters. Vector expectedFontIds; ///< The expected font ids. @@ -99,6 +104,7 @@ struct ValidateFontsData std::string text; ///< Input text. std::string defaultFont; ///< The default font. unsigned int defaultFontSize; ///< The default font size. + float fontSizeScale; ///< The font's size scale. unsigned int index; ///< The index of the first character to update the script. unsigned int numberOfCharacters; ///< The numbers of characters to update the script. Vector fontDescriptionRuns; ///< The font description runs. @@ -106,23 +112,6 @@ struct ValidateFontsData }; ////////////////////////////////////////////////////////// -void PrintFontDescription( FontId id ) -{ - TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - - TextAbstraction::FontDescription description; - fontClient.GetDescription( id, description ); - - const TextAbstraction::PointSize26Dot6 pointSize = fontClient.GetPointSize( id ); - - std::cout << std::endl << " font description for font id : " << id << std::endl; - std::cout << " font family : [" << description.family << "]" << std::endl; - std::cout << " font width : [" << TextAbstraction::FontWidth::Name[description.width] << "]" << std::endl; - std::cout << " font weight : [" << TextAbstraction::FontWeight::Name[description.weight] << "]" << std::endl; - std::cout << " font slant : [" << TextAbstraction::FontSlant::Name[description.slant] << "]" << std::endl; - std::cout << " font size : " << pointSize << std::endl; -} - bool MergeFontDescriptionsTest( const MergeFontDescriptionsData& data ) { TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); @@ -140,6 +129,7 @@ bool MergeFontDescriptionsTest( const MergeFontDescriptionsData& data ) MergeFontDescriptions( data.fontDescriptionRuns, data.defaultFontDescription, data.defaultPointSize, + data.fontSizeScale, index, fontDescription, fontPointSize, @@ -195,9 +185,11 @@ bool ScriptsTest( const ScriptsData& data ) Vector utf32; utf32.Resize( data.text.size() ); - const uint32_t numberOfCharacters = Utf8ToUtf32( reinterpret_cast( data.text.c_str() ), - data.text.size(), - &utf32[0u] ); + const uint32_t numberOfCharacters = ( data.text.size() == 0 ) ? 0 : + Utf8ToUtf32( reinterpret_cast( data.text.c_str() ), + data.text.size(), + &utf32[0u] ); + utf32.Resize( numberOfCharacters ); // 2) Set the script info. @@ -255,7 +247,7 @@ bool ScriptsTest( const ScriptsData& data ) if( scriptRun1.script != scriptRun2.script ) { - tet_printf("ScriptsTest FAIL: different script. %s, should be %s\n", TextAbstraction::ScriptName[scriptRun1.script], TextAbstraction::ScriptName[scriptRun2.script] ); + tet_printf("ScriptsTest FAIL: script index: %u, different script. %s, should be %s\n", index, TextAbstraction::ScriptName[scriptRun1.script], TextAbstraction::ScriptName[scriptRun2.script] ); return false; } } @@ -272,7 +264,8 @@ bool ValidateFontTest( const ValidateFontsData& data ) Vector utf32; utf32.Resize( data.text.size() ); - const uint32_t numberOfCharacters = Utf8ToUtf32( reinterpret_cast( data.text.c_str() ), + const uint32_t numberOfCharacters = (data.text.size() == 0 ) ? 0 : + Utf8ToUtf32( reinterpret_cast( data.text.c_str() ), data.text.size(), &utf32[0u] ); utf32.Resize( numberOfCharacters ); @@ -304,6 +297,7 @@ bool ValidateFontTest( const ValidateFontsData& data ) data.fontDescriptionRuns, defaultFontDescription, defaultPointSize, + data.fontSizeScale, 0u, numberOfCharacters, fontRuns ); @@ -321,6 +315,7 @@ bool ValidateFontTest( const ValidateFontsData& data ) data.fontDescriptionRuns, defaultFontDescription, defaultPointSize, + data.fontSizeScale, data.index, data.numberOfCharacters, fontRuns ); @@ -608,6 +603,7 @@ int UtcDaliTextMergeFontDescriptions(void) fontDescriptionRuns01, defaultFontDescription01, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 0u, expectedFontIds01, @@ -618,6 +614,7 @@ int UtcDaliTextMergeFontDescriptions(void) fontDescriptionRuns02, defaultFontDescription02, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 2u, expectedFontIds02, @@ -628,6 +625,7 @@ int UtcDaliTextMergeFontDescriptions(void) fontDescriptionRuns03, defaultFontDescription03, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 10u, expectedFontIds03, @@ -976,7 +974,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 0u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1101 = { @@ -984,7 +982,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 3u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1102 = { @@ -1000,7 +998,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 25u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1104 = { @@ -1008,7 +1006,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 28u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1105 = { @@ -1024,7 +1022,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 46u, 2u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1107 = { @@ -1032,7 +1030,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 48u, 2u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1108 = { @@ -1040,7 +1038,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 50u, 2u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; scriptRuns11.PushBack( scriptRun1100 ); scriptRuns11.PushBack( scriptRun1101 ); @@ -1060,7 +1058,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 0u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1201 = { @@ -1068,7 +1066,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 3u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1202 = { @@ -1076,7 +1074,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 6u, 3u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; ScriptRun scriptRun1203 = { @@ -1084,7 +1082,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 9u, 2u, }, - TextAbstraction::LATIN + TextAbstraction::UNKNOWN }; scriptRuns12.PushBack( scriptRun1200 ); scriptRuns12.PushBack( scriptRun1201 ); @@ -1098,7 +1096,7 @@ int UtcDaliTextMultiLanguageSetScripts(void) 0u, 4u, }, - TextAbstraction::LATIN // An unknown script is transformed to LATIN + TextAbstraction::UNKNOWN }; scriptRuns13.PushBack( scriptRun1301 ); @@ -1320,7 +1318,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) // Load some fonts. fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" ); fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenColorEmoji.ttf", EMOJI_FONT_SIZE ); + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE ); fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf", pointSize01 ); fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf", pointSize02 ); fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf", pointSize01 ); @@ -1328,7 +1326,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) // Font id 1 --> TizenSansArabicRegular.ttf // Font id 2 --> TizenSansHebrewRegular.ttf - // Font id 3 --> TizenColorEmoji.ttf + // Font id 3 --> BreezeColorEmoji.ttf // Font id 4 --> TizenSansRegular.ttf, size 8 // Font id 5 --> TizenSansRegular.ttf, size 16 // Font id 6 --> TizenSansHebrewRegular.ttf, size 8 @@ -1501,8 +1499,8 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) 0u, 4u }, - const_cast( "TizenColorEmoji" ), - 15u, + const_cast( "BreezeColorEmoji" ), + 16u, TextAbstraction::FontWeight::NORMAL, TextAbstraction::FontWidth::NORMAL, TextAbstraction::FontSlant::NORMAL, @@ -1631,6 +1629,126 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) fontDescriptions10.PushBack( fontDescription1003 ); fontDescriptions10.PushBack( fontDescription1004 ); + FontRun fontRun1101 = + { + { + 0u, + 22u + }, + 5u + }; + Vector fontRuns11; + fontRuns11.PushBack( fontRun1101 ); + + FontDescriptionRun fontDescription1101 = + { + { + 0, + 22u + }, + const_cast( "TizenSans" ), + 9u, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, + pointSize02, + true, + false, + false, + false, + true + }; + Vector fontDescriptions11; + fontDescriptions11.PushBack( fontDescription1101 ); + + FontRun fontRun1201 = + { + { + 0u, + 6u + }, + 8u + }; + FontRun fontRun1202 = + { + { + 6u, + 1u + }, + 9u + }; + FontRun fontRun1203 = + { + { + 7u, + 5u + }, + 8u + }; + Vector fontRuns12; + fontRuns12.PushBack( fontRun1201 ); + fontRuns12.PushBack( fontRun1202 ); + fontRuns12.PushBack( fontRun1203 ); + + FontDescriptionRun fontDescription1201 = + { + { + 0u, + 6u + }, + const_cast( "TizenSans" ), + 9u, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, + 0u, + true, + false, + false, + false, + false + }; + FontDescriptionRun fontDescription1202 = + { + { + 6u, + 1u + }, + const_cast( "TizenSans" ), + 9u, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, + 0u, + true, + false, + false, + false, + false + }; + FontDescriptionRun fontDescription1203 = + { + { + 7u, + 5u + }, + const_cast( "TizenSans" ), + 9u, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, + 0u, + true, + false, + false, + false, + false + }; + Vector fontDescriptions12; + fontDescriptions12.PushBack( fontDescription1201 ); + fontDescriptions12.PushBack( fontDescription1202 ); + fontDescriptions12.PushBack( fontDescription1203 ); + const ValidateFontsData data[] = { { @@ -1638,6 +1756,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 0u, fontDescriptions01, @@ -1648,6 +1767,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 11u, fontDescriptions02, @@ -1658,6 +1778,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world\nhello world\ndemo", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 28u, fontDescriptions03, @@ -1668,6 +1789,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world\nhello world\ndemo", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 12u, fontDescriptions03, @@ -1678,6 +1800,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world\nhello world\ndemo", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 12u, 12u, fontDescriptions03, @@ -1688,6 +1811,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world\nhello world\ndemo", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 24u, 4u, fontDescriptions03, @@ -1698,6 +1822,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "שלום עולם", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 9u, fontDescriptions07, @@ -1708,6 +1833,7 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "שלום עולם", "/tizen/TizenSansHebrewRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 9u, fontDescriptions08, @@ -1716,8 +1842,9 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) { "Emojis", "\xF0\x9F\x98\x81\xF0\x9F\x98\x82\xF0\x9F\x98\x83\xF0\x9F\x98\x84", - "/tizen/TizenColorEmoji.ttf", + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE, + 1.0f, 0u, 4u, fontDescriptions09, @@ -1728,13 +1855,36 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) "Hello world, שלום עולם, hello world, שלום עולם", "/tizen/TizenSansRegular.ttf", TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, 0u, 46u, fontDescriptions10, fontRuns10 }, + { + "Unknown script -> changed to LATIN", + "WRC – The Official App", + "/tizen/TizenSansRegular.ttf", + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, + 0u, + 22u, + fontDescriptions11, + fontRuns11 + }, + { + "Common script.", + "Hello \tworld", + "/tizen/TizenSansRegular.ttf", + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + 1.0f, + 0u, + 12u, + fontDescriptions12, + fontRuns12 + }, }; - const unsigned int numberOfTests = 10u; + const unsigned int numberOfTests = 12u; for( unsigned int index = 0u; index < numberOfTests; ++index ) { @@ -1747,3 +1897,22 @@ int UtcDaliTextMultiLanguageValidateFonts01(void) tet_result(TET_PASS); END_TEST; } + +int UtcDaliTextMultiLanguageLocaleChange(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextMultiLanguageLocaleChange"); + + Adaptor &adaptor = application.GetAdaptor(); + MultilanguageSupport multilanguageSupport = MultilanguageSupport::Get(); + + std::string newLocale = "multi_TEST"; + adaptor.LocaleChangedSignal().Emit(newLocale); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(newLocale.data(), GetImplementation(multilanguageSupport).GetLocale(), TEST_LOCATION); + + END_TEST; +} \ No newline at end of file