Further Setter/Getter public API removal from Dali::Actor
[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/devel-api/actors/actor-devel.h>
21
22 using namespace Dali;
23 using namespace Dali::Toolkit;
24 using Dali::Toolkit::ProgressBar;
25
26
27 void utc_dali_toolkit_progressbar_startup(void)
28 {
29   test_return_value = TET_UNDEF;
30 }
31
32 void utc_dali_toolkit_progressbar_cleanup(void)
33 {
34   test_return_value = TET_PASS;
35 }
36
37 namespace
38 {
39 static const char* trackImage = TEST_RESOURCE_DIR "/progress-bar-skin-track-progress.png";
40 static const char* progressImage = TEST_RESOURCE_DIR "/progress-bar-skin-progress-progress.png";
41 static const char* secondaryProgressImage = TEST_RESOURCE_DIR "/progress-bar-skin-secondary-progress.png";
42 static const char* indeterminateImage = TEST_RESOURCE_DIR "/progress-bar-skin-indeterminate.png";
43 static bool gObjectCreatedCallBackCalled;
44
45 static void TestCallback(BaseHandle handle)
46 {
47   gObjectCreatedCallBackCalled = true;
48 }
49
50 }
51
52 int UtcDaliProgressBarNew(void)
53 {
54   ToolkitTestApplication application;
55   tet_infoline(" UtcDaliProgressBarNew");
56
57   // Create the ProgressBar actor
58   ProgressBar progressBar;
59
60   DALI_TEST_CHECK( !progressBar );
61
62   progressBar = ProgressBar::New();
63
64   DALI_TEST_CHECK( progressBar );
65
66   ProgressBar progressBar2(progressBar);
67
68   DALI_TEST_CHECK( progressBar2 == progressBar );
69
70   ProgressBar progressBar3;
71   progressBar3 = progressBar2;
72
73   DALI_TEST_CHECK( progressBar3 == progressBar2 );
74
75   //Additional check to ensure object is created by checking if it's registered
76   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
77   DALI_TEST_CHECK( registry );
78
79   gObjectCreatedCallBackCalled = false;
80   registry.ObjectCreatedSignal().Connect( &TestCallback );
81   {
82     ProgressBar progressBar = ProgressBar::New();
83   }
84   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
85   END_TEST;
86 }
87
88 int UtcDaliProgressBarDestructor(void)
89 {
90   ToolkitTestApplication application;
91
92   ProgressBar* progressBar = new ProgressBar();
93   delete progressBar;
94
95   DALI_TEST_CHECK( true );
96   END_TEST;
97 }
98
99 int UtcDaliProgressBarDownCast(void)
100 {
101   ToolkitTestApplication application;
102
103   Handle handle = ProgressBar::New();
104
105   ProgressBar progressBar = ProgressBar::DownCast( handle );
106
107   DALI_TEST_CHECK( progressBar == handle );
108   END_TEST;
109 }
110
111 static bool gProgressBarValueChangedCallBackCalled = false;
112
113 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
114 {
115   gProgressBarValueChangedCallBackCalled = true;
116 }
117
118 int UtcDaliProgressBarSignals(void)
119 {
120   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
121   tet_infoline(" UtcDaliProgressBarSignals");
122
123   // Create the ProgressBar actor
124   ProgressBar progressBar = ProgressBar::New();
125   Stage::GetCurrent().Add( progressBar );
126   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
127   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
128   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
129   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
130   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
131
132   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
133
134   application.SendNotification();
135   application.Render();
136
137   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
138
139   //Check Secondary progress value can make signal
140   gProgressBarValueChangedCallBackCalled = false;
141   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
142
143   application.SendNotification();
144   application.Render();
145
146   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
147   END_TEST;
148 }
149
150 int UtcDaliProgressBarSetPropertyP(void)
151 {
152   ToolkitTestApplication application;
153   tet_infoline( "UtcDaliProgressBarSetPropertyP" );
154
155   ProgressBar progressBar = ProgressBar::New();
156   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
157   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
158   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
159   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
160   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
161   Stage::GetCurrent().Add(progressBar);
162   application.SendNotification();
163   application.Render();
164
165   Property::Map map;
166   map["visualType"] = "IMAGE";
167   map[Toolkit::ImageVisual::Property::URL] = trackImage;
168   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
169
170   Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
171   Property::Map* resultMap = value.GetMap();
172   DALI_TEST_CHECK( resultMap );
173   Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
174   std::string urlString;
175   urlValue->Get( urlString );
176   DALI_TEST_CHECK( !urlString.empty() ) ;
177   DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
178
179   Property::Map colorMap;
180   colorMap["visualType"] = "COLOR";
181   colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
182   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
183
184   value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
185   resultMap = value.GetMap();
186   DALI_TEST_CHECK( resultMap );
187   Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
188   Vector4 color = Color::TRANSPARENT;
189   colorValue->Get( color );
190   DALI_TEST_CHECK( color != Color::TRANSPARENT );
191   DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
192
193   map[Toolkit::ImageVisual::Property::URL] = progressImage;
194   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
195
196   value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
197   resultMap = value.GetMap();
198   DALI_TEST_CHECK( resultMap );
199   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
200   urlValue->Get( urlString );
201   DALI_TEST_CHECK( !urlString.empty() ) ;
202   DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
203
204   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
205
206   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
207   resultMap = value.GetMap();
208   DALI_TEST_CHECK( resultMap );
209   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
210   urlValue->Get( urlString );
211   DALI_TEST_CHECK( !urlString.empty() ) ;
212   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
213
214   map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
215   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
216
217   value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
218   resultMap = value.GetMap();
219   DALI_TEST_CHECK( resultMap );
220   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
221   urlValue->Get( urlString );
222   DALI_TEST_CHECK( !urlString.empty() ) ;
223   DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
224
225   map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
226   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
227
228   value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
229   resultMap = value.GetMap();
230   DALI_TEST_CHECK( resultMap );
231   urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
232   urlValue->Get( urlString );
233   DALI_TEST_CHECK( !urlString.empty() ) ;
234   DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
235
236   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
237
238   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
239   resultMap = value.GetMap();
240   DALI_TEST_CHECK( resultMap );
241   Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
242
243   std::string textString;
244   textValue->Get( textString );
245   DALI_TEST_CHECK( !textString.empty() );
246   DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
247
248   Property::Map textVisualMap2;
249   textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT );
250   textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
251   textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
252   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
253
254   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
255   resultMap = value.GetMap();
256   DALI_TEST_CHECK( resultMap );
257   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
258
259   textValue->Get( textString );
260   DALI_TEST_CHECK( !textString.empty() );
261   DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
262
263   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
264
265   value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
266   resultMap = value.GetMap();
267   DALI_TEST_CHECK( resultMap );
268   textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
269
270   std::string textString2;
271   textValue->Get( textString2 );
272   DALI_TEST_CHECK( !textString2.empty() );
273   DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
274
275   Property::Map transitionMap;
276   transitionMap["target"] = "indeterminateVisual";
277   transitionMap["property"] = "offset";
278   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
279   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
280   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
281                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
282   Property::Array array;
283   array.PushBack( transitionMap );
284   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
285
286   Property::Map transitionMap2;
287   transitionMap2["target"] = "indeterminateVisual";
288   transitionMap2["property"] = "offset";
289   transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
290   transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
291   transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
292                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
293   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
294   END_TEST;
295 }
296
297 int UtcDaliProgressBarSetPropertyP1(void)
298 {
299   ToolkitTestApplication application;
300   tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
301
302   ProgressBar progressBar = ProgressBar::New();
303   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
304   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
305   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
306   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
307   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
308
309   Stage::GetCurrent().Add(progressBar);
310   application.SendNotification();
311   application.Render();
312
313   float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
314   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
315
316   // test to download a file of 100k in chunks
317   float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
318
319   while( chunkValue <= upperBound )
320   {
321     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
322     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
323     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
324     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
325     chunkValue = chunkValue + 10;
326   }
327
328   // test to download a file of 1000k in chunks
329   lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
330
331   while( chunkValue <= upperBound )
332   {
333     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
334     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
335     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
336     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
337     chunkValue = chunkValue + 100;
338   }
339
340   val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
341   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
342
343   // test to download a file of 100k in chunks
344   lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
345
346   while( chunkValue <= upperBound )
347   {
348     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
349     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
350     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
351     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
352     chunkValue = chunkValue + 10;
353   }
354
355   // test to download a file of 1000k in chunks
356   lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
357
358   while( chunkValue <= upperBound )
359   {
360     secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
361     progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
362     val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
363     DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
364     chunkValue = chunkValue + 100;
365   }
366
367   END_TEST;
368 }
369
370 int UtcDaliProgressBarSetPropertyP2(void)
371 {
372   ToolkitTestApplication application;
373   tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
374
375   ProgressBar progressBar = ProgressBar::New();
376   progressBar.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
377   progressBar.SetProperty( Actor::Property::ANCHOR_POINT,ParentOrigin::TOP_LEFT);
378   progressBar.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f ));
379   progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
380   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
381   progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
382   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
383   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
384   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
385
386   Property::Map transitionMap;
387   transitionMap["target"] = "indeterminateVisual";
388   transitionMap["property"] = "offset";
389   transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
390   transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
391   transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
392                                              .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
393   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
394   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
395   progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
396
397   progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
398   progressBar.SetProperty( Actor::Property::SIZE, Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
399   Stage::GetCurrent().Add(progressBar);
400   application.SendNotification();
401   application.Render();
402
403   // Test get/set INDETERMINATE
404   bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
405   DALI_TEST_EQUALS(val, true, TEST_LOCATION);
406
407   progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
408   val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
409   DALI_TEST_EQUALS(val, false, TEST_LOCATION);
410
411   END_TEST;
412 }