[dali_1.1.0] Merge branch 'devel/master'
[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
56   struct LoadFileResult
57   {
58     inline LoadFileResult()
59     : loadResult(false)
60     {
61
62     }
63
64     bool loadResult;
65     Dali::Vector< unsigned char> buffer;
66   };
67
68   /**
69    * Constructor
70    */
71   TestPlatformAbstraction();
72
73   /**
74    * Destructor
75    */
76   virtual ~TestPlatformAbstraction();
77
78   /**
79    * @copydoc PlatformAbstraction::GetTimeMicroseconds()
80    */
81   virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int &microSeconds);
82
83   /**
84    * @copydoc PlatformAbstraction::Suspend()
85    */
86   virtual void Suspend();
87
88   /**
89    * @copydoc PlatformAbstraction::Resume()
90    */
91   virtual void Resume();
92
93   /**
94    * @copydoc PlatformAbstraction::GetClosestImageSize()
95    */
96   virtual ImageDimensions GetClosestImageSize( const std::string& filename,
97                                                  ImageDimensions size,
98                                                  FittingMode::Type fittingMode,
99                                                  SamplingMode::Type samplingMode,
100                                                  bool orientationCorrection );
101
102   /**
103    * @copydoc PlatformAbstraction::GetClosestImageSize()
104    */
105   virtual ImageDimensions GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
106                                                ImageDimensions size,
107                                                FittingMode::Type fittingMode,
108                                                SamplingMode::Type samplingMode,
109                                                bool orientationCorrection );
110
111   /**
112    * @copydoc PlatformAbstraction::LoadResource()
113    */
114   virtual void LoadResource(const Integration::ResourceRequest& request);
115
116   /**
117    * @copydoc PlatformAbstraction::LoadResourceSynchronously()
118    */
119   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
120
121   /**
122    * @copydoc PlatformAbstraction::DecodeBuffer()
123    */
124   virtual Integration::BitmapPtr DecodeBuffer( const Dali::Integration::ResourceType& resourceType, uint8_t * buffer, size_t size );
125
126   /**
127    * @copydoc PlatformAbstraction::CancelLoad()
128    */
129   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
130
131   /**
132    * @copydoc PlatformAbstraction::GetResources()
133    */
134   virtual void GetResources(Integration::ResourceCache& cache);
135
136   /**
137    * @copydoc PlatformAbstraction::IsLoading()
138    */
139   virtual bool IsLoading();
140
141   /**
142    * @copydoc PlatformAbstraction::GetDefaultFontDescription()
143    */
144   virtual void GetDefaultFontDescription( std::string& family, std::string& style ) const;
145
146   /**
147    * @copydoc PlatformAbstraction::GetDefaultFontSize()
148    */
149   virtual int GetDefaultFontSize() const;
150
151   /**
152    * @copydoc PlatformAbstraction::SetDpi()
153    */
154   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
155
156   /**
157    * @copydoc PlatformAbstraction::LoadFile()
158    */
159   virtual bool LoadFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const;
160
161   /**
162    * @copydoc PlatformAbstraction::LoadShaderBinaryFile()
163    */
164   virtual bool LoadShaderBinaryFile( const std::string& filename, Dali::Vector< unsigned char >& buffer
165 ) const;
166
167   virtual bool SaveShaderBinaryFile( const std::string& filename, const unsigned char * buffer, unsigned int numBytes ) const { return true; }
168
169   /**
170    * @copydoc PlatformAbstraction::SaveFile()
171    */
172   virtual bool SaveFile(const std::string& filename, const unsigned char * buffer, unsigned int numBytes) const;
173
174   virtual void JoinLoaderThreads();
175
176 public: // TEST FUNCTIONS
177
178   // Enumeration of Platform Abstraction methods
179   typedef enum
180   {
181     GetTimeMicrosecondsFunc,
182     SuspendFunc,
183     ResumeFunc,
184     LoadResourceFunc,
185     SaveFileFunc,
186     LoadFileFunc,
187     LoadShaderBinaryFileFunc,
188     SaveShaderBinaryFileFunc,
189     CancelLoadFunc,
190     GetResourcesFunc,
191     IsLoadingFunc,
192     SetDpiFunc,
193     JoinLoaderThreadsFunc
194   } TestFuncEnum;
195
196   /** Call this every test */
197   void Initialize();
198
199   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
200   inline void ResetTrace() { mTrace.Reset(); }
201   inline TraceCallStack& GetTrace() { return mTrace; }
202
203   bool WasCalled(TestFuncEnum func);
204
205   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
206
207   void IncrementGetTimeResult(size_t milliseconds);
208
209   void SetIsLoadingResult(bool result);
210
211   void SetGetDefaultFontFamilyResult(std::string result);
212
213   void SetGetDefaultFontSizeResult(float result);
214
215   void SetGetFontPathResult(std::string& result);
216
217   void ClearReadyResources();
218
219   void SetResourceLoaded(Integration::ResourceId  loadedId,
220                          Integration::ResourceTypeId  loadedType,
221                          Integration::ResourcePointer loadedResource);
222
223   void SetResourceLoadFailed(Integration::ResourceId  id,
224                              Integration::ResourceFailure failure);
225
226   Integration::ResourceRequest* GetRequest();
227
228   void DiscardRequest();
229
230   void SetClosestImageSize(const Vector2& size);
231
232   void SetLoadFileResult( bool result, Dali::Vector< unsigned char >& buffer );
233
234   void SetSaveFileResult( bool result );
235
236 private:
237   mutable TraceCallStack        mTrace;
238   size_t                        mSeconds;
239   size_t                        mMicroSeconds;
240   bool                          mIsLoadingResult;
241   Resources                     mResources;
242   Integration::ResourceRequest* mRequest;
243   Vector2                       mSize;
244   Vector2                       mClosestSize;
245
246   LoadFileResult                mLoadFileResult;
247   bool                          mSaveFileResult;
248 };
249
250 } // Dali
251
252 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */