Fix access out of bounds in the text's multi-language support.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Text-MultiLanguage.cpp
index 3be899f..c3f0b9b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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.
@@ -69,7 +69,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
@@ -106,23 +106,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();
@@ -1320,7 +1303,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 +1311,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 +1484,8 @@ int UtcDaliTextMultiLanguageValidateFonts01(void)
       0u,
       4u
     },
-    const_cast<char*>( "TizenColorEmoji" ),
-    15u,
+    const_cast<char*>( "BreezeColorEmoji" ),
+    16u,
     TextAbstraction::FontWeight::NORMAL,
     TextAbstraction::FontWidth::NORMAL,
     TextAbstraction::FontSlant::NORMAL,
@@ -1631,6 +1614,38 @@ int UtcDaliTextMultiLanguageValidateFonts01(void)
   fontDescriptions10.PushBack( fontDescription1003 );
   fontDescriptions10.PushBack( fontDescription1004 );
 
+  FontRun fontRun1101 =
+  {
+    {
+      0u,
+      22u
+    },
+    5u
+  };
+  Vector<FontRun> fontRuns11;
+  fontRuns11.PushBack( fontRun1101 );
+
+  FontDescriptionRun fontDescription1101 =
+  {
+    {
+      0,
+      22u
+    },
+    const_cast<char*>( "TizenSans" ),
+    9u,
+    TextAbstraction::FontWeight::NORMAL,
+    TextAbstraction::FontWidth::NORMAL,
+    TextAbstraction::FontSlant::NORMAL,
+    pointSize02,
+    true,
+    false,
+    false,
+    false,
+    true
+  };
+  Vector<FontDescriptionRun> fontDescriptions11;
+  fontDescriptions11.PushBack( fontDescription1101 );
+
   const ValidateFontsData data[] =
   {
     {
@@ -1716,7 +1731,7 @@ 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,
       0u,
       4u,
@@ -1733,8 +1748,18 @@ int UtcDaliTextMultiLanguageValidateFonts01(void)
       fontDescriptions10,
       fontRuns10
     },
+    {
+      "Unknown script -> changed to LATIN",
+      "WRC – The Official App",
+      "/tizen/TizenSansRegular.ttf",
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      0u,
+      22u,
+      fontDescriptions11,
+      fontRuns11
+    },
   };
-  const unsigned int numberOfTests = 10u;
+  const unsigned int numberOfTests = 11u;
 
   for( unsigned int index = 0u; index < numberOfTests; ++index )
   {