2 * Copyright (c) 2016 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.h>
21 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
22 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
23 #include <dali-toolkit/public-api/visuals/image-visual-properties.h>
26 using namespace Dali::Toolkit;
27 using Dali::Toolkit::ProgressBar;
30 void utc_dali_toolkit_progressbar_startup(void)
32 test_return_value = TET_UNDEF;
35 void utc_dali_toolkit_progressbar_cleanup(void)
37 test_return_value = TET_PASS;
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;
48 static void TestCallback(BaseHandle handle)
50 gObjectCreatedCallBackCalled = true;
55 int UtcDaliProgressBarNew(void)
57 ToolkitTestApplication application;
58 tet_infoline(" UtcDaliProgressBarNew");
60 // Create the ProgressBar actor
61 ProgressBar progressBar;
63 DALI_TEST_CHECK( !progressBar );
65 progressBar = ProgressBar::New();
67 DALI_TEST_CHECK( progressBar );
69 ProgressBar progressBar2(progressBar);
71 DALI_TEST_CHECK( progressBar2 == progressBar );
73 ProgressBar progressBar3;
74 progressBar3 = progressBar2;
76 DALI_TEST_CHECK( progressBar3 == progressBar2 );
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 );
82 gObjectCreatedCallBackCalled = false;
83 registry.ObjectCreatedSignal().Connect( &TestCallback );
85 ProgressBar progressBar = ProgressBar::New();
87 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
91 int UtcDaliProgressBarDestructor(void)
93 ToolkitTestApplication application;
95 ProgressBar* progressBar = new ProgressBar();
98 DALI_TEST_CHECK( true );
102 int UtcDaliProgressBarDownCast(void)
104 ToolkitTestApplication application;
106 Handle handle = ProgressBar::New();
108 ProgressBar progressBar = ProgressBar::DownCast( handle );
110 DALI_TEST_CHECK( progressBar == handle );
114 static bool gProgressBarValueChangedCallBackCalled = false;
116 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
118 gProgressBarValueChangedCallBackCalled = true;
121 int UtcDaliProgressBarSignals(void)
123 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
124 tet_infoline(" UtcDaliProgressBarSignals");
126 // Create the ProgressBar actor
127 ProgressBar progressBar = ProgressBar::New();
128 Stage::GetCurrent().Add( progressBar );
129 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
130 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
131 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
132 progressBar.SetPosition( 0.0f, 0.0f );
133 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
135 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
137 application.SendNotification();
138 application.Render();
140 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
142 //Check Secondary progress value can make signal
143 gProgressBarValueChangedCallBackCalled = false;
144 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
146 application.SendNotification();
147 application.Render();
149 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
153 int UtcDaliProgressBarSetPropertyP(void)
155 ToolkitTestApplication application;
156 tet_infoline( "UtcDaliProgressBarSetPropertyP" );
158 ProgressBar progressBar = ProgressBar::New();
159 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
160 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
161 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
162 progressBar.SetPosition( 0.0f, 0.0f );
163 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
164 Stage::GetCurrent().Add(progressBar);
165 application.SendNotification();
166 application.Render();
169 map["visualType"] = "IMAGE";
170 map[Toolkit::ImageVisual::Property::URL] = trackImage;
171 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
173 Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
174 Property::Map* resultMap = value.GetMap();
175 DALI_TEST_CHECK( resultMap );
176 Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
177 std::string urlString;
178 urlValue->Get( urlString );
179 DALI_TEST_CHECK( !urlString.empty() ) ;
180 DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
182 Property::Map colorMap;
183 colorMap["visualType"] = "COLOR";
184 colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
185 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
187 value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
188 resultMap = value.GetMap();
189 DALI_TEST_CHECK( resultMap );
190 Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
191 Vector4 color = Color::TRANSPARENT;
192 colorValue->Get( color );
193 DALI_TEST_CHECK( color != Color::TRANSPARENT );
194 DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
196 map[Toolkit::ImageVisual::Property::URL] = progressImage;
197 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
199 value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
200 resultMap = value.GetMap();
201 DALI_TEST_CHECK( resultMap );
202 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
203 urlValue->Get( urlString );
204 DALI_TEST_CHECK( !urlString.empty() ) ;
205 DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
207 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
209 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
210 resultMap = value.GetMap();
211 DALI_TEST_CHECK( resultMap );
212 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
213 urlValue->Get( urlString );
214 DALI_TEST_CHECK( !urlString.empty() ) ;
215 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
217 map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
218 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
220 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
221 resultMap = value.GetMap();
222 DALI_TEST_CHECK( resultMap );
223 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
224 urlValue->Get( urlString );
225 DALI_TEST_CHECK( !urlString.empty() ) ;
226 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
228 map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
229 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
231 value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
232 resultMap = value.GetMap();
233 DALI_TEST_CHECK( resultMap );
234 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
235 urlValue->Get( urlString );
236 DALI_TEST_CHECK( !urlString.empty() ) ;
237 DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
239 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
241 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
242 resultMap = value.GetMap();
243 DALI_TEST_CHECK( resultMap );
244 Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
246 std::string textString;
247 textValue->Get( textString );
248 DALI_TEST_CHECK( !textString.empty() );
249 DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
251 Property::Map textVisualMap2;
252 textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
253 textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
254 textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
255 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
257 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
258 resultMap = value.GetMap();
259 DALI_TEST_CHECK( resultMap );
260 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
262 textValue->Get( textString );
263 DALI_TEST_CHECK( !textString.empty() );
264 DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
266 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
268 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
269 resultMap = value.GetMap();
270 DALI_TEST_CHECK( resultMap );
271 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
273 std::string textString2;
274 textValue->Get( textString2 );
275 DALI_TEST_CHECK( !textString2.empty() );
276 DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
278 Property::Map transitionMap;
279 transitionMap["target"] = "indeterminateVisual";
280 transitionMap["property"] = "offset";
281 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
282 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
283 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
284 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
285 Property::Array array;
286 array.PushBack( transitionMap );
287 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
289 Property::Map transitionMap2;
290 transitionMap2["target"] = "indeterminateVisual";
291 transitionMap2["property"] = "offset";
292 transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
293 transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
294 transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
295 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
296 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
300 int UtcDaliProgressBarSetPropertyP1(void)
302 ToolkitTestApplication application;
303 tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
305 ProgressBar progressBar = ProgressBar::New();
306 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
307 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
308 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
309 progressBar.SetPosition( 0.0f, 0.0f );
310 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
312 Stage::GetCurrent().Add(progressBar);
313 application.SendNotification();
314 application.Render();
316 float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
317 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
319 // test to download a file of 100k in chunks
320 float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
322 while( chunkValue <= upperBound )
324 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
325 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
326 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
327 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
328 chunkValue = chunkValue + 10;
331 // test to download a file of 1000k in chunks
332 lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
334 while( chunkValue <= upperBound )
336 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
337 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
338 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
339 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
340 chunkValue = chunkValue + 100;
343 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
344 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
346 // test to download a file of 100k in chunks
347 lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
349 while( chunkValue <= upperBound )
351 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
352 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
353 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
354 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
355 chunkValue = chunkValue + 10;
358 // test to download a file of 1000k in chunks
359 lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
361 while( chunkValue <= upperBound )
363 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
364 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
365 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
366 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
367 chunkValue = chunkValue + 100;
373 int UtcDaliProgressBarSetPropertyP2(void)
375 ToolkitTestApplication application;
376 tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
378 ProgressBar progressBar = ProgressBar::New();
379 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
380 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
381 progressBar.SetPosition( 0.0f, 0.0f );
382 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
383 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
384 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
385 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
386 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
387 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
389 Property::Map transitionMap;
390 transitionMap["target"] = "indeterminateVisual";
391 transitionMap["property"] = "offset";
392 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
393 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
394 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
395 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
396 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
397 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
398 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
400 progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
401 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
402 Stage::GetCurrent().Add(progressBar);
403 application.SendNotification();
404 application.Render();
406 // Test get/set INDETERMINATE
407 bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
408 DALI_TEST_EQUALS(val, true, TEST_LOCATION);
410 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
411 val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
412 DALI_TEST_EQUALS(val, false, TEST_LOCATION);