5c70e97fcd737c2fc1350c3f2232572f4eef48e8
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-platform-abstraction.h
1 #ifndef __DALI_TEST_PLATFORM_ABSTRACTION_H__
2 #define __DALI_TEST_PLATFORM_ABSTRACTION_H__
3
4 //
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
6 //
7 // Licensed under the Flora License, Version 1.0 (the License);
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //     http://floralicense.org/license/
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an AS IS BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19
20 // EXTERNAL INCLUDES
21 #include <set>
22 #include <stdint.h>
23 #include <cstring>
24
25 // INTERNAL INCLUDES
26 #include <dali/integration-api/platform-abstraction.h>
27
28 #include <dali/integration-api/glyph-set.h>
29 #include "test-trace-call-stack.h"
30
31
32 namespace Dali
33 {
34
35 /**
36  * Concrete implementation of the platform abstraction class.
37  */
38 class DALI_IMPORT_API TestPlatformAbstraction : public Dali::Integration::PlatformAbstraction
39 {
40
41 public:
42
43   struct Resources
44   {
45     bool                         loaded;
46     Integration::ResourceId      loadedId;
47     Integration::ResourceTypeId  loadedType;
48     Integration::ResourcePointer loadedResource;
49
50     bool                         loadFailed;
51     Integration::ResourceId      loadFailedId;
52     Integration::ResourceFailure loadFailure;
53
54     bool                         saved;
55     Integration::ResourceId      savedId;
56     Integration::ResourceTypeId  savedType;
57
58     bool                         saveFailed;
59     Integration::ResourceId      saveFailedId;
60     Integration::ResourceFailure saveFailure;
61   };
62
63   struct LoadFileResult
64   {
65     inline LoadFileResult()
66     : loadResult(false)
67     {
68
69     }
70
71     bool loadResult;
72     std::vector< unsigned char> buffer;
73   };
74
75   /**
76    * Constructor
77    */
78   TestPlatformAbstraction();
79
80   /**
81    * Destructor
82    */
83   virtual ~TestPlatformAbstraction();
84
85   /**
86    * @copydoc PlatformAbstraction::GetTimeMicroseconds()
87    */
88   virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int &microSeconds);
89
90   /**
91    * @copydoc PlatformAbstraction::Suspend()
92    */
93   virtual void Suspend();
94
95   /**
96    * @copydoc PlatformAbstraction::Resume()
97    */
98   virtual void Resume();
99
100   virtual void GetClosestImageSize( const std::string& filename,
101                                     const ImageAttributes& attributes,
102                                     Vector2& closestSize);
103
104   virtual void GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
105                                     const ImageAttributes& attributes,
106                                     Vector2& closestSize);
107
108   /**
109    * @copydoc PlatformAbstraction::LoadResource()
110    */
111   virtual void LoadResource(const Integration::ResourceRequest& request);
112
113   /**
114    * @copydoc PlatformAbstraction::LoadResourceSynchronously()
115    */
116   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
117
118   /**
119    * @copydoc PlatformAbstraction::SaveResource()
120    */
121   virtual void SaveResource(const Integration::ResourceRequest& request);
122
123   /**
124    * @copydoc PlatformAbstraction::CancelLoad()
125    */
126   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
127
128   /**
129    * @copydoc PlatformAbstraction::GetResources()
130    */
131   virtual void GetResources(Integration::ResourceCache& cache);
132
133   /**
134    * @copydoc PlatformAbstraction::IsLoading()
135    */
136   virtual bool IsLoading();
137
138   /**
139    * @copydoc PlatformAbstraction::GetDefaultFontFamily()
140    */
141   virtual std::string GetDefaultFontFamily() const;
142
143   /**
144    * @copydoc PlatformAbstraction::GetDefaultFontSize()
145    */
146   virtual const float GetDefaultFontSize() const;
147
148   virtual const Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const CapsHeight& capsHeight) const;
149
150   /**
151    * @copydoc PlatformAbstraction::GetGlyphData()
152    */
153   virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
154                                                 const std::string& fontFamily,
155                                                 bool getImageData ) const;
156
157   /**
158    * @copydoc PlatformAbstraction::GetCachedGlyphData()
159    */
160   virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
161                                                      const std::string& fontFamily ) const;
162
163
164   /**
165    * @copydoc PlatformAbstraction::GetGlobalMetrics()
166    */
167   virtual void GetGlobalMetrics( const std::string& fontFamily,
168                                  const std::string& fontStyle,
169                                  Integration::GlobalMetrics& globalMetrics ) const;
170
171   /**
172    * @copydoc PlatformAbstraction::GetFontPath()
173    */
174   virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
175
176   /**
177    * @copydoc PlatformAbstraction::SetDpi()
178    */
179   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
180
181   /**
182    * @copydoc PlatformAbstraction::GetFontFamilyForChars()
183    */
184   virtual std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
185
186   /**
187    * @copydoc PlatformAbstraction::AllGlyphsSupported()
188    */
189   virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const TextArray& text) const;
190
191   /**
192    * @copydoc PlatformAbstraction::ValidateFontFamilyName()
193    */
194   virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
195
196   /**
197    * @copydoc PlatformAbstraction::GetFontList()
198    */
199   virtual std::vector<std::string> GetFontList( PlatformAbstraction::FontListMode mode ) const;
200
201   /**
202    * @copydoc PlatformAbstraction::LoadFile()
203    */
204   virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
205
206   /**
207    * @copydoc PlatformAbstraction::SaveFile()
208    */
209   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
210
211   virtual void JoinLoaderThreads();
212
213   virtual void UpdateDefaultsFromDevice();
214
215   virtual Integration::DynamicsFactory* GetDynamicsFactory();
216
217   virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
218                                            const std::string& fontStyle,
219                                            Integration::GlobalMetrics& globalMetrics );
220
221   virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
222                                           const std::string& fontStyle,
223                                           const Integration::GlobalMetrics& globalMetrics );
224
225   virtual bool ReadMetricsFromCache( const std::string& fontFamily,
226                                      const std::string& fontStyle,
227                                      std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
228   virtual void WriteMetricsToCache( const std::string& fontFamily,
229                                     const std::string& fontStyle,
230                                     const Integration::GlyphSet& glyphSet );
231
232
233   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
234                                           std::vector<std::string>& fileNames );
235
236   virtual Integration::ImageDataPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
237
238 public: // TEST FUNCTIONS
239
240   // Enumeration of Platform Abstraction methods
241   typedef enum
242   {
243     GetTimeMicrosecondsFunc,
244     SuspendFunc,
245     ResumeFunc,
246     LoadResourceFunc,
247     SaveResourceFunc,
248     SaveFileFunc,
249     LoadFileFunc,
250     CancelLoadFunc,
251     GetResourcesFunc,
252     IsLoadingFunc,
253     GetDefaultFontFamilyFunc,
254     GetDefaultFontSizeFunc,
255     GetFontLineHeightFromCapsHeightFunc,
256     GetGlyphDataFunc,
257     GetCachedGlyphDataFunc,
258     SetDpiFunc,
259     GetFontPathFunc,
260     JoinLoaderThreadsFunc,
261     GetFontFamilyForCharsFunc,
262     AllGlyphsSupportedFunc,
263     ValidateFontFamilyNameFunc,
264     UpdateDefaultsFromDeviceFunc,
265     GetDynamicsFactoryFunc,
266     ValidateGetFontListFunc,
267     ReadGlobalMetricsFromCacheFileFunc,
268     WriteGlobalMetricsToCacheFileFunc,
269     ReadMetricsFromCacheFileFunc,
270     WriteMetricsToCacheFileFunc,
271   } TestFuncEnum;
272
273   /** Call this every test */
274   void Initialize();
275
276   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
277   inline void ResetTrace() { mTrace.Reset(); }
278   inline TraceCallStack& GetTrace() { return mTrace; }
279
280   bool WasCalled(TestFuncEnum func);
281
282   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
283
284   void IncrementGetTimeResult(size_t milliseconds);
285
286   void SetIsLoadingResult(bool result);
287
288   void SetGetDefaultFontFamilyResult(std::string result);
289
290   void SetGetDefaultFontSizeResult(float result);
291
292   void SetGetFontPathResult(std::string& result);
293
294   void ClearReadyResources();
295
296   void SetResourceLoaded(Integration::ResourceId  loadedId,
297                          Integration::ResourceTypeId  loadedType,
298                          Integration::ResourcePointer loadedResource);
299
300   void SetResourceLoadFailed(Integration::ResourceId  id,
301                              Integration::ResourceFailure failure);
302
303   void SetResourceSaved(Integration::ResourceId      savedId,
304                         Integration::ResourceTypeId  savedType);
305
306   void SetResourceSaveFailed(Integration::ResourceId  id,
307                              Integration::ResourceFailure failure);
308
309   Integration::ResourceRequest* GetRequest();
310
311   void DiscardRequest();
312
313   void SetClosestImageSize(const Vector2& size);
314
315   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
316
317   void SetSaveFileResult( bool result );
318
319   PlatformAbstraction::FontListMode GetLastFontListMode( );
320
321   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
322
323   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
324
325
326 private:
327   mutable TraceCallStack        mTrace;
328   size_t                        mSeconds;
329   size_t                        mMicroSeconds;
330   bool                          mIsLoadingResult;
331   std::string                   mGetDefaultFontFamilyResult;
332   float                         mGetDefaultFontSizeResult;
333   std::string                   mGetFontPathResult;
334   Resources                     mResources;
335   Integration::ResourceRequest* mRequest;
336   Vector2                       mSize;
337   Vector2                       mClosestSize;
338   bool                          mReadGlobalMetricsResult;
339   bool                          mReadMetricsResult;
340   Integration::GlobalMetrics mReadGlobalMetrics;
341   std::vector<Integration::GlyphMetrics> mReadMetrics;
342
343   LoadFileResult                mLoadFileResult;
344   bool                          mSaveFileResult;
345   mutable FontListMode          mFontListMode;
346 };
347
348 } // Dali
349
350 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */