[dali_1.0.33] Merge branch 'tizen'
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / 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
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   /**
115    * @copydoc PlatformAbstraction::LoadResourceSynchronously()
116    */
117   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
118
119   /**
120    * @copydoc PlatformAbstraction::SaveResource()
121    */
122   virtual void SaveResource(const Integration::ResourceRequest& request);
123
124   /**
125    * @copydoc PlatformAbstraction::CancelLoad()
126    */
127   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
128
129   /**
130    * @copydoc PlatformAbstraction::GetResources()
131    */
132   virtual void GetResources(Integration::ResourceCache& cache);
133
134   /**
135    * @copydoc PlatformAbstraction::IsLoading()
136    */
137   virtual bool IsLoading();
138
139   /**
140    * @copydoc PlatformAbstraction::GetDefaultFontFamily()
141    */
142   virtual const std::string& GetDefaultFontFamily() const;
143
144   /**
145    * @copydoc PlatformAbstraction::GetDefaultFontSize()
146    */
147   virtual float GetDefaultFontSize() const;
148
149   /**
150    * @copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
151    */
152   virtual Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const;
153
154   /**
155    * @copydoc PlatformAbstraction::GetGlyphData()
156    */
157   virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
158                                                 const std::string& fontFamily,
159                                                 bool getBitmap) const;
160
161   /**
162    * @copydoc PlatformAbstraction::GetCachedGlyphData()
163    */
164   virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
165                                                      const std::string& fontFamily ) const;
166
167
168   /**
169    * @copydoc PlatformAbstraction::GetGlobalMetrics()
170    */
171   virtual void GetGlobalMetrics( const std::string& fontFamily,
172                                  const std::string& fontStyle,
173                                  Integration::GlobalMetrics& globalMetrics ) const;
174
175   /**
176    * @copydoc PlatformAbstraction::GetFontPath()
177    */
178   virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
179
180   /**
181    * @copydoc PlatformAbstraction::SetDpi()
182    */
183   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
184
185   /**
186    * @copydoc PlatformAbstraction::GetFontFamilyForChars()
187    */
188   virtual const std::string& GetFontFamilyForChars(const Integration::TextArray& charsRequested) const;
189
190   /**
191    * @copydoc PlatformAbstraction::AllGlyphsSupported()
192    */
193   virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const;
194
195   /**
196    * @copydoc PlatformAbstraction::ValidateFontFamilyName()
197    */
198   virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
199
200   /**
201    * @copydoc PlatformAbstraction::GetFontList()
202    */
203   virtual void GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const;
204
205   /**
206    * @copydoc PlatformAbstraction::LoadFile()
207    */
208   virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
209
210   /**
211    * @copydoc PlatformAbstraction::LoadShaderBinFile()
212    */
213   virtual bool LoadShaderBinFile( const std::string& filename, std::vector< unsigned char >& buffer
214 ) const;
215
216   /**
217    * @copydoc PlatformAbstraction::SaveFile()
218    */
219   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
220
221   virtual void JoinLoaderThreads();
222
223   virtual void UpdateDefaultsFromDevice();
224
225   virtual Integration::DynamicsFactory* GetDynamicsFactory();
226
227   virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
228                                            const std::string& fontStyle,
229                                            Integration::GlobalMetrics& globalMetrics );
230
231   virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
232                                           const std::string& fontStyle,
233                                           const Integration::GlobalMetrics& globalMetrics );
234
235   virtual bool ReadMetricsFromCache( const std::string& fontFamily,
236                                      const std::string& fontStyle,
237                                      std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
238   virtual void WriteMetricsToCache( const std::string& fontFamily,
239                                     const std::string& fontStyle,
240                                     const Integration::GlyphSet& glyphSet );
241
242
243   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
244                                           std::vector<std::string>& fileNames );
245
246   virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
247
248 public: // TEST FUNCTIONS
249
250   // Enumeration of Platform Abstraction methods
251   typedef enum
252   {
253     GetTimeMicrosecondsFunc,
254     SuspendFunc,
255     ResumeFunc,
256     LoadResourceFunc,
257     SaveResourceFunc,
258     SaveFileFunc,
259     LoadFileFunc,
260     LoadShaderBinFileFunc,
261     CancelLoadFunc,
262     GetResourcesFunc,
263     IsLoadingFunc,
264     GetDefaultFontFamilyFunc,
265     GetDefaultFontSizeFunc,
266     GetFontLineHeightFromCapsHeightFunc,
267     GetGlyphDataFunc,
268     GetCachedGlyphDataFunc,
269     SetDpiFunc,
270     GetFontPathFunc,
271     JoinLoaderThreadsFunc,
272     GetFontFamilyForCharsFunc,
273     AllGlyphsSupportedFunc,
274     ValidateFontFamilyNameFunc,
275     UpdateDefaultsFromDeviceFunc,
276     GetDynamicsFactoryFunc,
277     ValidateGetFontListFunc,
278     ReadGlobalMetricsFromCacheFileFunc,
279     WriteGlobalMetricsToCacheFileFunc,
280     ReadMetricsFromCacheFileFunc,
281     WriteMetricsToCacheFileFunc,
282   } TestFuncEnum;
283
284   /** Call this every test */
285   void Initialize();
286
287   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
288   inline void ResetTrace() { mTrace.Reset(); }
289   inline TraceCallStack& GetTrace() { return mTrace; }
290
291   bool WasCalled(TestFuncEnum func);
292
293   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
294
295   void IncrementGetTimeResult(size_t milliseconds);
296
297   void SetIsLoadingResult(bool result);
298
299   void SetGetDefaultFontFamilyResult(std::string result);
300
301   void SetGetDefaultFontSizeResult(float result);
302
303   void SetGetFontPathResult(std::string& result);
304
305   void ClearReadyResources();
306
307   void SetResourceLoaded(Integration::ResourceId  loadedId,
308                          Integration::ResourceTypeId  loadedType,
309                          Integration::ResourcePointer loadedResource);
310
311   void SetResourceLoadFailed(Integration::ResourceId  id,
312                              Integration::ResourceFailure failure);
313
314   void SetResourceSaved(Integration::ResourceId      savedId,
315                         Integration::ResourceTypeId  savedType);
316
317   void SetResourceSaveFailed(Integration::ResourceId  id,
318                              Integration::ResourceFailure failure);
319
320   Integration::ResourceRequest* GetRequest();
321
322   void DiscardRequest();
323
324   void SetClosestImageSize(const Vector2& size);
325
326   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
327
328   void SetSaveFileResult( bool result );
329
330   PlatformAbstraction::FontListMode GetLastFontListMode( );
331
332   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
333
334   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
335
336 private:
337   mutable TraceCallStack        mTrace;
338   size_t                        mSeconds;
339   size_t                        mMicroSeconds;
340   bool                          mIsLoadingResult;
341   std::string                   mGetDefaultFontFamilyResult;
342   float                         mGetDefaultFontSizeResult;
343   std::string                   mGetFontPathResult;
344   Resources                     mResources;
345   Integration::ResourceRequest* mRequest;
346   Vector2                       mSize;
347   Vector2                       mClosestSize;
348   bool                          mReadGlobalMetricsResult;
349   bool                          mReadMetricsResult;
350   Integration::GlobalMetrics mReadGlobalMetrics;
351   std::vector<Integration::GlyphMetrics> mReadMetrics;
352
353   LoadFileResult                mLoadFileResult;
354   bool                          mSaveFileResult;
355   mutable FontListMode          mFontListMode;
356 };
357
358 } // Dali
359
360 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */