Merge branch 'devel/graphics' into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-platform-abstraction.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include "test-platform-abstraction.h"
19
20 #include <dali/integration-api/bitmap.h>
21
22 #include "dali-test-suite-utils.h"
23
24 namespace Dali
25 {
26 TestPlatformAbstraction::TestPlatformAbstraction()
27 : mIsLoadingResult(false),
28   mClosestSize(),
29   mLoadFileResult(),
30   mSaveFileResult(false),
31   mSynchronouslyLoadedResource(),
32   mTimerId(0),
33   mCallbackFunction(nullptr)
34 {
35   Initialize();
36 }
37
38 TestPlatformAbstraction::~TestPlatformAbstraction()
39 {
40 }
41
42 ImageDimensions TestPlatformAbstraction::GetClosestImageSize(const std::string& filename,
43                                                              ImageDimensions    size,
44                                                              FittingMode::Type  fittingMode,
45                                                              SamplingMode::Type samplingMode,
46                                                              bool               orientationCorrection)
47 {
48   ImageDimensions closestSize = ImageDimensions(mClosestSize);
49   mTrace.PushCall("GetClosestImageSize", "");
50   return closestSize;
51 }
52
53 ImageDimensions TestPlatformAbstraction::GetClosestImageSize(Integration::ResourcePointer resourceBuffer,
54                                                              ImageDimensions              size,
55                                                              FittingMode::Type            fittingMode,
56                                                              SamplingMode::Type           samplingMode,
57                                                              bool                         orientationCorrection)
58 {
59   ImageDimensions closestSize = ImageDimensions(mClosestSize);
60   mTrace.PushCall("GetClosestImageSize", "");
61   return closestSize;
62 }
63
64 Integration::ResourcePointer TestPlatformAbstraction::LoadImageSynchronously(const Integration::BitmapResourceType& resourceType, const std::string& resourcePath)
65 {
66   mTrace.PushCall("LoadResourceSynchronously", "");
67   return mSynchronouslyLoadedResource;
68 }
69
70 Integration::BitmapPtr TestPlatformAbstraction::DecodeBuffer(const Integration::BitmapResourceType& resourceType, uint8_t* buffer, size_t size)
71 {
72   mTrace.PushCall("DecodeBuffer", "");
73   return mDecodedBitmap;
74 }
75
76 bool TestPlatformAbstraction::LoadShaderBinaryFile(const std::string& filename, Dali::Vector<unsigned char>& buffer) const
77 {
78   mTrace.PushCall("LoadShaderBinaryFile", "");
79   if(mLoadFileResult.loadResult)
80   {
81     buffer = mLoadFileResult.buffer;
82   }
83
84   return mLoadFileResult.loadResult;
85 }
86
87 /** Call this every test */
88 void TestPlatformAbstraction::Initialize()
89 {
90   mTrace.Reset();
91   mTrace.Enable(true);
92   mIsLoadingResult = false;
93   mSynchronouslyLoadedResource.Reset();
94   mDecodedBitmap.Reset();
95 }
96
97 bool TestPlatformAbstraction::WasCalled(TestFuncEnum func)
98 {
99   switch(func)
100   {
101     case LoadResourceSynchronouslyFunc:
102       return mTrace.FindMethod("LoadResourceSynchronously");
103     case LoadShaderBinaryFileFunc:
104       return mTrace.FindMethod("LoadShaderBinaryFile");
105     case SaveShaderBinaryFileFunc:
106       return mTrace.FindMethod("SaveShaderBinaryFile");
107   }
108   return false;
109 }
110
111 void TestPlatformAbstraction::SetIsLoadingResult(bool result)
112 {
113   mIsLoadingResult = result;
114 }
115
116 void TestPlatformAbstraction::ClearReadyResources()
117 {
118   mSynchronouslyLoadedResource.Reset();
119   mDecodedBitmap.Reset();
120 }
121
122 void TestPlatformAbstraction::SetClosestImageSize(const Vector2& size)
123 {
124   mClosestSize = ImageDimensions(static_cast<uint32_t>(size.x), static_cast<uint32_t>(size.y));
125 }
126
127 void TestPlatformAbstraction::SetLoadFileResult(bool result, Dali::Vector<unsigned char>& buffer)
128 {
129   mLoadFileResult.loadResult = result;
130   if(result)
131   {
132     mLoadFileResult.buffer = buffer;
133   }
134 }
135
136 void TestPlatformAbstraction::SetSaveFileResult(bool result)
137 {
138   mSaveFileResult = result;
139 }
140
141 void TestPlatformAbstraction::SetSynchronouslyLoadedResource(Integration::ResourcePointer resource)
142 {
143   mSynchronouslyLoadedResource = resource;
144 }
145
146 void TestPlatformAbstraction::SetDecodedBitmap(Integration::BitmapPtr bitmap)
147 {
148   mDecodedBitmap = bitmap;
149 }
150
151 uint32_t TestPlatformAbstraction::StartTimer(uint32_t milliseconds, CallbackBase* callback)
152 {
153   mCallbackFunction = callback;
154   mTimerId++;
155   return mTimerId;
156 }
157
158 void TestPlatformAbstraction::TriggerTimer()
159 {
160   if(mCallbackFunction != nullptr)
161   {
162     CallbackBase::Execute(*mCallbackFunction);
163   }
164 }
165
166 void TestPlatformAbstraction::CancelTimer(uint32_t timerId)
167 {
168   mCallbackFunction = nullptr;
169 }
170
171 } // namespace Dali