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.
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>
23 #include <dali/integration-api/events/pan-gesture-event.h>
26 using namespace Dali::Toolkit;
28 void dali_slider_startup(void)
30 test_return_value = TET_UNDEF;
33 void dali_slider_cleanup(void)
35 test_return_value = TET_PASS;
41 static bool gObjectCreatedCallBackCalled;
43 static void TestCallback(BaseHandle handle)
45 gObjectCreatedCallBackCalled = true;
50 int UtcDaliSliderNew(void)
52 ToolkitTestApplication application;
53 tet_infoline(" UtcDaliSliderNew");
55 // Create the Slider actor
58 DALI_TEST_CHECK( !slider );
60 slider = Slider::New();
62 DALI_TEST_CHECK( slider );
64 Slider slider2(slider);
66 DALI_TEST_CHECK( slider2 == slider );
68 //Additional check to ensure object is created by checking if it's registered
69 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
70 DALI_TEST_CHECK( registry );
72 gObjectCreatedCallBackCalled = false;
73 registry.ObjectCreatedSignal().Connect( &TestCallback );
75 Slider slider = Slider::New();
77 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
81 int UtcDaliSliderDestructor(void)
83 ToolkitTestApplication application;
85 Slider* slider = new Slider();
88 DALI_TEST_CHECK( true );
92 int UtcDaliSliderDownCast(void)
94 ToolkitTestApplication application;
96 Handle handle = Slider::New();
98 Slider slider = Slider::DownCast( handle );
100 DALI_TEST_CHECK( slider == handle );
104 static bool gSliderValueChangedCallBackCalled=false;
105 static bool OnSliderValueChanged( Slider slider, float value )
107 gSliderValueChangedCallBackCalled = true;
111 static bool gSliderMarkCallBackCalled=false;
112 static bool OnSliderMark( Slider slider, int value )
114 gSliderMarkCallBackCalled = true;
118 static bool gSliderSlidingFinishedCallBackCalled=false;
119 static bool OnSlidingFinished( Slider slider, float value )
121 gSliderSlidingFinishedCallBackCalled = true;
125 int UtcDaliSliderSignals1(void)
127 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
128 tet_infoline(" UtcDaliSliderSignals1");
130 // Create the Popup actor
131 Slider slider = Slider::New();
132 Stage::GetCurrent().Add( slider );
133 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
134 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
135 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
136 slider.SetPosition( 0.0f, 0.0f );
138 const float MIN_BOUND = 0.0f;
139 const float MAX_BOUND = 1.0f;
140 const int NUM_MARKS = 5;
141 Property::Array marks;
142 for( int i = 0; i < NUM_MARKS; ++i )
144 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
146 slider.SetProperty( Slider::Property::MARKS, marks );
147 slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
149 slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
150 slider.MarkReachedSignal().Connect( &OnSliderMark );
151 slider.SlidingFinishedSignal().Connect( &OnSlidingFinished );
153 application.SendNotification();
154 application.Render();
156 gSliderValueChangedCallBackCalled = false;
157 gSliderMarkCallBackCalled = false;
158 gSliderSlidingFinishedCallBackCalled = false;
161 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
162 Integration::Point pointDown;
163 pointDown.SetState( PointState::DOWN );
164 pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
165 event.AddPoint( pointDown );
167 application.ProcessEvent( event );
168 application.SendNotification();
169 application.Render();
172 for( int i = 0; i < 5; ++i )
174 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
175 Integration::Point pointMotion;
176 pointMotion.SetState( PointState::MOTION );
177 pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) );
178 event.AddPoint( pointMotion );
180 application.ProcessEvent( event );
181 application.SendNotification();
182 application.Render();
186 Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent();
187 Integration::Point pointUp;
188 pointUp.SetState( PointState::UP );
189 pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
190 event.AddPoint( pointUp );
192 application.ProcessEvent( event );
193 application.SendNotification();
194 application.Render();
197 DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
198 DALI_TEST_CHECK(gSliderMarkCallBackCalled);
199 DALI_TEST_CHECK(gSliderSlidingFinishedCallBackCalled);
206 bool gSliderSignal=false;
207 struct SliderSignalFunctor
209 SliderSignalFunctor()
215 gSliderSignal = true;
222 int UtcDaliSliderSignals2(void)
224 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
225 tet_infoline(" UtcDaliSliderSignals1");
227 // Create the Popup actor
228 Slider slider = Slider::New();
229 Stage::GetCurrent().Add( slider );
230 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
231 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
232 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
233 slider.SetPosition( 0.0f, 0.0f );
235 const float MIN_BOUND = 0.0f;
236 const float MAX_BOUND = 1.0f;
237 const int NUM_MARKS = 5;
238 Property::Array marks;
239 for( int i = 0; i < NUM_MARKS; ++i )
241 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
243 slider.SetProperty( Slider::Property::MARKS, marks );
244 slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
246 gSliderSignal = false;
247 ConnectionTracker* testTracker = new ConnectionTracker();
248 slider.ConnectSignal( testTracker, "valueChanged", SliderSignalFunctor() );
250 application.SendNotification();
251 application.Render();
253 gSliderValueChangedCallBackCalled = false;
254 gSliderMarkCallBackCalled = false;
256 Dali::Integration::TouchEvent event;
258 event = Dali::Integration::TouchEvent();
260 Integration::Point pointDown;
261 pointDown.SetState( PointState::DOWN );
262 pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
263 event.AddPoint( pointDown );
265 for( int i = 0; i < 5; ++i )
267 Integration::Point pointMotion;
268 pointMotion.SetState( PointState::MOTION );
269 pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) );
270 event.AddPoint( pointMotion );
273 Integration::Point pointUp;
274 pointUp.SetState( PointState::UP );
275 pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
276 event.AddPoint( pointUp );
278 application.ProcessEvent( event );
280 application.SendNotification();
281 application.Render();
283 DALI_TEST_CHECK(gSliderSignal);
287 int UtcDaliSetPropertyP(void)
289 ToolkitTestApplication application;
290 tet_infoline( "UtcDaliSetPropertyP" );
292 Slider slider = Slider::New();
293 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
294 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
295 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
296 slider.SetPosition( 0.0f, 0.0f );
298 Stage::GetCurrent().Add(slider);
299 application.SendNotification();
300 application.Render();
302 slider.SetProperty(Slider::Property::LOWER_BOUND, 1.0f);
303 slider.SetProperty(Slider::Property::UPPER_BOUND, 5.0f);
304 slider.SetProperty(Slider::Property::VALUE, 3.0f);
305 slider.SetProperty(Slider::Property::DISABLED_COLOR, Color::BLACK);
306 slider.SetProperty(Slider::Property::VALUE_PRECISION, 4);
307 slider.SetProperty(Slider::Property::SHOW_POPUP, true);
308 slider.SetProperty(Slider::Property::SHOW_VALUE, true);
309 slider.SetProperty(Slider::Property::MARKS, false);
310 slider.SetProperty(Slider::Property::SNAP_TO_MARKS, false);
311 slider.SetProperty(Slider::Property::MARK_TOLERANCE, 0.5f);
313 float lb = slider.GetProperty<float>(Slider::Property::LOWER_BOUND);
314 DALI_TEST_EQUALS(lb, 1.0f, TEST_LOCATION);
315 float ub = slider.GetProperty<float>(Slider::Property::UPPER_BOUND);
316 DALI_TEST_EQUALS(ub, 5.0f, TEST_LOCATION);
317 float val = slider.GetProperty<float>(Slider::Property::VALUE);
318 DALI_TEST_EQUALS(val, 3.0f, TEST_LOCATION);
319 Vector4 color = slider.GetProperty<Vector4>(Slider::Property::DISABLED_COLOR);
320 DALI_TEST_EQUALS( color, Color::BLACK, TEST_LOCATION );
321 int precision = slider.GetProperty<int>(Slider::Property::VALUE_PRECISION);
322 DALI_TEST_EQUALS( precision, 4, TEST_LOCATION);
323 bool showPopup = slider.GetProperty<bool>(Slider::Property::SHOW_POPUP);
324 DALI_TEST_EQUALS( showPopup, true , TEST_LOCATION);
325 bool showValue = slider.GetProperty<bool>(Slider::Property::SHOW_VALUE);
326 DALI_TEST_EQUALS( showValue, true, TEST_LOCATION );
327 bool marks = slider.GetProperty<bool>(Slider::Property::MARKS);
328 DALI_TEST_EQUALS( marks, false, TEST_LOCATION );
329 bool snapToMarks = slider.GetProperty<bool>(Slider::Property::SNAP_TO_MARKS);
330 DALI_TEST_EQUALS( snapToMarks, false, TEST_LOCATION );
331 float tolerance = slider.GetProperty<float>(Slider::Property::MARK_TOLERANCE);
332 DALI_TEST_EQUALS( tolerance, 0.5f, TEST_LOCATION );
336 map["visualType"] = "IMAGE";
337 map["size"] = Vector2(200, 200);
338 map["url"] = "track2.png";
339 slider.SetProperty(Slider::Property::TRACK_VISUAL, map);
340 map["url"] = "handle2.png";
341 slider.SetProperty(Slider::Property::HANDLE_VISUAL, map);
342 map["url"] = "progress2.png";
343 slider.SetProperty(Slider::Property::PROGRESS_VISUAL, map);
344 map["url"] = "popup2.png";
345 slider.SetProperty(Slider::Property::POPUP_VISUAL, map);
346 map["url"] = "popupArrow2.png";
347 slider.SetProperty(Slider::Property::POPUP_ARROW_VISUAL, map);
349 Property::Value value = slider.GetProperty(Slider::Property::TRACK_VISUAL);
350 Property::Map* resultMap = value.GetMap();
351 DALI_TEST_CHECK( resultMap );
352 Property::Value* url = resultMap->Find("url");
353 DALI_TEST_CHECK( url ) ;
354 DALI_TEST_EQUALS( *url, "track2.png", TEST_LOCATION );
356 value = slider.GetProperty(Slider::Property::HANDLE_VISUAL);
357 resultMap = value.GetMap();
358 DALI_TEST_CHECK( resultMap );
359 url = resultMap->Find("url");
360 DALI_TEST_CHECK( url ) ;
361 DALI_TEST_EQUALS( *url, "handle2.png", TEST_LOCATION );
363 value = slider.GetProperty(Slider::Property::PROGRESS_VISUAL);
364 resultMap = value.GetMap();
365 DALI_TEST_CHECK( resultMap );
366 url = resultMap->Find("url");
367 DALI_TEST_CHECK( url ) ;
368 DALI_TEST_EQUALS( *url, "progress2.png", TEST_LOCATION );
370 value = slider.GetProperty(Slider::Property::POPUP_VISUAL);
371 resultMap = value.GetMap();
372 DALI_TEST_CHECK( resultMap );
373 url = resultMap->Find("url");
374 DALI_TEST_CHECK( url ) ;
375 DALI_TEST_EQUALS( *url, "popup2.png", TEST_LOCATION );
377 value = slider.GetProperty(Slider::Property::POPUP_ARROW_VISUAL);
378 resultMap = value.GetMap();
379 DALI_TEST_CHECK( resultMap );
380 url = resultMap->Find("url");
381 DALI_TEST_CHECK( url ) ;
382 DALI_TEST_EQUALS( *url, "popupArrow2.png", TEST_LOCATION );
389 // DestroyHandleVisualDisplay
390 // CreateValueDisplay
391 // SlidingFinishedSignal()
392 // UpdateSkin disabled
400 // DisplayPopup (with set valueText label)