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>
20 #include <dali/devel-api/actors/actor-devel.h>
23 using namespace Dali::Toolkit;
24 using Dali::Toolkit::ProgressBar;
27 void utc_dali_toolkit_progressbar_startup(void)
29 test_return_value = TET_UNDEF;
32 void utc_dali_toolkit_progressbar_cleanup(void)
34 test_return_value = TET_PASS;
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;
45 static void TestCallback(BaseHandle handle)
47 gObjectCreatedCallBackCalled = true;
52 int UtcDaliProgressBarNew(void)
54 ToolkitTestApplication application;
55 tet_infoline(" UtcDaliProgressBarNew");
57 // Create the ProgressBar actor
58 ProgressBar progressBar;
60 DALI_TEST_CHECK( !progressBar );
62 progressBar = ProgressBar::New();
64 DALI_TEST_CHECK( progressBar );
66 ProgressBar progressBar2(progressBar);
68 DALI_TEST_CHECK( progressBar2 == progressBar );
70 ProgressBar progressBar3;
71 progressBar3 = progressBar2;
73 DALI_TEST_CHECK( progressBar3 == progressBar2 );
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 );
79 gObjectCreatedCallBackCalled = false;
80 registry.ObjectCreatedSignal().Connect( &TestCallback );
82 ProgressBar progressBar = ProgressBar::New();
84 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
88 int UtcDaliProgressBarDestructor(void)
90 ToolkitTestApplication application;
92 ProgressBar* progressBar = new ProgressBar();
95 DALI_TEST_CHECK( true );
99 int UtcDaliProgressBarDownCast(void)
101 ToolkitTestApplication application;
103 Handle handle = ProgressBar::New();
105 ProgressBar progressBar = ProgressBar::DownCast( handle );
107 DALI_TEST_CHECK( progressBar == handle );
111 static bool gProgressBarValueChangedCallBackCalled = false;
113 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
115 gProgressBarValueChangedCallBackCalled = true;
118 int UtcDaliProgressBarSignals(void)
120 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
121 tet_infoline(" UtcDaliProgressBarSignals");
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.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
129 progressBar.SetPosition( 0.0f, 0.0f );
130 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
132 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
134 application.SendNotification();
135 application.Render();
137 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
139 //Check Secondary progress value can make signal
140 gProgressBarValueChangedCallBackCalled = false;
141 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
143 application.SendNotification();
144 application.Render();
146 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
150 int UtcDaliProgressBarSetPropertyP(void)
152 ToolkitTestApplication application;
153 tet_infoline( "UtcDaliProgressBarSetPropertyP" );
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.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
159 progressBar.SetPosition( 0.0f, 0.0f );
160 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
161 Stage::GetCurrent().Add(progressBar);
162 application.SendNotification();
163 application.Render();
166 map["visualType"] = "IMAGE";
167 map[Toolkit::ImageVisual::Property::URL] = trackImage;
168 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
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 );
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);
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 );
193 map[Toolkit::ImageVisual::Property::URL] = progressImage;
194 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
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 );
204 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
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 );
214 map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
215 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
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 );
225 map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
226 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
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 );
236 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
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);
243 std::string textString;
244 textValue->Get( textString );
245 DALI_TEST_CHECK( !textString.empty() );
246 DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
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);
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);
259 textValue->Get( textString );
260 DALI_TEST_CHECK( !textString.empty() );
261 DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
263 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
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);
270 std::string textString2;
271 textValue->Get( textString2 );
272 DALI_TEST_CHECK( !textString2.empty() );
273 DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
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);
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);
297 int UtcDaliProgressBarSetPropertyP1(void)
299 ToolkitTestApplication application;
300 tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
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.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
306 progressBar.SetPosition( 0.0f, 0.0f );
307 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
309 Stage::GetCurrent().Add(progressBar);
310 application.SendNotification();
311 application.Render();
313 float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
314 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
316 // test to download a file of 100k in chunks
317 float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
319 while( chunkValue <= upperBound )
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;
328 // test to download a file of 1000k in chunks
329 lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
331 while( chunkValue <= upperBound )
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;
340 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
341 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
343 // test to download a file of 100k in chunks
344 lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
346 while( chunkValue <= upperBound )
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;
355 // test to download a file of 1000k in chunks
356 lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
358 while( chunkValue <= upperBound )
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;
370 int UtcDaliProgressBarSetPropertyP2(void)
372 ToolkitTestApplication application;
373 tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
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.SetPosition( 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);
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);
397 progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
398 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
399 Stage::GetCurrent().Add(progressBar);
400 application.SendNotification();
401 application.Render();
403 // Test get/set INDETERMINATE
404 bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
405 DALI_TEST_EQUALS(val, true, TEST_LOCATION);
407 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
408 val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
409 DALI_TEST_EQUALS(val, false, TEST_LOCATION);