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 <dali-toolkit-test-suite-utils.h>
19 #include <dali-toolkit/dali-toolkit.h>
22 using namespace Dali::Toolkit;
23 using Dali::Toolkit::ProgressBar;
26 void utc_dali_toolkit_progressbar_startup(void)
28 test_return_value = TET_UNDEF;
31 void utc_dali_toolkit_progressbar_cleanup(void)
33 test_return_value = TET_PASS;
38 static const char* trackImage = TEST_RESOURCE_DIR "/progress-bar-skin-track-progress.png";
39 static const char* progressImage = TEST_RESOURCE_DIR "/progress-bar-skin-progress-progress.png";
40 static const char* secondaryProgressImage = TEST_RESOURCE_DIR "/progress-bar-skin-secondary-progress.png";
41 static const char* indeterminateImage = TEST_RESOURCE_DIR "/progress-bar-skin-indeterminate.png";
42 static bool gObjectCreatedCallBackCalled;
44 static void TestCallback(BaseHandle handle)
46 gObjectCreatedCallBackCalled = true;
51 int UtcDaliProgressBarNew(void)
53 ToolkitTestApplication application;
54 tet_infoline(" UtcDaliProgressBarNew");
56 // Create the ProgressBar actor
57 ProgressBar progressBar;
59 DALI_TEST_CHECK( !progressBar );
61 progressBar = ProgressBar::New();
63 DALI_TEST_CHECK( progressBar );
65 ProgressBar progressBar2(progressBar);
67 DALI_TEST_CHECK( progressBar2 == progressBar );
69 ProgressBar progressBar3;
70 progressBar3 = progressBar2;
72 DALI_TEST_CHECK( progressBar3 == progressBar2 );
74 //Additional check to ensure object is created by checking if it's registered
75 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
76 DALI_TEST_CHECK( registry );
78 gObjectCreatedCallBackCalled = false;
79 registry.ObjectCreatedSignal().Connect( &TestCallback );
81 ProgressBar progressBar = ProgressBar::New();
83 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
87 int UtcDaliProgressBarDestructor(void)
89 ToolkitTestApplication application;
91 ProgressBar* progressBar = new ProgressBar();
94 DALI_TEST_CHECK( true );
98 int UtcDaliProgressBarDownCast(void)
100 ToolkitTestApplication application;
102 Handle handle = ProgressBar::New();
104 ProgressBar progressBar = ProgressBar::DownCast( handle );
106 DALI_TEST_CHECK( progressBar == handle );
110 static bool gProgressBarValueChangedCallBackCalled = false;
112 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
114 gProgressBarValueChangedCallBackCalled = true;
117 int UtcDaliProgressBarSignals(void)
119 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
120 tet_infoline(" UtcDaliProgressBarSignals");
122 // Create the ProgressBar actor
123 ProgressBar progressBar = ProgressBar::New();
124 Stage::GetCurrent().Add( progressBar );
125 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
126 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
127 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
128 progressBar.SetPosition( 0.0f, 0.0f );
129 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
131 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
133 application.SendNotification();
134 application.Render();
136 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
138 //Check Secondary progress value can make signal
139 gProgressBarValueChangedCallBackCalled = false;
140 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
142 application.SendNotification();
143 application.Render();
145 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
149 int UtcDaliProgressBarSetPropertyP(void)
151 ToolkitTestApplication application;
152 tet_infoline( "UtcDaliProgressBarSetPropertyP" );
154 ProgressBar progressBar = ProgressBar::New();
155 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
156 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
157 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
158 progressBar.SetPosition( 0.0f, 0.0f );
159 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
160 Stage::GetCurrent().Add(progressBar);
161 application.SendNotification();
162 application.Render();
165 map["visualType"] = "IMAGE";
166 map[Toolkit::ImageVisual::Property::URL] = trackImage;
167 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
169 Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
170 Property::Map* resultMap = value.GetMap();
171 DALI_TEST_CHECK( resultMap );
172 Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
173 std::string urlString;
174 urlValue->Get( urlString );
175 DALI_TEST_CHECK( !urlString.empty() ) ;
176 DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
178 Property::Map colorMap;
179 colorMap["visualType"] = "COLOR";
180 colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
181 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
183 value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
184 resultMap = value.GetMap();
185 DALI_TEST_CHECK( resultMap );
186 Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
187 Vector4 color = Color::TRANSPARENT;
188 colorValue->Get( color );
189 DALI_TEST_CHECK( color != Color::TRANSPARENT );
190 DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
192 map[Toolkit::ImageVisual::Property::URL] = progressImage;
193 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
195 value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
196 resultMap = value.GetMap();
197 DALI_TEST_CHECK( resultMap );
198 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
199 urlValue->Get( urlString );
200 DALI_TEST_CHECK( !urlString.empty() ) ;
201 DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
203 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
205 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
206 resultMap = value.GetMap();
207 DALI_TEST_CHECK( resultMap );
208 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
209 urlValue->Get( urlString );
210 DALI_TEST_CHECK( !urlString.empty() ) ;
211 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
213 map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
214 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
216 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
217 resultMap = value.GetMap();
218 DALI_TEST_CHECK( resultMap );
219 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
220 urlValue->Get( urlString );
221 DALI_TEST_CHECK( !urlString.empty() ) ;
222 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
224 map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
225 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
227 value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
228 resultMap = value.GetMap();
229 DALI_TEST_CHECK( resultMap );
230 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
231 urlValue->Get( urlString );
232 DALI_TEST_CHECK( !urlString.empty() ) ;
233 DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
235 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
237 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
238 resultMap = value.GetMap();
239 DALI_TEST_CHECK( resultMap );
240 Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
242 std::string textString;
243 textValue->Get( textString );
244 DALI_TEST_CHECK( !textString.empty() );
245 DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
247 Property::Map textVisualMap2;
248 textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT );
249 textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
250 textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
251 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
253 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
254 resultMap = value.GetMap();
255 DALI_TEST_CHECK( resultMap );
256 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
258 textValue->Get( textString );
259 DALI_TEST_CHECK( !textString.empty() );
260 DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
262 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
264 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
265 resultMap = value.GetMap();
266 DALI_TEST_CHECK( resultMap );
267 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
269 std::string textString2;
270 textValue->Get( textString2 );
271 DALI_TEST_CHECK( !textString2.empty() );
272 DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
274 Property::Map transitionMap;
275 transitionMap["target"] = "indeterminateVisual";
276 transitionMap["property"] = "offset";
277 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
278 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
279 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
280 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
281 Property::Array array;
282 array.PushBack( transitionMap );
283 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
285 Property::Map transitionMap2;
286 transitionMap2["target"] = "indeterminateVisual";
287 transitionMap2["property"] = "offset";
288 transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
289 transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
290 transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
291 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
292 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
296 int UtcDaliProgressBarSetPropertyP1(void)
298 ToolkitTestApplication application;
299 tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
301 ProgressBar progressBar = ProgressBar::New();
302 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
303 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
304 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
305 progressBar.SetPosition( 0.0f, 0.0f );
306 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
308 Stage::GetCurrent().Add(progressBar);
309 application.SendNotification();
310 application.Render();
312 float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
313 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
315 // test to download a file of 100k in chunks
316 float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
318 while( chunkValue <= upperBound )
320 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
321 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
322 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
323 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
324 chunkValue = chunkValue + 10;
327 // test to download a file of 1000k in chunks
328 lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
330 while( chunkValue <= upperBound )
332 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
333 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
334 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
335 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
336 chunkValue = chunkValue + 100;
339 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
340 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
342 // test to download a file of 100k in chunks
343 lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
345 while( chunkValue <= upperBound )
347 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
348 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
349 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
350 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
351 chunkValue = chunkValue + 10;
354 // test to download a file of 1000k in chunks
355 lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
357 while( chunkValue <= upperBound )
359 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
360 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
361 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
362 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
363 chunkValue = chunkValue + 100;
369 int UtcDaliProgressBarSetPropertyP2(void)
371 ToolkitTestApplication application;
372 tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
374 ProgressBar progressBar = ProgressBar::New();
375 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
376 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
377 progressBar.SetPosition( 0.0f, 0.0f );
378 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
379 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
380 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
381 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
382 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
383 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
385 Property::Map transitionMap;
386 transitionMap["target"] = "indeterminateVisual";
387 transitionMap["property"] = "offset";
388 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
389 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
390 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
391 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
392 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
393 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
394 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
396 progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
397 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
398 Stage::GetCurrent().Add(progressBar);
399 application.SendNotification();
400 application.Render();
402 // Test get/set INDETERMINATE
403 bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
404 DALI_TEST_EQUALS(val, true, TEST_LOCATION);
406 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
407 val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
408 DALI_TEST_EQUALS(val, false, TEST_LOCATION);