[dali_2.0.15] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ProgressBar.cpp
1 /*
2  * Copyright (c) 2020 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 = application.GetCore().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 UtcDaliProgressBarCopyConstructor(void)
119 {
120   ToolkitTestApplication application;
121
122   ProgressBar progressBar = ProgressBar::New();
123   DALI_TEST_CHECK( progressBar );
124
125   ProgressBar copy( progressBar );
126   DALI_TEST_CHECK( copy );
127
128   END_TEST;
129 }
130
131 int UtcDaliProgressBarCopyAssignment(void)
132 {
133   ToolkitTestApplication application;
134
135   ProgressBar progressBar = ProgressBar::New();
136   DALI_TEST_CHECK( progressBar );
137
138   ProgressBar copy;
139   copy = progressBar;
140   DALI_TEST_CHECK( copy );
141   DALI_TEST_EQUALS( progressBar, copy, TEST_LOCATION );
142
143   END_TEST;
144 }
145
146 int UtcDaliProgressBarMoveConstructor(void)
147 {
148   ToolkitTestApplication application;
149
150   ProgressBar progressBar = ProgressBar::New();
151   DALI_TEST_EQUALS( 1, progressBar.GetBaseObject().ReferenceCount(), TEST_LOCATION );
152   progressBar.SetProperty( Actor::Property::SENSITIVE, false );
153   DALI_TEST_CHECK( false == progressBar.GetProperty< bool >( Actor::Property::SENSITIVE ) );
154
155   ProgressBar moved = std::move( progressBar );
156   DALI_TEST_CHECK( moved );
157   DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
158   DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) );
159   DALI_TEST_CHECK( !progressBar );
160
161   END_TEST;
162 }
163
164 int UtcDaliProgressBarMoveAssignment(void)
165 {
166   ToolkitTestApplication application;
167
168   ProgressBar progressBar = ProgressBar::New();
169   DALI_TEST_EQUALS( 1, progressBar.GetBaseObject().ReferenceCount(), TEST_LOCATION );
170   progressBar.SetProperty( Actor::Property::SENSITIVE, false );
171   DALI_TEST_CHECK( false == progressBar.GetProperty< bool >( Actor::Property::SENSITIVE ) );
172
173   ProgressBar moved;
174   moved = std::move( progressBar );
175   DALI_TEST_CHECK( moved );
176   DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
177   DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) );
178   DALI_TEST_CHECK( !progressBar );
179
180   END_TEST;
181 }
182
183 int UtcDaliProgressBarDownCast(void)
184 {
185   ToolkitTestApplication application;
186
187   Handle handle = ProgressBar::New();
188
189   ProgressBar progressBar = ProgressBar::DownCast( handle );
190
191   DALI_TEST_CHECK( progressBar == handle );
192   END_TEST;
193 }
194
195 static bool gProgressBarValueChangedCallBackCalled = false;
196
197 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
198 {
199   gProgressBarValueChangedCallBackCalled = true;
200 }
201
202 int UtcDaliProgressBarSignals(void)
203 {
204   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
205   tet_infoline(" UtcDaliProgressBarSignals");
206
207   // Create the ProgressBar actor
208   ProgressBar progressBar = ProgressBar::New();
209   application.GetScene().Add( progressBar );
210   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
211   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
212   progressBar.SetProperty( Actor::Property::SIZE, Vector2( application.GetScene().GetSize().x, 20.0f ) );
213   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
214   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
215
216   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
217
218   application.SendNotification();
219   application.Render();
220
221   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
222
223   //Check Secondary progress value can make signal
224   gProgressBarValueChangedCallBackCalled = false;
225   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
226
227   application.SendNotification();
228   application.Render();
229
230   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
231   END_TEST;
232 }
233
234 int UtcDaliProgressBarSetPropertyP(void)
235 {
236   ToolkitTestApplication application;
237   tet_infoline( "UtcDaliProgressBarSetPropertyP" );
238
239   ProgressBar progressBar = ProgressBar::New();
240   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
241   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
242   progressBar.SetProperty( Actor::Property::SIZE, Vector2( application.GetScene().GetSize().x, 20.0f ) );
243   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
244   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
245   application.GetScene().Add(progressBar);
246   application.SendNotification();
247   application.Render();
248
249   Property::Map map;
250   map["visualType"] = "IMAGE";
251   map[Toolkit::ImageVisual::Property::URL] = trackImage;
252   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
253
254   Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
255   Property::Map* resultMap = value.GetMap();
256   DALI_TEST_CHECK( resultMap );
257   Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
258   std::string urlString;
259   urlValue->Get( urlString );
260   DALI_TEST_CHECK( !urlString.empty() ) ;
261   DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
262
263   Property::Map colorMap;
264   colorMap["visualType"] = "COLOR";
265   colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
266   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
267
268   value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
269   resultMap = value.GetMap();
270   DALI_TEST_CHECK( resultMap );
271   Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
272   Vector4 color = Color::TRANSPARENT;
273   colorValue->Get( color );
274   DALI_TEST_CHECK( color != Color::TRANSPARENT );
275   DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
276
277   map[Toolkit::ImageVisual::Property::URL] = progressImage;
278   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
279
280   value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
281   resultMap = value.GetMap();
282   DALI_TEST_CHECK( resultMap );
283   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
284   urlValue->Get( urlString );
285   DALI_TEST_CHECK( !urlString.empty() ) ;
286   DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
287
288   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
289
290   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
291   resultMap = value.GetMap();
292   DALI_TEST_CHECK( resultMap );
293   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
294   urlValue->Get( urlString );
295   DALI_TEST_CHECK( !urlString.empty() ) ;
296   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
297
298   map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
299   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
300
301   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
302   resultMap = value.GetMap();
303   DALI_TEST_CHECK( resultMap );
304   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
305   urlValue->Get( urlString );
306   DALI_TEST_CHECK( !urlString.empty() ) ;
307   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
308
309   map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
310   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
311
312   value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
313   resultMap = value.GetMap();
314   DALI_TEST_CHECK( resultMap );
315   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
316   urlValue->Get( urlString );
317   DALI_TEST_CHECK( !urlString.empty() ) ;
318   DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
319
320   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
321
322   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
323   resultMap = value.GetMap();
324   DALI_TEST_CHECK( resultMap );
325   Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
326
327   std::string textString;
328   textValue->Get( textString );
329   DALI_TEST_CHECK( !textString.empty() );
330   DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
331
332   Property::Map textVisualMap2;
333   textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT );
334   textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
335   textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
336   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
337
338   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
339   resultMap = value.GetMap();
340   DALI_TEST_CHECK( resultMap );
341   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
342
343   textValue->Get( textString );
344   DALI_TEST_CHECK( !textString.empty() );
345   DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
346
347   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
348
349   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
350   resultMap = value.GetMap();
351   DALI_TEST_CHECK( resultMap );
352   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
353
354   std::string textString2;
355   textValue->Get( textString2 );
356   DALI_TEST_CHECK( !textString2.empty() );
357   DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
358
359   Property::Map transitionMap;
360   transitionMap["target"] = "indeterminateVisual";
361   transitionMap["property"] = "offset";
362   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
363   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
364   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
365                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
366   Property::Array array;
367   array.PushBack( transitionMap );
368   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
369
370   Property::Map transitionMap2;
371   transitionMap2["target"] = "indeterminateVisual";
372   transitionMap2["property"] = "offset";
373   transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
374   transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
375   transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
376                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
377   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
378   END_TEST;
379 }
380
381 int UtcDaliProgressBarSetPropertyP1(void)
382 {
383   ToolkitTestApplication application;
384   tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
385
386   ProgressBar progressBar = ProgressBar::New();
387   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
388   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
389   progressBar.SetProperty( Actor::Property::SIZE, Vector2( application.GetScene().GetSize().x, 20.0f ) );
390   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
391   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
392
393   application.GetScene().Add(progressBar);
394   application.SendNotification();
395   application.Render();
396
397   float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
398   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
399
400   // test to download a file of 100k in chunks
401   float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
402
403   while( chunkValue <= upperBound )
404   {
405     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
406     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
407     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
408     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
409     chunkValue = chunkValue + 10;
410   }
411
412   // test to download a file of 1000k in chunks
413   lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
414
415   while( chunkValue <= upperBound )
416   {
417     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
418     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
419     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
420     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
421     chunkValue = chunkValue + 100;
422   }
423
424   val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
425   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
426
427   // test to download a file of 100k in chunks
428   lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
429
430   while( chunkValue <= upperBound )
431   {
432     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
433     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
434     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
435     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
436     chunkValue = chunkValue + 10;
437   }
438
439   // test to download a file of 1000k in chunks
440   lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
441
442   while( chunkValue <= upperBound )
443   {
444     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
445     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
446     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
447     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
448     chunkValue = chunkValue + 100;
449   }
450
451   END_TEST;
452 }
453
454 int UtcDaliProgressBarSetPropertyP2(void)
455 {
456   ToolkitTestApplication application;
457   tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
458
459   ProgressBar progressBar = ProgressBar::New();
460   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
461   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
462   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
463   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
464   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
465   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
466   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
467   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
468   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
469
470   Property::Map transitionMap;
471   transitionMap["target"] = "indeterminateVisual";
472   transitionMap["property"] = "offset";
473   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
474   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
475   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
476                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
477   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
478   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
479   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
480
481   progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
482   progressBar.SetProperty( Actor::Property::SIZE, Vector2( application.GetScene().GetSize().x, 20.0f ) );
483   application.GetScene().Add(progressBar);
484   application.SendNotification();
485   application.Render();
486
487   // Test get/set INDETERMINATE
488   bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
489   DALI_TEST_EQUALS(val, true, TEST_LOCATION);
490
491   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
492   val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
493   DALI_TEST_EQUALS(val, false, TEST_LOCATION);
494
495   END_TEST;
496 }
497
498 int UtcDaliProgressBarSetPropertyP3(void)
499 {
500   ToolkitTestApplication application;
501   tet_infoline( "UtcDaliProgressBarSetPropertyP3" );
502
503   ProgressBar progressBar = ProgressBar::New();
504   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
505   progressBar.SetProperty( Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
506   progressBar.SetProperty( Actor::Property::SIZE, Vector2( application.GetScene().GetSize().x, application.GetScene().GetSize().y ) );
507   application.GetScene().Add( progressBar );
508   application.SendNotification();
509   application.Render();
510
511   {
512     // Set arc visual to the SECONDARY_PROGRESS_VISUAL
513     const float expected = 180.0f;
514
515     Property::Map map;
516     map["visualType"] = "ARC";
517     map["thickness"] = 4.0f;
518     map["mixColor"] = Color::BLUE;
519     map["sweepAngle"] = 60;
520     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
521     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.5f); // This should change visual's sweep angle.
522
523     Property::Value value = progressBar.GetProperty( ProgressBar::Property::SECONDARY_PROGRESS_VISUAL );
524     Property::Map* resultMap = value.GetMap();
525     DALI_TEST_CHECK( resultMap );
526
527     Property::Value* sweepAngle = resultMap->Find( DevelArcVisual::Property::SWEEP_ANGLE );
528     float result = 0.0f;
529     sweepAngle->Get( result );
530     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
531   }
532
533   {
534     // Set arc visual to the PROGRESS_VISUAL
535     const float expected = 90.0f;
536
537     Property::Map map;
538     map["visualType"] = "ARC";
539     map["thickness"] = 4.0f;
540     map["mixColor"] = Color::RED;
541     map["sweepAngle"] = 60;
542     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
543     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.25f); // This should change visual's sweep angle.
544
545     Property::Value value = progressBar.GetProperty( ProgressBar::Property::PROGRESS_VISUAL );
546     Property::Map* resultMap = value.GetMap();
547     DALI_TEST_CHECK( resultMap );
548
549     Property::Value* sweepAngle = resultMap->Find( DevelArcVisual::Property::SWEEP_ANGLE );
550     float result = 0.0f;
551     sweepAngle->Get( result );
552     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
553   }
554
555   {
556     // Set arc visual to the INDETERMINATE_VISUAL
557     const Vector4 expected = Color::GREEN;
558
559     Property::Map map;
560     map["visualType"] = "ARC";
561     map["thickness"] = 4.0f;
562     map["mixColor"] = expected;
563     progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
564
565     Property::Value value = progressBar.GetProperty( ProgressBar::Property::INDETERMINATE_VISUAL );
566     Property::Map* resultMap = value.GetMap();
567     DALI_TEST_CHECK( resultMap );
568
569     Property::Value* mixColor = resultMap->Find( Visual::Property::MIX_COLOR );
570     Vector4 result;
571     mixColor->Get( result );
572     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
573   }
574
575   {
576     // Set arc visual to the TRACK_VISUAL
577     const Vector4 expected = Color::YELLOW;
578
579     Property::Map map;
580     map["visualType"] = "ARC";
581     map["thickness"] = 0.4f;
582     map["mixColor"] = expected;
583     progressBar.SetProperty( ProgressBar::Property::TRACK_VISUAL, map );
584     progressBar.SetProperty( ProgressBar::Property::INDETERMINATE, true ); // This should not change track visual's properties.
585
586     Property::Value value = progressBar.GetProperty( ProgressBar::Property::TRACK_VISUAL );
587     Property::Map* resultMap = value.GetMap();
588     DALI_TEST_CHECK( resultMap );
589
590     Property::Value* mixColor = resultMap->Find( Visual::Property::MIX_COLOR );
591     Vector4 result;
592     mixColor->Get( result );
593     DALI_TEST_EQUALS( result, expected, TEST_LOCATION );
594   }
595
596   END_TEST;
597 }