Merge "Fix logging for debug build." into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ProgressBar.cpp
1 /*
2  * Copyright (c) 2017 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 <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>
24
25 using namespace Dali;
26 using namespace Dali::Toolkit;
27 using Dali::Toolkit::ProgressBar;
28
29
30 void utc_dali_toolkit_progressbar_startup(void)
31 {
32   test_return_value = TET_UNDEF;
33 }
34
35 void utc_dali_toolkit_progressbar_cleanup(void)
36 {
37   test_return_value = TET_PASS;
38 }
39
40 namespace
41 {
42 static const char* trackImage = TEST_RESOURCE_DIR "/progress-bar-skin-track-progress.png";
43 static const char* progressImage = TEST_RESOURCE_DIR "/progress-bar-skin-progress-progress.png";
44 static const char* secondaryProgressImage = TEST_RESOURCE_DIR "/progress-bar-skin-secondary-progress.png";
45 static const char* indeterminateImage = TEST_RESOURCE_DIR "/progress-bar-skin-indeterminate.png";
46 static bool gObjectCreatedCallBackCalled;
47
48 static void TestCallback(BaseHandle handle)
49 {
50   gObjectCreatedCallBackCalled = true;
51 }
52
53 }
54
55 int UtcDaliProgressBarNew(void)
56 {
57   ToolkitTestApplication application;
58   tet_infoline(" UtcDaliProgressBarNew");
59
60   // Create the ProgressBar actor
61   ProgressBar progressBar;
62
63   DALI_TEST_CHECK( !progressBar );
64
65   progressBar = ProgressBar::New();
66
67   DALI_TEST_CHECK( progressBar );
68
69   ProgressBar progressBar2(progressBar);
70
71   DALI_TEST_CHECK( progressBar2 == progressBar );
72
73   ProgressBar progressBar3;
74   progressBar3 = progressBar2;
75
76   DALI_TEST_CHECK( progressBar3 == progressBar2 );
77
78   //Additional check to ensure object is created by checking if it's registered
79   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
80   DALI_TEST_CHECK( registry );
81
82   gObjectCreatedCallBackCalled = false;
83   registry.ObjectCreatedSignal().Connect( &TestCallback );
84   {
85     ProgressBar progressBar = ProgressBar::New();
86   }
87   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
88   END_TEST;
89 }
90
91 int UtcDaliProgressBarNew2(void)
92 {
93   ToolkitTestApplication application;
94   tet_infoline(" UtcDaliProgressBarNew2");
95
96   ProgressBar progressBar1 = DevelProgressBar::New( DevelProgressBar::Style::LINEAR );
97   DALI_TEST_CHECK( progressBar1 );
98
99   ProgressBar progressBar2 = DevelProgressBar::New( DevelProgressBar::Style::CIRCULAR );
100   DALI_TEST_CHECK( progressBar2 );
101
102   DALI_TEST_CHECK( progressBar1.GetStyleName() != progressBar2.GetStyleName() );
103
104   END_TEST;
105 }
106
107 int UtcDaliProgressBarDestructor(void)
108 {
109   ToolkitTestApplication application;
110
111   ProgressBar* progressBar = new ProgressBar();
112   delete progressBar;
113
114   DALI_TEST_CHECK( true );
115   END_TEST;
116 }
117
118 int UtcDaliProgressBarDownCast(void)
119 {
120   ToolkitTestApplication application;
121
122   Handle handle = ProgressBar::New();
123
124   ProgressBar progressBar = ProgressBar::DownCast( handle );
125
126   DALI_TEST_CHECK( progressBar == handle );
127   END_TEST;
128 }
129
130 static bool gProgressBarValueChangedCallBackCalled = false;
131
132 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
133 {
134   gProgressBarValueChangedCallBackCalled = true;
135 }
136
137 int UtcDaliProgressBarSignals(void)
138 {
139   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
140   tet_infoline(" UtcDaliProgressBarSignals");
141
142   // Create the ProgressBar actor
143   ProgressBar progressBar = ProgressBar::New();
144   Stage::GetCurrent().Add( progressBar );
145   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
146   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
147   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
148   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
149   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
150
151   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
152
153   application.SendNotification();
154   application.Render();
155
156   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
157
158   //Check Secondary progress value can make signal
159   gProgressBarValueChangedCallBackCalled = false;
160   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
161
162   application.SendNotification();
163   application.Render();
164
165   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
166   END_TEST;
167 }
168
169 int UtcDaliProgressBarSetPropertyP(void)
170 {
171   ToolkitTestApplication application;
172   tet_infoline( "UtcDaliProgressBarSetPropertyP" );
173
174   ProgressBar progressBar = ProgressBar::New();
175   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
176   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
177   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
178   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
179   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
180   Stage::GetCurrent().Add(progressBar);
181   application.SendNotification();
182   application.Render();
183
184   Property::Map map;
185   map["visualType"] = "IMAGE";
186   map[Toolkit::ImageVisual::Property::URL] = trackImage;
187   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
188
189   Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
190   Property::Map* resultMap = value.GetMap();
191   DALI_TEST_CHECK( resultMap );
192   Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
193   std::string urlString;
194   urlValue->Get( urlString );
195   DALI_TEST_CHECK( !urlString.empty() ) ;
196   DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
197
198   Property::Map colorMap;
199   colorMap["visualType"] = "COLOR";
200   colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
201   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
202
203   value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
204   resultMap = value.GetMap();
205   DALI_TEST_CHECK( resultMap );
206   Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
207   Vector4 color = Color::TRANSPARENT;
208   colorValue->Get( color );
209   DALI_TEST_CHECK( color != Color::TRANSPARENT );
210   DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
211
212   map[Toolkit::ImageVisual::Property::URL] = progressImage;
213   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
214
215   value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
216   resultMap = value.GetMap();
217   DALI_TEST_CHECK( resultMap );
218   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
219   urlValue->Get( urlString );
220   DALI_TEST_CHECK( !urlString.empty() ) ;
221   DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
222
223   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
224
225   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
226   resultMap = value.GetMap();
227   DALI_TEST_CHECK( resultMap );
228   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
229   urlValue->Get( urlString );
230   DALI_TEST_CHECK( !urlString.empty() ) ;
231   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
232
233   map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
234   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
235
236   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
237   resultMap = value.GetMap();
238   DALI_TEST_CHECK( resultMap );
239   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
240   urlValue->Get( urlString );
241   DALI_TEST_CHECK( !urlString.empty() ) ;
242   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
243
244   map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
245   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
246
247   value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
248   resultMap = value.GetMap();
249   DALI_TEST_CHECK( resultMap );
250   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
251   urlValue->Get( urlString );
252   DALI_TEST_CHECK( !urlString.empty() ) ;
253   DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
254
255   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
256
257   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
258   resultMap = value.GetMap();
259   DALI_TEST_CHECK( resultMap );
260   Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
261
262   std::string textString;
263   textValue->Get( textString );
264   DALI_TEST_CHECK( !textString.empty() );
265   DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
266
267   Property::Map textVisualMap2;
268   textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT );
269   textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
270   textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
271   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
272
273   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
274   resultMap = value.GetMap();
275   DALI_TEST_CHECK( resultMap );
276   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
277
278   textValue->Get( textString );
279   DALI_TEST_CHECK( !textString.empty() );
280   DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
281
282   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
283
284   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
285   resultMap = value.GetMap();
286   DALI_TEST_CHECK( resultMap );
287   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
288
289   std::string textString2;
290   textValue->Get( textString2 );
291   DALI_TEST_CHECK( !textString2.empty() );
292   DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
293
294   Property::Map transitionMap;
295   transitionMap["target"] = "indeterminateVisual";
296   transitionMap["property"] = "offset";
297   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
298   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
299   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
300                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
301   Property::Array array;
302   array.PushBack( transitionMap );
303   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
304
305   Property::Map transitionMap2;
306   transitionMap2["target"] = "indeterminateVisual";
307   transitionMap2["property"] = "offset";
308   transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
309   transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
310   transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
311                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
312   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
313   END_TEST;
314 }
315
316 int UtcDaliProgressBarSetPropertyP1(void)
317 {
318   ToolkitTestApplication application;
319   tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
320
321   ProgressBar progressBar = ProgressBar::New();
322   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
323   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
324   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
325   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
326   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
327
328   Stage::GetCurrent().Add(progressBar);
329   application.SendNotification();
330   application.Render();
331
332   float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
333   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
334
335   // test to download a file of 100k in chunks
336   float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
337
338   while( chunkValue <= upperBound )
339   {
340     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
341     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
342     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
343     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
344     chunkValue = chunkValue + 10;
345   }
346
347   // test to download a file of 1000k in chunks
348   lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
349
350   while( chunkValue <= upperBound )
351   {
352     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
353     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
354     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
355     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
356     chunkValue = chunkValue + 100;
357   }
358
359   val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
360   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
361
362   // test to download a file of 100k in chunks
363   lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
364
365   while( chunkValue <= upperBound )
366   {
367     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
368     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
369     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
370     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
371     chunkValue = chunkValue + 10;
372   }
373
374   // test to download a file of 1000k in chunks
375   lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
376
377   while( chunkValue <= upperBound )
378   {
379     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
380     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
381     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
382     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
383     chunkValue = chunkValue + 100;
384   }
385
386   END_TEST;
387 }
388
389 int UtcDaliProgressBarSetPropertyP2(void)
390 {
391   ToolkitTestApplication application;
392   tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
393
394   ProgressBar progressBar = ProgressBar::New();
395   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
396   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
397   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
398   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
399   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
400   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
401   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
402   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
403   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
404
405   Property::Map transitionMap;
406   transitionMap["target"] = "indeterminateVisual";
407   transitionMap["property"] = "offset";
408   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
409   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
410   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
411                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
412   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
413   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
414   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
415
416   progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
417   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
418   Stage::GetCurrent().Add(progressBar);
419   application.SendNotification();
420   application.Render();
421
422   // Test get/set INDETERMINATE
423   bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
424   DALI_TEST_EQUALS(val, true, TEST_LOCATION);
425
426   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
427   val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
428   DALI_TEST_EQUALS(val, false, TEST_LOCATION);
429
430   END_TEST;
431 }
432
433 int UtcDaliProgressBarSetPropertyP3(void)
434 {
435   ToolkitTestApplication application;
436   tet_infoline( "UtcDaliProgressBarSetPropertyP3" );
437
438   ProgressBar progressBar = ProgressBar::New();
439   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
440   progressBar.SetProperty( Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
441   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, Stage::GetCurrent().GetSize().y ) );
442   Stage::GetCurrent().Add( progressBar );
443   application.SendNotification();
444   application.Render();
445
446   {
447     // Set arc visual to the SECONDARY_PROGRESS_VISUAL
448     const float expected = 180.0f;
449
450     Property::Map map;
451     map["visualType"] = "ARC";
452     map["thickness"] = 4.0f;
453     map["mixColor"] = Color::BLUE;
454     map["sweepAngle"] = 60;
455     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
456     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.5f); // This should change visual's sweep angle.
457
458     Property::Value value = progressBar.GetProperty( ProgressBar::Property::SECONDARY_PROGRESS_VISUAL );
459     Property::Map* resultMap = value.GetMap();
460     DALI_TEST_CHECK( resultMap );
461
462     Property::Value* sweepAngle = resultMap->Find( DevelArcVisual::Property::SWEEP_ANGLE );
463     float result = 0.0f;
464     sweepAngle->Get( result );
465     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
466   }
467
468   {
469     // Set arc visual to the PROGRESS_VISUAL
470     const float expected = 90.0f;
471
472     Property::Map map;
473     map["visualType"] = "ARC";
474     map["thickness"] = 4.0f;
475     map["mixColor"] = Color::RED;
476     map["sweepAngle"] = 60;
477     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
478     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.25f); // This should change visual's sweep angle.
479
480     Property::Value value = progressBar.GetProperty( ProgressBar::Property::PROGRESS_VISUAL );
481     Property::Map* resultMap = value.GetMap();
482     DALI_TEST_CHECK( resultMap );
483
484     Property::Value* sweepAngle = resultMap->Find( DevelArcVisual::Property::SWEEP_ANGLE );
485     float result = 0.0f;
486     sweepAngle->Get( result );
487     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
488   }
489
490   {
491     // Set arc visual to the INDETERMINATE_VISUAL
492     const Vector4 expected = Color::GREEN;
493
494     Property::Map map;
495     map["visualType"] = "ARC";
496     map["thickness"] = 4.0f;
497     map["mixColor"] = expected;
498     progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
499
500     Property::Value value = progressBar.GetProperty( ProgressBar::Property::INDETERMINATE_VISUAL );
501     Property::Map* resultMap = value.GetMap();
502     DALI_TEST_CHECK( resultMap );
503
504     Property::Value* mixColor = resultMap->Find( Visual::Property::MIX_COLOR );
505     Vector4 result;
506     mixColor->Get( result );
507     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
508   }
509
510   {
511     // Set arc visual to the TRACK_VISUAL
512     const Vector4 expected = Color::YELLOW;
513
514     Property::Map map;
515     map["visualType"] = "ARC";
516     map["thickness"] = 0.4f;
517     map["mixColor"] = expected;
518     progressBar.SetProperty( ProgressBar::Property::TRACK_VISUAL, map );
519     progressBar.SetProperty( ProgressBar::Property::INDETERMINATE, true ); // This should not change track visual's properties.
520
521     Property::Value value = progressBar.GetProperty( ProgressBar::Property::TRACK_VISUAL );
522     Property::Map* resultMap = value.GetMap();
523     DALI_TEST_CHECK( resultMap );
524
525     Property::Value* mixColor = resultMap->Find( Visual::Property::MIX_COLOR );
526     Vector4 result;
527     mixColor->Get( result );
528     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
529   }
530
531   END_TEST;
532 }