c35b2c2eaa46b344b20c7d5204d54fb410971ad2
[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 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 #include <dali/public-api/images/image-operations.h>
25
26 // INTERNAL INCLUDES
27 #include <dali/devel-api/common/set-wrapper.h>
28 #include <dali/integration-api/platform-abstraction.h>
29
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     Dali::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   /**
102    * @copydoc PlatformAbstraction::GetClosestImageSize()
103    */
104   virtual ImageDimensions GetClosestImageSize( const std::string& filename,
105                                                  ImageDimensions size,
106                                                  FittingMode::Type fittingMode,
107                                                  SamplingMode::Type samplingMode,
108                                                  bool orientationCorrection );
109
110   /**
111    * @copydoc PlatformAbstraction::GetClosestImageSize()
112    */
113   virtual ImageDimensions GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
114                                                ImageDimensions size,
115                                                FittingMode::Type fittingMode,
116                                                SamplingMode::Type samplingMode,
117                                                bool orientationCorrection );
118
119   /**
120    * @copydoc PlatformAbstraction::LoadResource()
121    */
122   virtual void LoadResource(const Integration::ResourceRequest& request);
123
124   /**
125    * @copydoc PlatformAbstraction::LoadResourceSynchronously()
126    */
127   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
128
129   /**
130    * @copydoc PlatformAbstraction::SaveResource()
131    */
132   virtual void SaveResource(const Integration::ResourceRequest& request);
133
134   /**
135    * @copydoc PlatformAbstraction::CancelLoad()
136    */
137   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
138
139   /**
140    * @copydoc PlatformAbstraction::GetResources()
141    */
142   virtual void GetResources(Integration::ResourceCache& cache);
143
144   /**
145    * @copydoc PlatformAbstraction::IsLoading()
146    */
147   virtual bool IsLoading();
148
149   /**
150    * @copydoc PlatformAbstraction::GetDefaultFontDescription()
151    */
152   virtual void GetDefaultFontDescription( std::string& family, std::string& style ) const;
153
154   /**
155    * @copydoc PlatformAbstraction::GetDefaultFontSize()
156    */
157   virtual int GetDefaultFontSize() const;
158
159   /**
160    * @copydoc PlatformAbstraction::SetDpi()
161    */
162   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
163
164   /**
165    * @copydoc PlatformAbstraction::LoadFile()
166    */
167   virtual bool LoadFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const;
168
169   /**
170    * @copydoc PlatformAbstraction::LoadShaderBinaryFile()
171    */
172   virtual bool LoadShaderBinaryFile( const std::string& filename, Dali::Vector< unsigned char >& buffer
173 ) const;
174
175   virtual bool SaveShaderBinaryFile( const std::string& filename, const unsigned char * buffer, unsigned int numBytes ) const { return true; }
176
177   /**
178    * @copydoc PlatformAbstraction::SaveFile()
179    */
180   virtual bool SaveFile(const std::string& filename, const unsigned char * buffer, unsigned int numBytes) const;
181
182   virtual void JoinLoaderThreads();
183
184 public: // TEST FUNCTIONS
185
186   // Enumeration of Platform Abstraction methods
187   typedef enum
188   {
189     GetTimeMicrosecondsFunc,
190     SuspendFunc,
191     ResumeFunc,
192     LoadResourceFunc,
193     SaveResourceFunc,
194     SaveFileFunc,
195     LoadFileFunc,
196     LoadShaderBinaryFileFunc,
197     SaveShaderBinaryFileFunc,
198     CancelLoadFunc,
199     GetResourcesFunc,
200     IsLoadingFunc,
201     SetDpiFunc,
202     JoinLoaderThreadsFunc
203   } TestFuncEnum;
204
205   /** Call this every test */
206   void Initialize();
207
208   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
209   inline void ResetTrace() { mTrace.Reset(); }
210   inline TraceCallStack& GetTrace() { return mTrace; }
211
212   bool WasCalled(TestFuncEnum func);
213
214   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
215
216   void IncrementGetTimeResult(size_t milliseconds);
217
218   void SetIsLoadingResult(bool result);
219
220   void SetGetDefaultFontFamilyResult(std::string result);
221
222   void SetGetDefaultFontSizeResult(float result);
223
224   void SetGetFontPathResult(std::string& result);
225
226   void ClearReadyResources();
227
228   void SetResourceLoaded(Integration::ResourceId  loadedId,
229                          Integration::ResourceTypeId  loadedType,
230                          Integration::ResourcePointer loadedResource);
231
232   void SetResourceLoadFailed(Integration::ResourceId  id,
233                              Integration::ResourceFailure failure);
234
235   void SetResourceSaved(Integration::ResourceId      savedId,
236                         Integration::ResourceTypeId  savedType);
237
238   void SetResourceSaveFailed(Integration::ResourceId  id,
239                              Integration::ResourceFailure failure);
240
241   Integration::ResourceRequest* GetRequest();
242
243   void DiscardRequest();
244
245   void SetClosestImageSize(const Vector2& size);
246
247   void SetLoadFileResult( bool result, Dali::Vector< unsigned char >& buffer );
248
249   void SetSaveFileResult( bool result );
250
251 private:
252   mutable TraceCallStack        mTrace;
253   size_t                        mSeconds;
254   size_t                        mMicroSeconds;
255   bool                          mIsLoadingResult;
256   Resources                     mResources;
257   Integration::ResourceRequest* mRequest;
258   Vector2                       mSize;
259   Vector2                       mClosestSize;
260
261   LoadFileResult                mLoadFileResult;
262   bool                          mSaveFileResult;
263 };
264
265 } // Dali
266
267 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */