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