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