Merge "Added code for stylable transitions" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ProgressBar.cpp
1 /*
2  * Copyright (c) 2016 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.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
40 static bool gObjectCreatedCallBackCalled;
41
42 static void TestCallback(BaseHandle handle)
43 {
44   gObjectCreatedCallBackCalled = true;
45 }
46
47 }
48
49 int UtcDaliProgressBarNew(void)
50 {
51   ToolkitTestApplication application;
52   tet_infoline(" UtcDaliProgressBarNew");
53
54   // Create the ProgressBar actor
55   ProgressBar progressBar;
56
57   DALI_TEST_CHECK( !progressBar );
58
59   progressBar = ProgressBar::New();
60
61   DALI_TEST_CHECK( progressBar );
62
63   ProgressBar progressBar2(progressBar);
64
65   DALI_TEST_CHECK( progressBar2 == progressBar );
66
67   ProgressBar progressBar3;
68   progressBar3 = progressBar2;
69
70   DALI_TEST_CHECK( progressBar3 == progressBar2 );
71
72   //Additional check to ensure object is created by checking if it's registered
73   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
74   DALI_TEST_CHECK( registry );
75
76   gObjectCreatedCallBackCalled = false;
77   registry.ObjectCreatedSignal().Connect( &TestCallback );
78   {
79     ProgressBar progressBar = ProgressBar::New();
80   }
81   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
82   END_TEST;
83 }
84
85 int UtcDaliProgressBarDestructor(void)
86 {
87   ToolkitTestApplication application;
88
89   ProgressBar* progressBar = new ProgressBar();
90   delete progressBar;
91
92   DALI_TEST_CHECK( true );
93   END_TEST;
94 }
95
96 int UtcDaliProgressBarDownCast(void)
97 {
98   ToolkitTestApplication application;
99
100   Handle handle = ProgressBar::New();
101
102   ProgressBar progressBar = ProgressBar::DownCast( handle );
103
104   DALI_TEST_CHECK( progressBar == handle );
105   END_TEST;
106 }
107
108 static bool gProgressBarValueChangedCallBackCalled = false;
109
110 static void OnProgressBarValueChanged( ProgressBar progressBar, float value )
111 {
112   gProgressBarValueChangedCallBackCalled = true;
113 }
114
115 int UtcDaliProgressBarSignals(void)
116 {
117   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
118   tet_infoline(" UtcDaliProgressBarSignals");
119
120   // Create the ProgressBar actor
121   ProgressBar progressBar = ProgressBar::New();
122   Stage::GetCurrent().Add( progressBar );
123   progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
124   progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
125   progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
126   progressBar.SetPosition( 0.0f, 0.0f );
127
128   progressBar.ValueChangedSignal().Connect( &OnProgressBarValueChanged );
129   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
130
131   application.SendNotification();
132   application.Render();
133
134   //gProgressBarValueChangedCallBackCalled = false;
135
136   DALI_TEST_CHECK(gProgressBarValueChangedCallBackCalled);
137   END_TEST;
138 }
139
140 int UtcDaliProgressBarSetPropertyP(void)
141 {
142   ToolkitTestApplication application;
143   tet_infoline( "UtcDaliProgressBarSetPropertyP" );
144
145   ProgressBar progressBar = ProgressBar::New();
146   progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
147   progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
148   progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
149   progressBar.SetPosition( 0.0f, 0.0f );
150
151   Stage::GetCurrent().Add(progressBar);
152   application.SendNotification();
153   application.Render();
154
155   float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
156   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
157
158   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.2f);
159   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
160   DALI_TEST_EQUALS(val, 0.2f, TEST_LOCATION);
161
162   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.8f);
163   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
164   DALI_TEST_EQUALS(val, 0.8f, TEST_LOCATION);
165
166   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.4f);
167   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
168   DALI_TEST_EQUALS(val, 0.4f, TEST_LOCATION);
169
170   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.0f);
171   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
172   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
173
174   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 1.0f);
175   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
176   DALI_TEST_EQUALS(val, 1.0f, TEST_LOCATION);
177
178   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, -1.0f);
179   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
180   DALI_TEST_EQUALS(val, 1.0f, TEST_LOCATION);
181
182   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.9f);
183   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
184   DALI_TEST_EQUALS(val, 0.9f, TEST_LOCATION);
185
186   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 1.1f);
187   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
188   DALI_TEST_EQUALS(val, 0.9f, TEST_LOCATION);
189
190   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 2.0f);
191   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
192   DALI_TEST_EQUALS(val, 0.9f, TEST_LOCATION);
193
194   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.0f);
195   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
196   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
197
198   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.9f);
199   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
200   DALI_TEST_EQUALS(val, 0.9f, TEST_LOCATION);
201
202   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.09f);
203   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
204   DALI_TEST_EQUALS(val, 0.09f, TEST_LOCATION);
205
206   progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.1f);
207   val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
208   DALI_TEST_EQUALS(val, 0.1f, TEST_LOCATION);
209
210   {
211     Property::Map map;
212     map["rendererType"] = "image";
213     map["size"] = Vector2(200, 200);
214     map["url"] = "track2.png";
215     progressBar.SetProperty(ProgressBar::Property::TRACK_VISUAL, map);
216     map["url"] = "progress2.png";
217     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VISUAL, map);
218
219     Property::Value value = progressBar.GetProperty(ProgressBar::Property::TRACK_VISUAL);
220     Property::Map* resultMap = value.GetMap();
221     DALI_TEST_CHECK( resultMap );
222     Property::Value* url = resultMap->Find("url");
223     DALI_TEST_CHECK( url ) ;
224     DALI_TEST_EQUALS( *url, "track2.png", TEST_LOCATION );
225
226     value = progressBar.GetProperty(ProgressBar::Property::PROGRESS_VISUAL);
227     resultMap = value.GetMap();
228     DALI_TEST_CHECK( resultMap );
229     url = resultMap->Find("url");
230     DALI_TEST_CHECK( url ) ;
231     DALI_TEST_EQUALS( *url, "progress2.png", TEST_LOCATION );
232
233    }
234
235   END_TEST;
236 }
237
238 int UtcDaliProgressBarSetPropertyP1(void)
239 {
240   ToolkitTestApplication application;
241   tet_infoline( "UtcDaliProgressBarSetPropertyP1" );
242
243   ProgressBar progressBar = ProgressBar::New();
244   progressBar.SetParentOrigin(ParentOrigin::TOP_LEFT);
245   progressBar.SetAnchorPoint(ParentOrigin::TOP_LEFT);
246   progressBar.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
247   progressBar.SetPosition( 0.0f, 0.0f );
248
249   Stage::GetCurrent().Add(progressBar);
250   application.SendNotification();
251   application.Render();
252
253   float val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
254   DALI_TEST_EQUALS(val, 0.0f, TEST_LOCATION);
255
256   // test to download a file of 100k in chunks
257   float lowerBound = 0, upperBound = 100, progressValue = 0, chunkValue = 0;
258
259   while( chunkValue <= upperBound )
260   {
261     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
262     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
263     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
264     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
265     chunkValue = chunkValue + 10;
266   }
267
268   // test to download a file of 1000k in chunks
269   lowerBound = 0, upperBound = 1000, progressValue = 0, chunkValue = 0;
270
271   while( chunkValue <= upperBound )
272   {
273     progressValue = (chunkValue - lowerBound ) / ( upperBound - lowerBound );
274     progressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, progressValue);
275     val = progressBar.GetProperty<float>(ProgressBar::Property::PROGRESS_VALUE);
276     DALI_TEST_EQUALS(val, progressValue, TEST_LOCATION);
277     chunkValue = chunkValue + 100;
278   }
279
280   END_TEST;
281 }
282