2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "test-platform-abstraction.h"
19 #include "dali-test-suite-utils.h"
20 #include <dali/integration-api/bitmap.h>
25 TestPlatformAbstraction::TestPlatformAbstraction()
27 mIsLoadingResult( false ),
28 mGetDefaultFontSizeResult( 0 ),
29 mLoadedResourcesQueue(),
35 mSaveFileResult( false ),
36 mSynchronouslyLoadedResource()
41 TestPlatformAbstraction::~TestPlatformAbstraction()
46 void TestPlatformAbstraction::Suspend()
48 mTrace.PushCall("Suspend", "");
51 void TestPlatformAbstraction::Resume()
53 mTrace.PushCall("Resume", "");
56 ImageDimensions TestPlatformAbstraction::GetClosestImageSize( const std::string& filename,
58 FittingMode::Type fittingMode,
59 SamplingMode::Type samplingMode,
60 bool orientationCorrection )
62 ImageDimensions closestSize = ImageDimensions( mClosestSize.x, mClosestSize.y );
63 mTrace.PushCall("GetClosestImageSize", "");
67 ImageDimensions TestPlatformAbstraction::GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
69 FittingMode::Type fittingMode,
70 SamplingMode::Type samplingMode,
71 bool orientationCorrection )
73 ImageDimensions closestSize = ImageDimensions( mClosestSize.x, mClosestSize.y );
74 mTrace.PushCall("GetClosestImageSize", "");
78 void TestPlatformAbstraction::LoadResource(const Integration::ResourceRequest& request)
80 std::ostringstream out;
81 out << "Type:" << request.GetType()->id << ", Path: " << request.GetPath() << std::endl ;
83 mTrace.PushCall("LoadResource", out.str());
85 mResourceRequests.PushBack( new Integration::ResourceRequest(request) );
88 Integration::ResourcePointer TestPlatformAbstraction::LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath )
90 mTrace.PushCall("LoadResourceSynchronously", "");
91 return mSynchronouslyLoadedResource;
94 Integration::BitmapPtr TestPlatformAbstraction::DecodeBuffer( const Integration::ResourceType& resourceType, uint8_t * buffer, size_t size )
96 mTrace.PushCall("DecodeBuffer", "");
97 return mDecodedBitmap;
100 void TestPlatformAbstraction::CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId)
102 mTrace.PushCall("CancelLoad", "");
105 void TestPlatformAbstraction::GetResources(Integration::ResourceCache& cache)
107 mTrace.PushCall("GetResources", "");
109 while( !mLoadedResourcesQueue.empty() )
111 LoadedResource loaded( *mLoadedResourcesQueue.begin() );
112 mLoadedResourcesQueue.erase( mLoadedResourcesQueue.begin() );
113 cache.LoadResponse( loaded.id, loaded.type, loaded.resource, Integration::RESOURCE_COMPLETELY_LOADED );
116 // iterate through the resources which failed to load
117 while( !mFailedLoadQueue.empty() )
119 FailedLoad failed( *mFailedLoadQueue.begin() );
120 mFailedLoadQueue.erase( mFailedLoadQueue.begin() );
121 cache.LoadFailed( failed.id, failed.failure );
125 bool TestPlatformAbstraction::IsLoading()
127 mTrace.PushCall("IsLoading", "");
128 return mIsLoadingResult;
131 int TestPlatformAbstraction::GetDefaultFontSize() const
133 mTrace.PushCall("GetDefaultFontSize", "");
134 return mGetDefaultFontSizeResult;
137 void TestPlatformAbstraction::SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical)
139 mTrace.PushCall("SetDpi", "");
142 bool TestPlatformAbstraction::LoadFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const
144 mTrace.PushCall("LoadFile", "");
145 if( mLoadFileResult.loadResult )
147 buffer = mLoadFileResult.buffer;
150 return mLoadFileResult.loadResult;
153 bool TestPlatformAbstraction::LoadShaderBinaryFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const
155 mTrace.PushCall("LoadShaderBinaryFile", "");
156 if( mLoadFileResult.loadResult )
158 buffer = mLoadFileResult.buffer;
161 return mLoadFileResult.loadResult;
164 bool TestPlatformAbstraction::SaveFile(const std::string& filename, const unsigned char * buffer, unsigned int numBytes ) const
166 mTrace.PushCall("SaveFile", "");
170 void TestPlatformAbstraction::JoinLoaderThreads()
172 mTrace.PushCall("JoinLoaderThreads", "");
175 /** Call this every test */
176 void TestPlatformAbstraction::Initialize()
180 mLoadedResourcesQueue.clear();
181 mFailedLoadQueue.clear();
182 mResourceRequests.Clear();
183 mIsLoadingResult=false;
184 mSynchronouslyLoadedResource.Reset();
185 mDecodedBitmap.Reset();
188 bool TestPlatformAbstraction::WasCalled(TestFuncEnum func)
192 case SuspendFunc: return mTrace.FindMethod("Suspend");
193 case ResumeFunc: return mTrace.FindMethod("Resume");
194 case LoadResourceFunc: return mTrace.FindMethod("LoadResource");
195 case LoadResourceSynchronouslyFunc: return mTrace.FindMethod("LoadResourceSynchronously");
196 case LoadFileFunc: return mTrace.FindMethod("LoadFile");
197 case LoadShaderBinaryFileFunc: return mTrace.FindMethod("LoadShaderBinaryFile");
198 case SaveShaderBinaryFileFunc: return mTrace.FindMethod("SaveShaderBinaryFile");
199 case SaveFileFunc: return mTrace.FindMethod("SaveFile");
200 case CancelLoadFunc: return mTrace.FindMethod("CancelLoad");
201 case GetResourcesFunc: return mTrace.FindMethod("GetResources");
202 case IsLoadingFunc: return mTrace.FindMethod("IsLoading");
203 case SetDpiFunc: return mTrace.FindMethod("SetDpi");
204 case JoinLoaderThreadsFunc: return mTrace.FindMethod("JoinLoaderThreads");
209 void TestPlatformAbstraction::SetIsLoadingResult(bool result)
211 mIsLoadingResult = result;
214 void TestPlatformAbstraction::ClearReadyResources()
216 mLoadedResourcesQueue.clear();
217 mFailedLoadQueue.clear();
218 mSynchronouslyLoadedResource.Reset();
219 mDecodedBitmap.Reset();
222 void TestPlatformAbstraction::SetResourceLoaded(Integration::ResourceId loadedId,
223 Integration::ResourceTypeId loadedType,
224 Integration::ResourcePointer loadedResource)
226 LoadedResource loadedInfo;
227 loadedInfo.id = loadedId;
228 loadedInfo.type = loadedType;
229 loadedInfo.resource = loadedResource;
230 mLoadedResourcesQueue.push_back( loadedInfo );
233 void TestPlatformAbstraction::SetResourceLoadFailed(Integration::ResourceId id,
234 Integration::ResourceFailure failure)
236 FailedLoad failedInfo;
238 failedInfo.failure = failure;
239 mFailedLoadQueue.push_back( failedInfo );
242 Integration::ResourceRequest* TestPlatformAbstraction::GetRequest()
244 Integration::ResourceRequest* request = NULL;
246 // Return last request
247 if( ! mResourceRequests.Empty() )
249 request = *( mResourceRequests.End() - 1 );
255 const TestPlatformAbstraction::ResourceRequestContainer& TestPlatformAbstraction::GetAllRequests() const
257 return mResourceRequests;
260 void TestPlatformAbstraction::SetAllResourceRequestsAsLoaded()
262 for( ResourceRequestContainer::Iterator iter = mResourceRequests.Begin(), endIter = mResourceRequests.End();
263 iter != endIter; ++iter )
265 Integration::ResourceRequest* request = *iter;
266 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD );
267 Integration::ResourcePointer resource(bitmap);
268 bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80);
269 SetResourceLoaded( request->GetId(), request->GetType()->id, resource );
272 mResourceRequests.Clear();
275 void TestPlatformAbstraction::SetAllResourceRequestsAsFailed( Integration::ResourceFailure failure )
277 for( ResourceRequestContainer::Iterator iter = mResourceRequests.Begin(), endIter = mResourceRequests.End();
278 iter != endIter; ++iter )
280 Integration::ResourceRequest* request = *iter;
281 SetResourceLoadFailed( (*iter)->GetId(), failure);
284 mResourceRequests.Clear();
287 void TestPlatformAbstraction::DiscardRequest()
289 for( ResourceRequestContainer::Iterator iter = mResourceRequests.Begin(), endIter = mResourceRequests.End();
290 iter != endIter; ++iter )
292 Integration::ResourceRequest* request = *iter;
295 mResourceRequests.Clear();
298 void TestPlatformAbstraction::SetClosestImageSize(const Vector2& size)
303 void TestPlatformAbstraction::SetLoadFileResult( bool result, Dali::Vector< unsigned char >& buffer )
305 mLoadFileResult.loadResult = result;
308 mLoadFileResult.buffer = buffer;
312 void TestPlatformAbstraction::SetSaveFileResult( bool result )
314 mSaveFileResult = result;
317 void TestPlatformAbstraction::SetSynchronouslyLoadedResource( Integration::ResourcePointer resource )
319 mSynchronouslyLoadedResource = resource;
322 void TestPlatformAbstraction::SetDecodedBitmap( Integration::BitmapPtr bitmap )
324 mDecodedBitmap = bitmap;