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-toolkit/devel-api/visuals/text-visual-properties.h>
21 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
22 #include <dali-toolkit/public-api/visuals/image-visual-properties.h>
25 using namespace Dali::Toolkit;
26 using Dali::Toolkit::ProgressBar;
29 void utc_dali_toolkit_progressbar_startup(void)
31 test_return_value = TET_UNDEF;
34 void utc_dali_toolkit_progressbar_cleanup(void)
36 test_return_value = TET_PASS;
41 static const char* trackImage = TEST_RESOURCE_DIR "/progress-bar-skin-track-progress.png";
42 static const char* progressImage = TEST_RESOURCE_DIR "/progress-bar-skin-progress-progress.png";
43 static const char* secondaryProgressImage = TEST_RESOURCE_DIR "/progress-bar-skin-secondary-progress.png";
44 static const char* indeterminateImage = TEST_RESOURCE_DIR "/progress-bar-skin-indeterminate.png";
45 static bool gObjectCreatedCallBackCalled;
47 static void TestCallback(BaseHandle handle)
49 gObjectCreatedCallBackCalled = true;
54 int UtcDaliProgressBarNew(void)
56 ToolkitTestApplication application;
57 tet_infoline(" UtcDaliProgressBarNew");
59 // Create the ProgressBar actor
60 ProgressBar progressBar;
62 DALI_TEST_CHECK( !progressBar );
64 progressBar = ProgressBar::New();
66 DALI_TEST_CHECK( progressBar );
68 ProgressBar progressBar2(progressBar);
70 DALI_TEST_CHECK( progressBar2 == progressBar );
72 ProgressBar progressBar3;
73 progressBar3 = progressBar2;
75 DALI_TEST_CHECK( progressBar3 == progressBar2 );
77 //Additional check to ensure object is created by checking if it's registered
78 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
79 DALI_TEST_CHECK( registry );
81 gObjectCreatedCallBackCalled = false;
82 registry.ObjectCreatedSignal().Connect( &TestCallback );
84 ProgressBar progressBar = ProgressBar::New();
86 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
90 int UtcDaliProgressBarDestructor(void)
92 ToolkitTestApplication application;
94 ProgressBar* progressBar = new ProgressBar();
97 DALI_TEST_CHECK( true );
101 int UtcDaliProgressBarDownCast(void)
103 ToolkitTestApplication application;
105 Handle handle = ProgressBar::New();
107 ProgressBar progressBar = ProgressBar::DownCast( handle );
109 DALI_TEST_CHECK( progressBar == handle );
113 static bool gProgressBarValueChangedCallBackCalled = false;
115 static void OnProgressBarValueChanged( ProgressBar progressBar, float value, float secondaryValue )
117 gProgressBarValueChangedCallBackCalled = true;
120 int UtcDaliProgressBarSignals(void)
122 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
123 tet_infoline(" UtcDaliProgressBarSignals");
125 // Create the ProgressBar actor
126 ProgressBar progressBar = ProgressBar::New();
127 Stage::GetCurrent().Add( progressBar );
128 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
129 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
130 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
131 progressBar.SetPosition( 0.0f, 0.0f );
132 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
134 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
136 application.SendNotification();
137 application.Render();
139 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
141 //Check Secondary progress value can make signal
142 gProgressBarValueChangedCallBackCalled = false;
143 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.2f);
145 application.SendNotification();
146 application.Render();
148 DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
152 int UtcDaliProgressBarSetPropertyP(void)
154 ToolkitTestApplication application;
155 tet_infoline( "UtcDaliProgressBarSetPropertyP" );
157 ProgressBar progressBar = ProgressBar::New();
158 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
159 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
160 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
161 progressBar.SetPosition( 0.0f, 0.0f );
162 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
163 Stage::GetCurrent().Add(progressBar);
164 application.SendNotification();
165 application.Render();
168 map["visualType"] = "IMAGE";
169 map[Toolkit::ImageVisual::Property::URL] = trackImage;
170 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
172 Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
173 Property::Map* resultMap = value.GetMap();
174 DALI_TEST_CHECK( resultMap );
175 Property::Value* urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
176 std::string urlString;
177 urlValue->Get( urlString );
178 DALI_TEST_CHECK( !urlString.empty() ) ;
179 DALI_TEST_EQUALS( urlString, trackImage, TEST_LOCATION );
181 Property::Map colorMap;
182 colorMap["visualType"] = "COLOR";
183 colorMap[Toolkit::ColorVisual::Property::MIX_COLOR] = Color::RED;
184 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, colorMap);
186 value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
187 resultMap = value.GetMap();
188 DALI_TEST_CHECK( resultMap );
189 Property::Value* colorValue = resultMap->Find( Toolkit::ColorVisual::Property::MIX_COLOR );
190 Vector4 color = Color::TRANSPARENT;
191 colorValue->Get( color );
192 DALI_TEST_CHECK( color != Color::TRANSPARENT );
193 DALI_TEST_EQUALS( color, Color::RED, TEST_LOCATION );
195 map[Toolkit::ImageVisual::Property::URL] = progressImage;
196 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
198 value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
199 resultMap = value.GetMap();
200 DALI_TEST_CHECK( resultMap );
201 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
202 urlValue->Get( urlString );
203 DALI_TEST_CHECK( !urlString.empty() ) ;
204 DALI_TEST_EQUALS( urlString, progressImage, TEST_LOCATION );
206 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
208 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
209 resultMap = value.GetMap();
210 DALI_TEST_CHECK( resultMap );
211 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
212 urlValue->Get( urlString );
213 DALI_TEST_CHECK( !urlString.empty() ) ;
214 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
216 map[Toolkit::ImageVisual::Property::URL] = secondaryProgressImage;
217 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, map);
219 value = progressBar.GetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL);
220 resultMap = value.GetMap();
221 DALI_TEST_CHECK( resultMap );
222 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
223 urlValue->Get( urlString );
224 DALI_TEST_CHECK( !urlString.empty() ) ;
225 DALI_TEST_EQUALS( urlString, secondaryProgressImage, TEST_LOCATION );
227 map[Toolkit::ImageVisual::Property::URL] = indeterminateImage;
228 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, map);
230 value = progressBar.GetProperty(ProgressBar::Property::INDETERMINATE_VISUAL);
231 resultMap = value.GetMap();
232 DALI_TEST_CHECK( resultMap );
233 urlValue = resultMap->Find( Toolkit::ImageVisual::Property::URL );
234 urlValue->Get( urlString );
235 DALI_TEST_CHECK( !urlString.empty() ) ;
236 DALI_TEST_EQUALS( urlString, indeterminateImage, TEST_LOCATION );
238 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test1");
240 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
241 resultMap = value.GetMap();
242 DALI_TEST_CHECK( resultMap );
243 Property::Value* textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
245 std::string textString;
246 textValue->Get( textString );
247 DALI_TEST_CHECK( !textString.empty() );
248 DALI_TEST_EQUALS( textString, std::string( "test1" ), TEST_LOCATION );
250 Property::Map textVisualMap2;
251 textVisualMap2.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
252 textVisualMap2.Insert( Toolkit::TextVisual::Property::TEXT, "test2" );
253 textVisualMap2.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 12.0f );
254 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, textVisualMap2);
256 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
257 resultMap = value.GetMap();
258 DALI_TEST_CHECK( resultMap );
259 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
261 textValue->Get( textString );
262 DALI_TEST_CHECK( !textString.empty() );
263 DALI_TEST_EQUALS( textString, std::string( "test2" ), TEST_LOCATION );
265 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test3");
267 value = progressBar.GetProperty(ProgressBar::Property::LABEL_VISUAL);
268 resultMap = value.GetMap();
269 DALI_TEST_CHECK( resultMap );
270 textValue = resultMap->Find(Toolkit::TextVisual::Property::TEXT);
272 std::string textString2;
273 textValue->Get( textString2 );
274 DALI_TEST_CHECK( !textString2.empty() );
275 DALI_TEST_EQUALS( textString2, std::string( "test3" ), TEST_LOCATION );
277 Property::Map transitionMap;
278 transitionMap["target"] = "indeterminateVisual";
279 transitionMap["property"] = "offset";
280 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
281 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
282 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
283 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
284 Property::Array array;
285 array.PushBack( transitionMap );
286 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, array);
288 Property::Map transitionMap2;
289 transitionMap2["target"] = "indeterminateVisual";
290 transitionMap2["property"] = "offset";
291 transitionMap2["initialValue"] = Vector2( 0.0f, 0.0f );
292 transitionMap2["targetValue"] = Vector2( 15.0f, 0.0f );
293 transitionMap2["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
294 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
295 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap2);
299 int UtcDaliProgressBarSetPropertyP1(void)
301 ToolkitTestApplication application;
302 tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
304 ProgressBar progressBar = ProgressBar::New();
305 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
306 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
307 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
308 progressBar.SetPosition( 0.0f, 0.0f );
309 progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
311 Stage::GetCurrent().Add(progressBar);
312 application.SendNotification();
313 application.Render();
315 float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
316 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
318 // test to download a file of 100k in chunks
319 float lowerBound = 0, upperBound = 100, progressValue = 0, secondaryProgressValue = 0, chunkValue = 0;
321 while( chunkValue <= upperBound )
323 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
324 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
325 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
326 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
327 chunkValue = chunkValue + 10;
330 // test to download a file of 1000k in chunks
331 lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
333 while( chunkValue <= upperBound )
335 progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
336 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
337 val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
338 DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
339 chunkValue = chunkValue + 100;
342 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
343 DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
345 // test to download a file of 100k in chunks
346 lowerBound = 0, upperBound = 100, secondaryProgressValue = 0, chunkValue = 0;
348 while( chunkValue <= upperBound )
350 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
351 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
352 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
353 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
354 chunkValue = chunkValue + 10;
357 // test to download a file of 1000k in chunks
358 lowerBound = 0, upperBound = 1000, secondaryProgressValue = 0, chunkValue = 0;
360 while( chunkValue <= upperBound )
362 secondaryProgressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
363 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, secondaryProgressValue);
364 val = progressBar.GetProperty<float>(ProgressBar::Property::SECONDARY_PROGRESS_VALUE);
365 DALI_TEST_EQUALS(val, secondaryProgressValue, TEST_LOCATION);
366 chunkValue = chunkValue + 100;
372 int UtcDaliProgressBarSetPropertyP2(void)
374 ToolkitTestApplication application;
375 tet_infoline( "UtcDaliProgressBarSetPropertyP2" );
377 ProgressBar progressBar = ProgressBar::New();
378 progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
379 progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
380 progressBar.SetPosition( 0.0f, 0.0f );
381 progressBar.SetProperty(ProgressBar::Property::LABEL_VISUAL, "test");
382 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, true);
383 progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, trackImage);
384 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, progressImage);
385 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VISUAL, secondaryProgressImage);
386 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL, indeterminateImage);
388 Property::Map transitionMap;
389 transitionMap["target"] = "indeterminateVisual";
390 transitionMap["property"] = "offset";
391 transitionMap["initialValue"] = Vector2( 0.0f, 0.0f );
392 transitionMap["targetValue"] = Vector2( 10.0f, 0.0f );
393 transitionMap["animator"] = Property::Map().Add("alphaFunction", "EASE_IN_OUT_BACK")
394 .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f));
395 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE_VISUAL_ANIMATION, transitionMap);
396 progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
397 progressBar.SetProperty(ProgressBar::Property::SECONDARY_PROGRESS_VALUE, 0.3f);
399 progressBar.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
400 progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
401 Stage::GetCurrent().Add(progressBar);
402 application.SendNotification();
403 application.Render();
405 // Test get/set INDETERMINATE
406 bool val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
407 DALI_TEST_EQUALS(val, true, TEST_LOCATION);
409 progressBar.SetProperty(ProgressBar::Property::INDETERMINATE, false);
410 val = progressBar.GetProperty<bool>(ProgressBar::Property::INDETERMINATE);
411 DALI_TEST_EQUALS(val, false, TEST_LOCATION);