Improved pan gesture prediction
[platform/core/uifw/dali-core.git] / automated-tests / src / dali-unmanaged / dali-test-suite-utils / test-platform-abstraction.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include "test-platform-abstraction.h"
19 #include "dali-test-suite-utils.h"
20 #include <dali/integration-api/bitmap.h>
21
22 namespace Dali
23 {
24
25 /**
26  * Constructor
27  */
28 TestPlatformAbstraction::TestPlatformAbstraction()
29 : mRequest(0),
30   mDynamicsFactory(NULL)
31 {
32   Initialize();
33 }
34
35 /**
36  * Destructor
37  */
38 TestPlatformAbstraction::~TestPlatformAbstraction()
39 {
40   delete mDynamicsFactory;
41 }
42
43 /**
44  * @copydoc PlatformAbstraction::GetTimeMicroseconds()
45  */
46 void TestPlatformAbstraction::GetTimeMicroseconds(unsigned int &seconds, unsigned int &microSeconds)
47 {
48   seconds = mSeconds;
49   microSeconds = mMicroSeconds;
50   mTrace.PushCall("GetTimeMicroseconds", "");
51 }
52
53 /**
54  * @copydoc PlatformAbstraction::Suspend()
55  */
56 void TestPlatformAbstraction::Suspend()
57 {
58   mTrace.PushCall("Suspend", "");
59 }
60
61 /**
62  * @copydoc PlatformAbstraction::Resume()
63  */
64 void TestPlatformAbstraction::Resume()
65 {
66   mTrace.PushCall("Resume", "");
67 }
68
69 void TestPlatformAbstraction::GetClosestImageSize( const std::string& filename,
70                                                    const ImageAttributes& attributes,
71                                                    Vector2& closestSize)
72 {
73   closestSize = mClosestSize;
74   mTrace.PushCall("GetClosestImageSize", "");
75 }
76
77 void TestPlatformAbstraction::GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
78                                                    const ImageAttributes& attributes,
79                                                    Vector2& closestSize)
80 {
81   closestSize = mClosestSize;
82   mTrace.PushCall("GetClosestImageSize", "");
83 }
84
85
86 /**
87  * @copydoc PlatformAbstraction::LoadResource()
88  */
89 void TestPlatformAbstraction::LoadResource(const Integration::ResourceRequest& request)
90 {
91   mTrace.PushCall("LoadResource", "");
92   if(mRequest != NULL)
93   {
94     delete mRequest;
95     tet_infoline ("Warning: multiple resource requests not handled by Test Suite. You may see unexpected errors");
96   }
97   mRequest = new Integration::ResourceRequest(request);
98 }
99
100 Integration::ResourcePointer TestPlatformAbstraction::LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath)
101 {
102   mTrace.PushCall("LoadResourceSynchronously", "");
103   return mResources.loadedResource;
104 }
105
106 /**
107  * @copydoc PlatformAbstraction::SaveResource()
108  */
109 void TestPlatformAbstraction::SaveResource(const Integration::ResourceRequest& request)
110 {
111   mTrace.PushCall("SaveResource", "");
112   if(mRequest != NULL)
113   {
114     delete mRequest;
115     tet_infoline ("Warning: multiple resource requests not handled by Test Suite. You may see unexpected errors");
116   }
117   mRequest = new Integration::ResourceRequest(request);
118 }
119
120 /**
121  * @copydoc PlatformAbstraction::CancelLoad()
122  */
123 void TestPlatformAbstraction::CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId)
124 {
125   mTrace.PushCall("CancelLoad", "");
126 }
127
128 /**
129  * @copydoc PlatformAbstraction::GetResources()
130  */
131 void TestPlatformAbstraction::GetResources(Integration::ResourceCache& cache)
132 {
133   mTrace.PushCall("GetResources", "");
134
135   if(mResources.loaded)
136   {
137     cache.LoadResponse( mResources.loadedId, mResources.loadedType, mResources.loadedResource, Integration::RESOURCE_COMPLETELY_LOADED );
138   }
139   if(mResources.loadFailed)
140   {
141     cache.LoadFailed( mResources.loadFailedId, mResources.loadFailure );
142   }
143   if(mResources.saved)
144   {
145     cache.SaveComplete( mResources.savedId, mResources.savedType );
146   }
147   if(mResources.saveFailed)
148   {
149     cache.SaveFailed( mResources.saveFailedId, mResources.saveFailure );
150   }
151 }
152
153 /**
154  * @copydoc PlatformAbstraction::IsLoading()
155  */
156 bool TestPlatformAbstraction::IsLoading()
157 {
158   mTrace.PushCall("IsLoading", "");
159   return mIsLoadingResult;
160 }
161
162 /**
163  * @copydoc PlatformAbstraction::GetDefaultFontFamily()
164  */
165 const std::string& TestPlatformAbstraction::GetDefaultFontFamily() const
166 {
167   mTrace.PushCall("GetDefaultFontFamily", "");
168   return mGetDefaultFontFamilyResult;
169 }
170
171 /**
172  * @copydoc PlatformAbstraction::GetDefaultFontSize()
173  */
174 float TestPlatformAbstraction::GetDefaultFontSize() const
175 {
176   mTrace.PushCall("GetDefaultFontSize", "");
177   return mGetDefaultFontSizeResult;
178 }
179
180 PixelSize TestPlatformAbstraction::GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const
181 {
182   mTrace.PushCall("GetFontLineHeightFromCapsHeight", "");
183   // LineHeight will be bigger than CapsHeight, so return capsHeight + 1
184   return PixelSize(capsHeight + 1);
185 }
186
187 /**
188  * @copydoc PlatformAbstraction::GetGlyphData()
189  */
190
191 Integration::GlyphSet* TestPlatformAbstraction::GetGlyphData ( const Integration::TextResourceType& textRequest,
192                                                                const std::string& fontFamily,
193                                                                bool getBitmap) const
194 {
195   if( getBitmap )
196   {
197     mTrace.PushCall("GetGlyphData", "getBitmap:true");
198   }
199   else
200   {
201     mTrace.PushCall("GetGlyphData", "getBitmap:false");
202   }
203
204   // It creates fake metrics for the received characters.
205
206   Integration::GlyphSet* set = new Dali::Integration::GlyphSet();
207   Integration::BitmapPtr bitmapData;
208
209   std::set<uint32_t> characters;
210
211   for( Integration::TextResourceType::CharacterList::const_iterator it = textRequest.mCharacterList.begin(), endIt = textRequest.mCharacterList.end(); it != endIt; ++it )
212   {
213     if( characters.find( it->character ) == characters.end() )
214     {
215       characters.insert( it->character );
216       Integration::GlyphMetrics character = {it->character, Integration::GlyphMetrics::LOW_QUALITY,  10.0f,  10.0f, 9.0f, 1.0f, 10.0f, it->xPosition, it->yPosition };
217
218       if( getBitmap )
219       {
220         bitmapData = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::DISCARD);
221         bitmapData->GetPackedPixelsProfile()->ReserveBuffer(Pixel::A8, 64, 64);
222         PixelBuffer* pixelBuffer = bitmapData->GetBuffer();
223         memset( pixelBuffer, it->character, 64*64 );
224       }
225
226       set->AddCharacter(bitmapData, character);
227     }
228   }
229
230   set->mLineHeight = 10.0f;
231   set->mAscender = 9.0f;
232   set->mUnitsPerEM = 2048.0f/64.0f;
233   set->SetAtlasResourceId( textRequest.mTextureAtlasId );
234   set->mFontHash = textRequest.mFontHash;
235
236   return set;
237 }
238
239 /**
240  * @copydoc PlatformAbstraction::GetCachedGlyphData()
241  */
242
243 Integration::GlyphSet* TestPlatformAbstraction::GetCachedGlyphData( const Integration::TextResourceType& textRequest,
244                                                                     const std::string& fontFamily ) const
245 {
246   mTrace.PushCall("GetCachedGlyphData", "");
247
248   // It creates fake metrics and bitmap for received numeric characters '0' through '9'.
249   Integration::GlyphSet* set = new Dali::Integration::GlyphSet();
250   Integration::BitmapPtr bitmapData;
251
252   std::set<uint32_t> characters;
253
254   for( Integration::TextResourceType::CharacterList::const_iterator it = textRequest.mCharacterList.begin(), endIt = textRequest.mCharacterList.end(); it != endIt; ++it )
255   {
256     if( it->character >= '0' && it->character <= '9' && characters.find( it->character ) == characters.end() )
257     {
258       characters.insert( it->character );
259       Integration::GlyphMetrics character = {it->character, Integration::GlyphMetrics::HIGH_QUALITY,  10.0f,  10.0f, 9.0f, 1.0f, 10.0f, it->xPosition, it->yPosition };
260
261       bitmapData = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::DISCARD);
262       bitmapData->GetPackedPixelsProfile()->ReserveBuffer(Pixel::A8, 64, 64);
263       PixelBuffer* pixelBuffer = bitmapData->GetBuffer();
264       memset( pixelBuffer, it->character, 64*64 );
265       set->AddCharacter(bitmapData, character);
266     }
267   }
268
269   set->mLineHeight = 10.0f;
270   set->mAscender = 9.0f;
271   set->mUnitsPerEM = 2048.0f/64.0f;
272   set->SetAtlasResourceId( textRequest.mTextureAtlasId );
273   set->mFontHash = textRequest.mFontHash;
274
275   return set;
276 }
277
278
279 /**
280  * @copydoc PlatformAbstraction::GetGlobalMetrics()
281  */
282 void TestPlatformAbstraction::GetGlobalMetrics( const std::string& fontFamily,
283                                                 const std::string& fontStyle,
284                                                 Integration::GlobalMetrics& globalMetrics ) const
285 {
286   globalMetrics.lineHeight = 10.0f;
287   globalMetrics.ascender = 9.0f;
288   globalMetrics.unitsPerEM = 2048.0f/64.0f;
289   globalMetrics.underlineThickness = 2.f;
290   globalMetrics.underlinePosition = 1.f;
291 }
292
293 /**
294  * @copydoc PlatformAbstraction::GetFontPath()
295  */
296 std::string TestPlatformAbstraction::GetFontPath(const std::string& family, bool bold, bool italic) const
297 {
298   mTrace.PushCall("GetFontPath", "");
299   return mGetFontPathResult;
300
301   // Do nothing with arguments
302 }
303
304 /**
305  * @copydoc PlatformAbstraction::SetDpi()
306  */
307 void TestPlatformAbstraction::SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical)
308 {
309   mTrace.PushCall("SetDpi", "");
310 }
311
312 /**
313  * @copydoc PlatformAbstraction::GetFontFamilyForChars()
314  */
315 const std::string& TestPlatformAbstraction::GetFontFamilyForChars(const Integration::TextArray& charsRequested) const
316 {
317   mTrace.PushCall("GetFontFamilyForChars", "");
318   return mGetDefaultFontFamilyResult;
319 }
320
321 /**
322  * @copydoc PlatformAbstraction::AllGlyphsSupported()
323  */
324 bool TestPlatformAbstraction::AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const
325 {
326   mTrace.PushCall("AllGlyphsSupported", "");
327   return true;
328 }
329
330 /**
331  * @copydoc PlatformAbstraction::ValidateFontFamilyName()
332  */
333 bool TestPlatformAbstraction::ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const
334 {
335   mTrace.PushCall("ValidateFontFamilyName", "");
336   return true;
337 }
338
339 /**
340  * @copydoc PlatformAbstraction::GetFontList()
341  */
342 void TestPlatformAbstraction::GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const
343 {
344   mFontListMode = mode;
345   mTrace.PushCall("ValidateGetFontList", "");
346 }
347
348 /**
349  * @copydoc PlatformAbstraction::LoadFile()
350  */
351 bool TestPlatformAbstraction::LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const
352 {
353   mTrace.PushCall("LoadFile", "");
354   if( mLoadFileResult.loadResult )
355   {
356     buffer = mLoadFileResult.buffer;
357   }
358
359   return mLoadFileResult.loadResult;
360 }
361
362 /**
363  * @copydoc PlatformAbstraction::SaveFile()
364  */
365 bool TestPlatformAbstraction::SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const
366 {
367   mTrace.PushCall("SaveFile", "");
368   return false;
369 }
370
371 void TestPlatformAbstraction::JoinLoaderThreads()
372 {
373   mTrace.PushCall("JoinLoaderThreads", "");
374 }
375
376 void TestPlatformAbstraction::UpdateDefaultsFromDevice()
377 {
378   mTrace.PushCall("UpdateDefaultsFromDevice", "");
379   mGetDefaultFontFamilyResult+=1.0f;
380 }
381
382 Integration::DynamicsFactory* TestPlatformAbstraction::GetDynamicsFactory()
383 {
384   mTrace.PushCall("GetDynamicsFactory", "");
385   if( mDynamicsFactory == NULL )
386   {
387     mDynamicsFactory = new TestDynamicsFactory( mTrace );
388   }
389   return mDynamicsFactory;
390 }
391
392 bool TestPlatformAbstraction::ReadGlobalMetricsFromCache( const std::string& fontFamily,
393                                                           const std::string& fontStyle,
394                                                           Integration::GlobalMetrics& globalMetrics )
395 {
396   mTrace.PushCall("ReadGlobalMetricsFromCacheFile", "");
397   globalMetrics = mReadGlobalMetrics; // Want to copy contents...
398   return mReadGlobalMetricsResult; // Default false (will be set to true on subsequent write)
399 }
400
401 void TestPlatformAbstraction::WriteGlobalMetricsToCache( const std::string& fontFamily,
402                                                          const std::string& fontStyle,
403                                                          const Integration::GlobalMetrics& globalMetrics )
404 {
405   // Copy so next read uses written values. TODO: Could add method
406   // to turn this behaviour off for more extensive testing.
407   mReadGlobalMetrics = globalMetrics;
408   mReadGlobalMetricsResult = true;
409
410   mTrace.PushCall("WriteGlobalMetricsToCacheFile", "");
411 }
412
413 bool TestPlatformAbstraction::ReadMetricsFromCache( const std::string& fontFamily,
414                                                     const std::string& fontStyle,
415                                                     std::vector<Integration::GlyphMetrics>& glyphMetricsContainer )
416 {
417   mTrace.PushCall("ReadMetricsFromCacheFile", "");
418   glyphMetricsContainer = mReadMetrics;
419   return mReadMetricsResult; // Default false (will be set to true on subsequent write)
420 }
421
422 void TestPlatformAbstraction::WriteMetricsToCache( const std::string& fontFamily,
423                                                    const std::string& fontStyle,
424                                                    const Integration::GlyphSet& glyphSet )
425 {
426   // Copy so next read uses written values. TODO: Could add method
427   // to turn this behaviour off for more extensive testing.
428   const Integration::GlyphSet::CharacterList& charList =  glyphSet.GetCharacterList();
429   mReadMetrics.clear();
430   for(std::size_t i=0, end=charList.size(); i<end; ++i)
431   {
432     mReadMetrics.push_back(charList[i].second);
433   }
434   mReadMetricsResult = true;
435
436   mTrace.PushCall("WriteMetricsToCacheFile", "");
437 }
438
439 void TestPlatformAbstraction::GetFileNamesFromDirectory( const std::string& directoryName,
440                                                          std::vector<std::string>& fileNames )
441 {
442   fileNames.push_back( std::string( "u1f004.png" ) );
443   fileNames.push_back( std::string( "u1f0cf.png" ) );
444   fileNames.push_back( std::string( "u1f170.png" ) );
445   fileNames.push_back( std::string( "u1f601.png" ) );
446 }
447
448 Integration::BitmapPtr TestPlatformAbstraction::GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const
449 {
450   Integration::BitmapPtr image = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::DISCARD );
451   image->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, 1, 1 );
452
453   mTrace.PushCall("GetGlyphImage", "");
454
455   return image;
456 }
457
458 /** Call this every test */
459 void TestPlatformAbstraction::Initialize()
460 {
461   mTrace.Reset();
462   mTrace.Enable(true);
463   memset(&mResources, 0, sizeof(Resources));
464   memset(&mReadGlobalMetrics, 0, sizeof(Integration::GlobalMetrics));
465   mSeconds=0;
466   mMicroSeconds=0;
467   mIsLoadingResult=false;
468   mGetDefaultFontFamilyResult = "HelveticaNeue";
469   mGetDefaultFontSizeResult=12.0f;
470   mGetFontPathResult="helvetica-12";
471   mReadMetricsResult=false;
472   mReadGlobalMetricsResult=false;
473
474   if(mRequest)
475   {
476     delete mRequest;
477     mRequest = 0;
478   }
479 }
480
481
482 bool TestPlatformAbstraction::WasCalled(TestFuncEnum func)
483 {
484   switch(func)
485   {
486     case GetTimeMicrosecondsFunc:             return mTrace.FindMethod("GetTimeMicroseconds");
487     case SuspendFunc:                         return mTrace.FindMethod("Suspend");
488     case ResumeFunc:                          return mTrace.FindMethod("Resume");
489     case LoadResourceFunc:                    return mTrace.FindMethod("LoadResource");
490     case SaveResourceFunc:                    return mTrace.FindMethod("SaveResource");
491     case LoadFileFunc:                        return mTrace.FindMethod("LoadFile");
492     case SaveFileFunc:                        return mTrace.FindMethod("SaveFile");
493     case CancelLoadFunc:                      return mTrace.FindMethod("CancelLoad");
494     case GetResourcesFunc:                    return mTrace.FindMethod("GetResources");
495     case IsLoadingFunc:                       return mTrace.FindMethod("IsLoading");
496     case GetDefaultFontFamilyFunc:            return mTrace.FindMethod("GetDefaultFontFamily");
497     case GetDefaultFontSizeFunc:              return mTrace.FindMethod("GetDefaultFontSize");
498     case GetFontLineHeightFromCapsHeightFunc: return mTrace.FindMethod("GetFontLineHeightFromCapsHeight");
499     case GetGlyphDataFunc:                    return mTrace.FindMethod("GetGlyphData");
500     case GetCachedGlyphDataFunc:              return mTrace.FindMethod("GetCachedGlyphData");
501     case GetFontPathFunc:                     return mTrace.FindMethod("GetFontPath");
502     case SetDpiFunc:                          return mTrace.FindMethod("SetDpi");
503     case JoinLoaderThreadsFunc:               return mTrace.FindMethod("JoinLoaderThreads");
504     case GetFontFamilyForCharsFunc:           return mTrace.FindMethod("GetFontFamilyForChars");
505     case AllGlyphsSupportedFunc:              return mTrace.FindMethod("AllGlyphsSupported");
506     case ValidateFontFamilyNameFunc:          return mTrace.FindMethod("ValidateFontFamilyName");
507     case UpdateDefaultsFromDeviceFunc:        return mTrace.FindMethod("UpdateDefaultsFromDevice");
508     case GetDynamicsFactoryFunc:              return mTrace.FindMethod("GetDynamicsFactory");
509     case ValidateGetFontListFunc:             return mTrace.FindMethod("ValidateGetFontList");
510     case ReadGlobalMetricsFromCacheFileFunc:  return mTrace.FindMethod("ReadGlobalMetricsFromCacheFile");
511     case WriteGlobalMetricsToCacheFileFunc:   return mTrace.FindMethod("WriteGlobalMetricsToCacheFile");
512     case ReadMetricsFromCacheFileFunc:        return mTrace.FindMethod("ReadMetricsFromCacheFile");
513     case WriteMetricsToCacheFileFunc:         return mTrace.FindMethod("WriteMetricsToCacheFile");
514   }
515   return false;
516 }
517
518 void TestPlatformAbstraction::SetGetTimeMicrosecondsResult(size_t sec, size_t usec)
519 {
520   mSeconds = sec;
521   mMicroSeconds = usec;
522 }
523
524 void TestPlatformAbstraction::IncrementGetTimeResult(size_t milliseconds)
525 {
526   mMicroSeconds += milliseconds * 1000u;
527   unsigned int additionalSeconds = mMicroSeconds / 1000000u;
528
529   mSeconds += additionalSeconds;
530   mMicroSeconds -= additionalSeconds * 1000000u;
531 }
532
533 void TestPlatformAbstraction::SetIsLoadingResult(bool result)
534 {
535   mIsLoadingResult = result;
536 }
537
538 void TestPlatformAbstraction::SetGetDefaultFontFamilyResult(std::string result)
539 {
540   mGetDefaultFontFamilyResult = result;
541 }
542
543 void TestPlatformAbstraction::SetGetDefaultFontSizeResult(float result)
544 {
545   mGetDefaultFontSizeResult = result;
546 }
547
548 void TestPlatformAbstraction::SetGetFontPathResult(std::string& result)
549 {
550   mGetFontPathResult = result;
551 }
552
553 void TestPlatformAbstraction::ClearReadyResources()
554 {
555   memset(&mResources, 0, sizeof(Resources));
556 }
557
558 void TestPlatformAbstraction::SetResourceLoaded(Integration::ResourceId  loadedId,
559                                                 Integration::ResourceTypeId  loadedType,
560                                                 Integration::ResourcePointer loadedResource)
561 {
562   mResources.loaded = true;
563   mResources.loadedId = loadedId;
564   mResources.loadedType = loadedType;
565   mResources.loadedResource = loadedResource;
566 }
567
568 void TestPlatformAbstraction::SetResourceLoadFailed(Integration::ResourceId  id,
569                                                     Integration::ResourceFailure failure)
570 {
571   mResources.loadFailed = true;
572   mResources.loadFailedId = id;
573   mResources.loadFailure = failure;
574 }
575
576 void TestPlatformAbstraction::SetResourceSaved(Integration::ResourceId      savedId,
577                                                Integration::ResourceTypeId  savedType)
578 {
579   mResources.saved = true;
580   mResources.savedId = savedId;
581   mResources.savedType = savedType;
582 }
583
584 void TestPlatformAbstraction::SetResourceSaveFailed(Integration::ResourceId  id,
585                                                     Integration::ResourceFailure failure)
586 {
587   mResources.saveFailed = true;
588   mResources.saveFailedId = id;
589   mResources.saveFailure = failure;
590 }
591
592 Integration::ResourceRequest* TestPlatformAbstraction::GetRequest()
593 {
594   return mRequest;
595 }
596
597 void TestPlatformAbstraction::DiscardRequest()
598 {
599   delete mRequest;
600   mRequest = NULL;
601 }
602
603 void TestPlatformAbstraction::SetClosestImageSize(const Vector2& size)
604 {
605   mClosestSize = size;
606 }
607
608 void TestPlatformAbstraction::SetLoadFileResult( bool result, std::vector< unsigned char >& buffer )
609 {
610   mLoadFileResult.loadResult = result;
611   if( result )
612   {
613     mLoadFileResult.buffer = buffer;
614   }
615 }
616
617 void TestPlatformAbstraction::SetSaveFileResult( bool result )
618 {
619   mSaveFileResult = result;
620 }
621
622 Integration::PlatformAbstraction::FontListMode TestPlatformAbstraction::GetLastFontListMode( )
623 {
624   return mFontListMode;
625 }
626
627 void TestPlatformAbstraction::SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics )
628 {
629   mReadGlobalMetricsResult = success;
630   mReadGlobalMetrics = globalMetrics;
631 }
632
633 void TestPlatformAbstraction::SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer )
634 {
635   mReadMetricsResult = success;
636   mReadMetrics = glyphMetricsContainer; // copy
637 }
638
639 } // namespace Dali