2 * Copyright (c) 2022 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>
20 #include <dali-toolkit/devel-api/controls/progress-bar/progress-bar-devel.h>
21 #include <dali-toolkit/devel-api/visuals/arc-visual-properties-devel.h>
22 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
23 #include <dali/devel-api/actors/actor-devel.h>
26 using namespace Dali::Toolkit;
27 using Dali::Toolkit::ProgressBar;
29 void utc_dali_toolkit_progressbar_startup(void)
31 test_return_value = TET_UNDEF;
34 void utc_dali_toolkit_progressbar_cleanup(void)
36 test_return_value = TET_PASS;
41 static const char* trackImage = TEST_RESOURCE_DIR "/progress-bar-skin-track-progress.png";
42 static const char* progressImage = TEST_RESOURCE_DIR "/progress-bar-skin-progress-progress.png";
43 static const char* secondaryProgressImage = TEST_RESOURCE_DIR "/progress-bar-skin-secondary-progress.png";
44 static const char* indeterminateImage = TEST_RESOURCE_DIR "/progress-bar-skin-indeterminate.png";
45 static bool gObjectCreatedCallBackCalled;
47 static void TestCallback(BaseHandle handle)
49 gObjectCreatedCallBackCalled = true;
54 int UtcDaliProgressBarNew(void)
56 ToolkitTestApplication application;
57 tet_infoline(" UtcDaliProgressBarNew");
59 // Create the ProgressBar actor
60 ProgressBar progressBar;
62 DALI_TEST_CHECK(!progressBar);
64 progressBar = ProgressBar::New();
66 DALI_TEST_CHECK(progressBar);
68 ProgressBar progressBar2(progressBar);
70 DALI_TEST_CHECK(progressBar2 == progressBar);
72 ProgressBar progressBar3;
73 progressBar3 = progressBar2;
75 DALI_TEST_CHECK(progressBar3 == progressBar2);
77 //Additional check to ensure object is created by checking if it's registered
78 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
79 DALI_TEST_CHECK(registry);
81 gObjectCreatedCallBackCalled = false;
82 registry.ObjectCreatedSignal().Connect(&TestCallback);
84 ProgressBar progressBar = ProgressBar::New();
86 DALI_TEST_CHECK(gObjectCreatedCallBackCalled);
90 int UtcDaliProgressBarNew2(void)
92 ToolkitTestApplication application;
93 tet_infoline(" UtcDaliProgressBarNew2");
95 ProgressBar progressBar1 = DevelProgressBar::New(DevelProgressBar::Style::LINEAR);
96 DALI_TEST_CHECK(progressBar1);
98 ProgressBar progressBar2 = DevelProgressBar::New(DevelProgressBar::Style::CIRCULAR);
99 DALI_TEST_CHECK(progressBar2);
101 DALI_TEST_CHECK(progressBar1.GetStyleName() != progressBar2.GetStyleName());
106 int UtcDaliProgressBarDestructor(void)
108 ToolkitTestApplication application;
110 ProgressBar* progressBar = new ProgressBar();
113 DALI_TEST_CHECK(true);
117 int UtcDaliProgressBarCopyConstructor(void)
119 ToolkitTestApplication application;
121 ProgressBar progressBar = ProgressBar::New();
122 DALI_TEST_CHECK(progressBar);
124 ProgressBar copy(progressBar);
125 DALI_TEST_CHECK(copy);
130 int UtcDaliProgressBarCopyAssignment(void)
132 ToolkitTestApplication application;
134 ProgressBar progressBar = ProgressBar::New();
135 DALI_TEST_CHECK(progressBar);
139 DALI_TEST_CHECK(copy);
140 DALI_TEST_EQUALS(progressBar, copy, TEST_LOCATION);
145 int UtcDaliProgressBarMoveConstructor(void)
147 ToolkitTestApplication application;
149 ProgressBar progressBar = ProgressBar::New();
150 DALI_TEST_EQUALS(1, progressBar.GetBaseObject().ReferenceCount(), TEST_LOCATION);
151 progressBar.SetProperty(Actor::Property::SENSITIVE, false);
152 DALI_TEST_CHECK(false == progressBar.GetProperty<bool>(Actor::Property::SENSITIVE));
154 ProgressBar moved = std::move(progressBar);
155 DALI_TEST_CHECK(moved);
156 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
157 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
158 DALI_TEST_CHECK(!progressBar);
163 int UtcDaliProgressBarMoveAssignment(void)
165 ToolkitTestApplication application;
167 ProgressBar progressBar = ProgressBar::New();
168 DALI_TEST_EQUALS(1, progressBar.GetBaseObject().ReferenceCount(), TEST_LOCATION);
169 progressBar.SetProperty(Actor::Property::SENSITIVE, false);
170 DALI_TEST_CHECK(false == progressBar.GetProperty<bool>(Actor::Property::SENSITIVE));
173 moved = std::move(progressBar);
174 DALI_TEST_CHECK(moved);
175 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
176 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
177 DALI_TEST_CHECK(!progressBar);
182 int UtcDaliProgressBarDownCast(void)
184 ToolkitTestApplication application;
186 Handle handle = ProgressBar::New();
188 ProgressBar progressBar = ProgressBar::DownCast(handle);
190 DALI_TEST_CHECK(progressBar == handle);
194 static bool gProgressBarValueChangedCallBackCalled = false;
196 static void OnProgressBarValueChanged(ProgressBar progressBar, float value, float secondaryValue)
198 gProgressBarValueChangedCallBackCalled = true;
201 int UtcDaliProgressBarSignals(void)
203 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
204 tet_infoline(" UtcDaliProgressBarSignals");
206 // Create the ProgressBar actor
207 ProgressBar progressBar = ProgressBar::New();
208 application.GetScene().Add(progressBar);
209 progressBar.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
210 progressBar.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
211 progressBar.SetProperty(Actor::Property::SIZE, Vector2(application.GetScene().GetSize().x, 20.0f));
212 progressBar.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f));
213 progressBar.ValueChangedSignal().Connect(&OnProgressBarValueChanged);
215 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
217 application.SendNotification();
218 application.Render();
220 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
222 //Check Secondary progress value can make signal
223 gProgressBarValueChangedCallBackCalled = false;
224 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
226 application.SendNotification();
227 application.Render();
229 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
233 int UtcDaliProgressBarSetPropertyP(void)
235 ToolkitTestApplication application;
236 tet_infoline("UtcDaliProgressBarSetPropertyP");
238 ProgressBar progressBar = ProgressBar::New();
239 progressBar.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
240 progressBar.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
241 progressBar.SetProperty(Actor::Property::SIZE, Vector2(application.GetScene().GetSize().x, 20.0f));
242 progressBar.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f));
243 progressBar.ValueChangedSignal().Connect(&OnProgressBarValueChanged);
244 application.GetScene().Add(progressBar);
245 application.SendNotification();
246 application.Render();
249 map["visualType"] = "IMAGE";
250 map[Toolkit::ImageVisual::Property::URL] = trackImage;
251 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
253 Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
254 Property::Map* resultMap = value.GetMap();
255 DALI_TEST_CHECK(resultMap);
256 Property::Value* urlValue = resultMap->Find(Toolkit::ImageVisual::Property::URL);
257 std::string urlString;
258 urlValue->Get(urlString);
259 DALI_TEST_CHECK(!urlString.empty());
260 DALI_TEST_EQUALS(urlString, trackImage, TEST_LOCATION);
262 Property::Map colorMap;
263 colorMap["visualType"] = "COLOR";
264 colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
265 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
267 value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
268 resultMap = value.GetMap();
269 DALI_TEST_CHECK(resultMap);
270 Property::Value* colorValue = resultMap->Find(Toolkit::ColorVisual::Property::MIX_COLOR);
271 Vector4 color = Color::TRANSPARENT;
272 colorValue->Get(color);
273 DALI_TEST_CHECK(color != Color::TRANSPARENT);
274 DALI_TEST_EQUALS(color, Color::RED, TEST_LOCATION);
276 map[Toolkit::ImageVisual::Property::URL] = progressImage;
277 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
279 value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
280 resultMap = value.GetMap();
281 DALI_TEST_CHECK(resultMap);
282 urlValue = resultMap->Find(Toolkit::ImageVisual::Property::URL);
283 urlValue->Get(urlString);
284 DALI_TEST_CHECK(!urlString.empty());
285 DALI_TEST_EQUALS(urlString, progressImage, TEST_LOCATION);
287 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
289 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
290 resultMap = value.GetMap();
291 DALI_TEST_CHECK(resultMap);
292 urlValue = resultMap->Find(Toolkit::ImageVisual::Property::URL);
293 urlValue->Get(urlString);
294 DALI_TEST_CHECK(!urlString.empty());
295 DALI_TEST_EQUALS(urlString, secondaryProgressImage, TEST_LOCATION);
297 map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
298 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
300 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
301 resultMap = value.GetMap();
302 DALI_TEST_CHECK(resultMap);
303 urlValue = resultMap->Find(Toolkit::ImageVisual::Property::URL);
304 urlValue->Get(urlString);
305 DALI_TEST_CHECK(!urlString.empty());
306 DALI_TEST_EQUALS(urlString, secondaryProgressImage, TEST_LOCATION);
308 map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
309 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
311 value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
312 resultMap = value.GetMap();
313 DALI_TEST_CHECK(resultMap);
314 urlValue = resultMap->Find(Toolkit::ImageVisual::Property::URL);
315 urlValue->Get(urlString);
316 DALI_TEST_CHECK(!urlString.empty());
317 DALI_TEST_EQUALS(urlString, indeterminateImage, TEST_LOCATION);
319 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
321 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
322 resultMap = value.GetMap();
323 DALI_TEST_CHECK(resultMap);
324 Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
326 std::string textString;
327 textValue->Get(textString);
328 DALI_TEST_CHECK(!textString.empty());
329 DALI_TEST_EQUALS(textString, std::string("test1"), TEST_LOCATION);
331 Property::Map textVisualMap2;
332 textVisualMap2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT);
333 textVisualMap2.Insert(Toolkit::TextVisual::Property::TEXT, "test2");
334 textVisualMap2.Insert(Toolkit::TextVisual::Property::POINT_SIZE, 12.0f);
335 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
337 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
338 resultMap = value.GetMap();
339 DALI_TEST_CHECK(resultMap);
340 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
342 textValue->Get(textString);
343 DALI_TEST_CHECK(!textString.empty());
344 DALI_TEST_EQUALS(textString, std::string("test2"), TEST_LOCATION);
346 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
348 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
349 resultMap = value.GetMap();
350 DALI_TEST_CHECK(resultMap);
351 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
353 std::string textString2;
354 textValue->Get(textString2);
355 DALI_TEST_CHECK(!textString2.empty());
356 DALI_TEST_EQUALS(textString2, std::string("test3"), TEST_LOCATION);
358 Property::Map transitionMap;
359 transitionMap["target"] = "indeterminateVisual";
360 transitionMap["property"] = "offset";
361 transitionMap["initialValue"] = Vector2(0.0f, 0.0f);
362 transitionMap["targetValue"] = Vector2(10.0f, 0.0f);
363 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK").Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
364 Property::Array array;
365 array.PushBack(transitionMap);
366 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
368 Property::Map transitionMap2;
369 transitionMap2["target"] = "indeterminateVisual";
370 transitionMap2["property"] = "offset";
371 transitionMap2["initialValue"] = Vector2(0.0f, 0.0f);
372 transitionMap2["targetValue"] = Vector2(15.0f, 0.0f);
373 transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK").Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
374 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
378 int UtcDaliProgressBarSetPropertyP1(void)
380 ToolkitTestApplication application;
381 tet_infoline("UtcDaliProgressBarSetPropertyP1");
383 ProgressBar progressBar = ProgressBar::New();
384 progressBar.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
385 progressBar.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
386 progressBar.SetProperty(Actor::Property::SIZE, Vector2(application.GetScene().GetSize().x, 20.0f));
387 progressBar.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f));
388 progressBar.ValueChangedSignal().Connect(&OnProgressBarValueChanged);
390 application.GetScene().Add(progressBar);
391 application.SendNotification();
392 application.Render();
394 float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
395 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
397 // test to download a file of 100k in chunks
398 float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
400 while(chunkValue <= upperBound)
402 progressValue = (chunkValue - lowerBound) / (upperBound - lowerBound);
403 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
404 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
405 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
406 chunkValue = chunkValue + 10;
409 // test to download a file of 1000k in chunks
410 lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
412 while(chunkValue <= upperBound)
414 progressValue = (chunkValue - lowerBound) / (upperBound - lowerBound);
415 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
416 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
417 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
418 chunkValue = chunkValue + 100;
421 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
422 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
424 // test to download a file of 100k in chunks
425 lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
427 while(chunkValue <= upperBound)
429 secondaryProgressValue = (chunkValue - lowerBound) / (upperBound - lowerBound);
430 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
431 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
432 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
433 chunkValue = chunkValue + 10;
436 // test to download a file of 1000k in chunks
437 lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
439 while(chunkValue <= upperBound)
441 secondaryProgressValue = (chunkValue - lowerBound) / (upperBound - lowerBound);
442 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
443 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
444 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
445 chunkValue = chunkValue + 100;
451 int UtcDaliProgressBarSetPropertyP2(void)
453 ToolkitTestApplication application;
454 tet_infoline("UtcDaliProgressBarSetPropertyP2");
456 ProgressBar progressBar = ProgressBar::New();
457 progressBar.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
458 progressBar.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
459 progressBar.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f));
460 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
461 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
462 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
463 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
464 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
465 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
467 Property::Map transitionMap;
468 transitionMap["target"] = "indeterminateVisual";
469 transitionMap["property"] = "offset";
470 transitionMap["initialValue"] = Vector2(0.0f, 0.0f);
471 transitionMap["targetValue"] = Vector2(10.0f, 0.0f);
472 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK").Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
473 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
474 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
475 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
477 progressBar.SetResizePolicy(ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS);
478 progressBar.SetProperty(Actor::Property::SIZE, Vector2(application.GetScene().GetSize().x, 20.0f));
479 application.GetScene().Add(progressBar);
480 application.SendNotification();
481 application.Render();
483 // Test get/set INDETERMINATE
484 bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
485 DALI_TEST_EQUALS(val, true, TEST_LOCATION);
487 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
488 val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
489 DALI_TEST_EQUALS(val, false, TEST_LOCATION);
494 int UtcDaliProgressBarSetPropertyP3(void)
496 ToolkitTestApplication application;
497 tet_infoline("UtcDaliProgressBarSetPropertyP3");
499 ProgressBar progressBar = ProgressBar::New();
500 progressBar.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
501 progressBar.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
502 progressBar.SetProperty(Actor::Property::SIZE, Vector2(application.GetScene().GetSize().x, application.GetScene().GetSize().y));
503 application.GetScene().Add(progressBar);
504 application.SendNotification();
505 application.Render();
508 // Set arc visual to the SECONDARY_PROGRESS_VISUAL
509 const float expected = 180.0f;
512 map["visualType"] = "ARC";
513 map["thickness"] = 4.0f;
514 map["mixColor"] = Color::BLUE;
515 map["sweepAngle"] = 60;
516 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
517 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.5f); // This should change visual's sweep angle.
519 Property::Value value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
520 Property::Map* resultMap = value.GetMap();
521 DALI_TEST_CHECK(resultMap);
523 Property::Value* sweepAngle = resultMap->Find(DevelArcVisual::Property::SWEEP_ANGLE);
525 sweepAngle->Get(result);
526 DALI_TEST_EQUALS(result, expected, TEST_LOCATION);
530 // Set arc visual to the PROGRESS_VISUAL
531 const float expected = 90.0f;
534 map["visualType"] = "ARC";
535 map["thickness"] = 4.0f;
536 map["mixColor"] = Color::RED;
537 map["sweepAngle"] = 60;
538 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
539 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.25f); // This should change visual's sweep angle.
541 Property::Value value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
542 Property::Map* resultMap = value.GetMap();
543 DALI_TEST_CHECK(resultMap);
545 Property::Value* sweepAngle = resultMap->Find(DevelArcVisual::Property::SWEEP_ANGLE);
547 sweepAngle->Get(result);
548 DALI_TEST_EQUALS(result, expected, TEST_LOCATION);
552 // Set arc visual to the INDETERMINATE_VISUAL
553 const Vector4 expected = Color::GREEN;
556 map["visualType"] = "ARC";
557 map["thickness"] = 4.0f;
558 map["mixColor"] = expected;
559 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
561 Property::Value value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
562 Property::Map* resultMap = value.GetMap();
563 DALI_TEST_CHECK(resultMap);
565 Property::Value* mixColor = resultMap->Find(Visual::Property::MIX_COLOR);
567 mixColor->Get(result);
568 DALI_TEST_EQUALS(result, expected, TEST_LOCATION);
572 // Set arc visual to the TRACK_VISUAL
573 const Vector4 expected = Color::YELLOW;
576 map["visualType"] = "ARC";
577 map["thickness"] = 0.4f;
578 map["mixColor"] = expected;
579 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
580 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true); // This should not change track visual's properties.
582 Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
583 Property::Map* resultMap = value.GetMap();
584 DALI_TEST_CHECK(resultMap);
586 Property::Value* mixColor = resultMap->Find(Visual::Property::MIX_COLOR);
588 mixColor->Get(result);
589 DALI_TEST_EQUALS(result, expected, TEST_LOCATION);