Remove de-funct dynamics support
[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 #include <string>
25
26 // INTERNAL INCLUDES
27 #include <dali/integration-api/platform-abstraction.h>
28
29 #include "test-trace-call-stack.h"
30
31 namespace Dali
32 {
33
34 /**
35  * Concrete implementation of the platform abstraction class.
36  */
37 class DALI_IMPORT_API TestPlatformAbstraction : public Dali::Integration::PlatformAbstraction
38 {
39
40 public:
41
42   struct Resources
43   {
44     bool                         loaded;
45     Integration::ResourceId      loadedId;
46     Integration::ResourceTypeId  loadedType;
47     Integration::ResourcePointer loadedResource;
48
49     bool                         loadFailed;
50     Integration::ResourceId      loadFailedId;
51     Integration::ResourceFailure loadFailure;
52
53     bool                         saved;
54     Integration::ResourceId      savedId;
55     Integration::ResourceTypeId  savedType;
56
57     bool                         saveFailed;
58     Integration::ResourceId      saveFailedId;
59     Integration::ResourceFailure saveFailure;
60   };
61
62   struct LoadFileResult
63   {
64     inline LoadFileResult()
65     : loadResult(false)
66     {
67
68     }
69
70     bool loadResult;
71     std::vector< unsigned char> buffer;
72   };
73
74   /**
75    * Constructor
76    */
77   TestPlatformAbstraction();
78
79   /**
80    * Destructor
81    */
82   virtual ~TestPlatformAbstraction();
83
84   /**
85    * @copydoc PlatformAbstraction::GetTimeMicroseconds()
86    */
87   virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int &microSeconds);
88
89   /**
90    * @copydoc PlatformAbstraction::Suspend()
91    */
92   virtual void Suspend();
93
94   /**
95    * @copydoc PlatformAbstraction::Resume()
96    */
97   virtual void Resume();
98
99   virtual ImageDimensions GetClosestImageSize( const std::string& filename,
100                                                  ImageDimensions size,
101                                                  FittingMode::Type fittingMode,
102                                                  SamplingMode::Type samplingMode,
103                                                  bool orientationCorrection );
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   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
117
118   /**
119    * @copydoc PlatformAbstraction::SaveResource()
120    */
121   virtual void SaveResource(const Integration::ResourceRequest& request);
122
123   /**
124    * @copydoc PlatformAbstraction::CancelLoad()
125    */
126   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
127
128   /**
129    * @copydoc PlatformAbstraction::GetResources()
130    */
131   virtual void GetResources(Integration::ResourceCache& cache);
132
133   /**
134    * @copydoc PlatformAbstraction::IsLoading()
135    */
136   virtual bool IsLoading();
137
138   /**
139    * @copydoc PlatformAbstraction::GetDefaultFontFamily()
140    */
141   virtual void GetDefaultFontDescription( std::string& family, std::string& style ) const;
142
143   /**
144    * @copydoc PlatformAbstraction::GetDefaultFontSize()
145    */
146   virtual int GetDefaultFontSize() const;
147
148   /**
149    * @copydoc PlatformAbstraction::SetDpi()
150    */
151   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
152
153   /**
154    * @copydoc PlatformAbstraction::LoadFile()
155    */
156   virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
157
158   /**
159    * @copydoc PlatformAbstraction::LoadShaderBinFile()
160    */
161   virtual bool LoadShaderBinFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
162
163   /**
164    * @copydoc PlatformAbstraction::SaveFile()
165    */
166   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
167
168   virtual void JoinLoaderThreads();
169
170 public: // TEST FUNCTIONS
171
172   // Enumeration of Platform Abstraction methods
173   typedef enum
174   {
175     GetTimeMicrosecondsFunc,
176     SuspendFunc,
177     ResumeFunc,
178     LoadResourceFunc,
179     SaveResourceFunc,
180     SaveFileFunc,
181     LoadFileFunc,
182     CancelLoadFunc,
183     GetResourcesFunc,
184     IsLoadingFunc,
185     SetDpiFunc,
186     JoinLoaderThreadsFunc,
187   } TestFuncEnum;
188
189   /** Call this every test */
190   void Initialize();
191
192   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
193   inline void ResetTrace() { mTrace.Reset(); }
194   inline TraceCallStack& GetTrace() { return mTrace; }
195
196   bool WasCalled(TestFuncEnum func);
197
198   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
199
200   void IncrementGetTimeResult(size_t milliseconds);
201
202   void SetIsLoadingResult(bool result);
203
204   void ClearReadyResources();
205
206   void SetResourceLoaded(Integration::ResourceId  loadedId,
207                          Integration::ResourceTypeId  loadedType,
208                          Integration::ResourcePointer loadedResource);
209
210   void SetResourceLoadFailed(Integration::ResourceId  id,
211                              Integration::ResourceFailure failure);
212
213   void SetResourceSaved(Integration::ResourceId      savedId,
214                         Integration::ResourceTypeId  savedType);
215
216   void SetResourceSaveFailed(Integration::ResourceId  id,
217                              Integration::ResourceFailure failure);
218
219   Integration::ResourceRequest* GetRequest();
220
221   void DiscardRequest();
222
223   void SetClosestImageSize(const Vector2& size);
224
225   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
226
227   void SetSaveFileResult( bool result );
228
229 private:
230   mutable TraceCallStack        mTrace;
231   size_t                        mSeconds;
232   size_t                        mMicroSeconds;
233   bool                          mIsLoadingResult;
234   std::string                   mGetDefaultFontFamilyResult;
235   std::string                   mGetDefaultFontStyleResult;
236   int                           mGetDefaultFontSizeResult;
237   Resources                     mResources;
238   Integration::ResourceRequest* mRequest;
239   Vector2                       mSize;
240   Vector2                       mClosestSize;
241
242   LoadFileResult                mLoadFileResult;
243   bool                          mSaveFileResult;
244 };
245
246 } // Dali
247
248 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */