2 * Copyright (c) 2014 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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/integration-api/events/touch-event-integ.h>
25 using namespace Dali::Toolkit;
27 void dali_slider_startup(void)
29 test_return_value = TET_UNDEF;
32 void dali_slider_cleanup(void)
34 test_return_value = TET_PASS;
40 static bool gObjectCreatedCallBackCalled;
42 static void TestCallback(BaseHandle handle)
44 gObjectCreatedCallBackCalled = true;
49 int UtcDaliSliderNew(void)
51 ToolkitTestApplication application;
52 tet_infoline(" UtcDaliSliderNew");
54 // Create the Slider actor
57 DALI_TEST_CHECK( !slider );
59 slider = Slider::New();
61 DALI_TEST_CHECK( slider );
63 Slider slider2(slider);
65 DALI_TEST_CHECK( slider2 == slider );
67 //Additional check to ensure object is created by checking if it's registered
68 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
69 DALI_TEST_CHECK( registry );
71 gObjectCreatedCallBackCalled = false;
72 registry.ObjectCreatedSignal().Connect( &TestCallback );
74 Slider slider = Slider::New();
76 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
80 int UtcDaliSliderDestructor(void)
82 ToolkitTestApplication application;
84 Slider* slider = new Slider();
87 DALI_TEST_CHECK( true );
91 int UtcDaliSliderDownCast(void)
93 ToolkitTestApplication application;
95 Handle handle = Slider::New();
97 Slider slider = Slider::DownCast( handle );
99 DALI_TEST_CHECK( slider == handle );
103 static bool gSliderValueChangedCallBackCalled=false;
104 static bool OnSliderValueChanged( Slider slider, float value )
106 gSliderValueChangedCallBackCalled = true;
110 static bool gSliderMarkCallBackCalled=false;
111 static bool OnSliderMark( Slider slider, int value )
113 gSliderMarkCallBackCalled = true;
117 static bool gSliderSlidingFinishedCallBackCalled=false;
118 static bool OnSlidingFinished( Slider slider, float value )
120 gSliderSlidingFinishedCallBackCalled = true;
124 int UtcDaliSliderSignals1(void)
126 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
127 tet_infoline(" UtcDaliSliderSignals");
129 // Create the Popup actor
130 Slider slider = Slider::New();
131 Stage::GetCurrent().Add( slider );
132 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
133 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
134 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
135 slider.SetPosition( 0.0f, 0.0f );
137 const float MIN_BOUND = 0.0f;
138 const float MAX_BOUND = 1.0f;
139 const int NUM_MARKS = 5;
140 Property::Array marks;
141 for( int i = 0; i < NUM_MARKS; ++i )
143 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
145 slider.SetProperty( Slider::Property::MARKS, marks );
146 slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
148 slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
149 slider.MarkReachedSignal().Connect( &OnSliderMark );
150 slider.SlidingFinishedSignal().Connect( &OnSlidingFinished );
152 application.SendNotification();
153 application.Render();
155 gSliderValueChangedCallBackCalled = false;
156 gSliderMarkCallBackCalled = false;
157 gSliderSlidingFinishedCallBackCalled = false;
160 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
161 Integration::Point pointDown;
162 pointDown.SetState( PointState::DOWN );
163 pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
164 event.AddPoint( pointDown );
166 application.ProcessEvent( event );
167 application.SendNotification();
168 application.Render();
171 for( int i = 0; i < 5; ++i )
173 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
174 Integration::Point pointMotion;
175 pointMotion.SetState( PointState::MOTION );
176 pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) );
177 event.AddPoint( pointMotion );
179 application.ProcessEvent( event );
180 application.SendNotification();
181 application.Render();
185 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
186 Integration::Point pointUp;
187 pointUp.SetState( PointState::UP );
188 pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
189 event.AddPoint( pointUp );
191 application.ProcessEvent( event );
192 application.SendNotification();
193 application.Render();
196 DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
197 DALI_TEST_CHECK(gSliderMarkCallBackCalled);
198 DALI_TEST_CHECK(gSliderSlidingFinishedCallBackCalled);
204 bool gSliderSignal=false;
205 struct SliderSignalFunctor
207 SliderSignalFunctor()
213 gSliderSignal = true;
220 int UtcDaliSliderSignals2(void)
222 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
223 tet_infoline(" UtcDaliSliderSignals1");
225 // Create the Popup actor
226 Slider slider = Slider::New();
227 Stage::GetCurrent().Add( slider );
228 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
229 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
230 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
231 slider.SetPosition( 0.0f, 0.0f );
233 const float MIN_BOUND = 0.0f;
234 const float MAX_BOUND = 1.0f;
235 const int NUM_MARKS = 5;
236 Property::Array marks;
237 for( int i = 0; i < NUM_MARKS; ++i )
239 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
241 slider.SetProperty( Slider::Property::MARKS, marks );
242 slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
244 gSliderSignal = false;
245 ConnectionTracker* testTracker = new ConnectionTracker();
246 slider.ConnectSignal( testTracker, "valueChanged", SliderSignalFunctor() );
248 application.SendNotification();
249 application.Render();
251 gSliderValueChangedCallBackCalled = false;
252 gSliderMarkCallBackCalled = false;
254 Dali::Integration::TouchEvent event;
256 event = Dali::Integration::TouchEvent();
258 Integration::Point pointDown;
259 pointDown.SetState( PointState::DOWN );
260 pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
261 event.AddPoint( pointDown );
263 for( int i = 0; i < 5; ++i )
265 Integration::Point pointMotion;
266 pointMotion.SetState( PointState::MOTION );
267 pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) );
268 event.AddPoint( pointMotion );
271 Integration::Point pointUp;
272 pointUp.SetState( PointState::UP );
273 pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
274 event.AddPoint( pointUp );
276 application.ProcessEvent( event );
278 application.SendNotification();
279 application.Render();
281 DALI_TEST_CHECK(gSliderSignal);
285 int UtcDaliSetPropertyP(void)
287 ToolkitTestApplication application;
288 tet_infoline( "UtcDaliSetPropertyP" );
290 Slider slider = Slider::New();
291 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
292 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
293 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
294 slider.SetPosition( 0.0f, 0.0f );
296 Stage::GetCurrent().Add(slider);
297 application.SendNotification();
298 application.Render();
300 slider.SetProperty(Slider::Property::LOWER_BOUND, 1.0f);
301 slider.SetProperty(Slider::Property::UPPER_BOUND, 5.0f);
302 slider.SetProperty(Slider::Property::VALUE, 3.0f);
303 slider.SetProperty(Slider::Property::DISABLED_COLOR, Color::BLACK);
304 slider.SetProperty(Slider::Property::VALUE_PRECISION, 4);
305 slider.SetProperty(Slider::Property::SHOW_POPUP, true);
306 slider.SetProperty(Slider::Property::SHOW_VALUE, true);
307 slider.SetProperty(Slider::Property::MARKS, false);
308 slider.SetProperty(Slider::Property::SNAP_TO_MARKS, false);
309 slider.SetProperty(Slider::Property::MARK_TOLERANCE, 0.5f);
311 float lb = slider.GetProperty<float>(Slider::Property::LOWER_BOUND);
312 DALI_TEST_EQUALS(lb, 1.0f, TEST_LOCATION);
313 float ub = slider.GetProperty<float>(Slider::Property::UPPER_BOUND);
314 DALI_TEST_EQUALS(ub, 5.0f, TEST_LOCATION);
315 float val = slider.GetProperty<float>(Slider::Property::VALUE);
316 DALI_TEST_EQUALS(val, 3.0f, TEST_LOCATION);
317 Vector4 color = slider.GetProperty<Vector4>(Slider::Property::DISABLED_COLOR);
318 DALI_TEST_EQUALS( color, Color::BLACK, TEST_LOCATION );
319 int precision = slider.GetProperty<int>(Slider::Property::VALUE_PRECISION);
320 DALI_TEST_EQUALS( precision, 4, TEST_LOCATION);
321 bool showPopup = slider.GetProperty<bool>(Slider::Property::SHOW_POPUP);
322 DALI_TEST_EQUALS( showPopup, true , TEST_LOCATION);
323 bool showValue = slider.GetProperty<bool>(Slider::Property::SHOW_VALUE);
324 DALI_TEST_EQUALS( showValue, true, TEST_LOCATION );
325 bool marks = slider.GetProperty<bool>(Slider::Property::MARKS);
326 DALI_TEST_EQUALS( marks, false, TEST_LOCATION );
327 bool snapToMarks = slider.GetProperty<bool>(Slider::Property::SNAP_TO_MARKS);
328 DALI_TEST_EQUALS( snapToMarks, false, TEST_LOCATION );
329 float tolerance = slider.GetProperty<float>(Slider::Property::MARK_TOLERANCE);
330 DALI_TEST_EQUALS( tolerance, 0.5f, TEST_LOCATION );
334 map["rendererType"] = "image";
335 map["size"] = Vector2(200, 200);
336 map["url"] = "track2.png";
337 slider.SetProperty(Slider::Property::TRACK_VISUAL, map);
338 map["url"] = "handle2.png";
339 slider.SetProperty(Slider::Property::HANDLE_VISUAL, map);
340 map["url"] = "progress2.png";
341 slider.SetProperty(Slider::Property::PROGRESS_VISUAL, map);
342 map["url"] = "popup2.png";
343 slider.SetProperty(Slider::Property::POPUP_VISUAL, map);
344 map["url"] = "popupArrow2.png";
345 slider.SetProperty(Slider::Property::POPUP_ARROW_VISUAL, map);
347 Property::Value value = slider.GetProperty(Slider::Property::TRACK_VISUAL);
348 Property::Map* resultMap = value.GetMap();
349 DALI_TEST_CHECK( resultMap );
350 Property::Value* url = resultMap->Find("url");
351 DALI_TEST_CHECK( url ) ;
352 DALI_TEST_EQUALS( *url, "track2.png", TEST_LOCATION );
354 value = slider.GetProperty(Slider::Property::HANDLE_VISUAL);
355 resultMap = value.GetMap();
356 DALI_TEST_CHECK( resultMap );
357 url = resultMap->Find("url");
358 DALI_TEST_CHECK( url ) ;
359 DALI_TEST_EQUALS( *url, "handle2.png", TEST_LOCATION );
361 value = slider.GetProperty(Slider::Property::PROGRESS_VISUAL);
362 resultMap = value.GetMap();
363 DALI_TEST_CHECK( resultMap );
364 url = resultMap->Find("url");
365 DALI_TEST_CHECK( url ) ;
366 DALI_TEST_EQUALS( *url, "progress2.png", TEST_LOCATION );
368 value = slider.GetProperty(Slider::Property::POPUP_VISUAL);
369 resultMap = value.GetMap();
370 DALI_TEST_CHECK( resultMap );
371 url = resultMap->Find("url");
372 DALI_TEST_CHECK( url ) ;
373 DALI_TEST_EQUALS( *url, "popup2.png", TEST_LOCATION );
375 value = slider.GetProperty(Slider::Property::POPUP_ARROW_VISUAL);
376 resultMap = value.GetMap();
377 DALI_TEST_CHECK( resultMap );
378 url = resultMap->Find("url");
379 DALI_TEST_CHECK( url ) ;
380 DALI_TEST_EQUALS( *url, "popupArrow2.png", TEST_LOCATION );