2 * Copyright (c) 2019 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(" UtcDaliSliderSignals1");
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);
205 bool gSliderSignal=false;
206 struct SliderSignalFunctor
208 SliderSignalFunctor()
214 gSliderSignal = true;
221 int UtcDaliSliderSignals2(void)
223 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
224 tet_infoline(" UtcDaliSliderSignals1");
226 // Create the Popup actor
227 Slider slider = Slider::New();
228 Stage::GetCurrent().Add( slider );
229 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
230 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
231 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
232 slider.SetPosition( 0.0f, 0.0f );
234 const float MIN_BOUND = 0.0f;
235 const float MAX_BOUND = 1.0f;
236 const int NUM_MARKS = 5;
237 Property::Array marks;
238 for( int i = 0; i < NUM_MARKS; ++i )
240 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
242 slider.SetProperty( Slider::Property::MARKS, marks );
243 slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
245 gSliderSignal = false;
246 ConnectionTracker* testTracker = new ConnectionTracker();
247 slider.ConnectSignal( testTracker, "valueChanged", SliderSignalFunctor() );
249 application.SendNotification();
250 application.Render();
252 gSliderValueChangedCallBackCalled = false;
253 gSliderMarkCallBackCalled = false;
255 Dali::Integration::TouchEvent event;
257 event = Dali::Integration::TouchEvent();
259 Integration::Point pointDown;
260 pointDown.SetState( PointState::DOWN );
261 pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
262 event.AddPoint( pointDown );
264 for( int i = 0; i < 5; ++i )
266 Integration::Point pointMotion;
267 pointMotion.SetState( PointState::MOTION );
268 pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) );
269 event.AddPoint( pointMotion );
272 Integration::Point pointUp;
273 pointUp.SetState( PointState::UP );
274 pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
275 event.AddPoint( pointUp );
277 application.ProcessEvent( event );
279 application.SendNotification();
280 application.Render();
282 DALI_TEST_CHECK(gSliderSignal);
286 int UtcDaliSetPropertyP(void)
288 ToolkitTestApplication application;
289 tet_infoline( "UtcDaliSetPropertyP" );
291 Slider slider = Slider::New();
292 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
293 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
294 slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
295 slider.SetPosition( 0.0f, 0.0f );
297 Stage::GetCurrent().Add(slider);
298 application.SendNotification();
299 application.Render();
301 slider.SetProperty(Slider::Property::LOWER_BOUND, 1.0f);
302 slider.SetProperty(Slider::Property::UPPER_BOUND, 5.0f);
303 slider.SetProperty(Slider::Property::VALUE, 3.0f);
304 slider.SetProperty(Slider::Property::DISABLED_COLOR, Color::BLACK);
305 slider.SetProperty(Slider::Property::VALUE_PRECISION, 4);
306 slider.SetProperty(Slider::Property::SHOW_POPUP, true);
307 slider.SetProperty(Slider::Property::SHOW_VALUE, true);
308 slider.SetProperty(Slider::Property::MARKS, false);
309 slider.SetProperty(Slider::Property::SNAP_TO_MARKS, false);
310 slider.SetProperty(Slider::Property::MARK_TOLERANCE, 0.5f);
312 float lb = slider.GetProperty<float>(Slider::Property::LOWER_BOUND);
313 DALI_TEST_EQUALS(lb, 1.0f, TEST_LOCATION);
314 float ub = slider.GetProperty<float>(Slider::Property::UPPER_BOUND);
315 DALI_TEST_EQUALS(ub, 5.0f, TEST_LOCATION);
316 float val = slider.GetProperty<float>(Slider::Property::VALUE);
317 DALI_TEST_EQUALS(val, 3.0f, TEST_LOCATION);
318 Vector4 color = slider.GetProperty<Vector4>(Slider::Property::DISABLED_COLOR);
319 DALI_TEST_EQUALS( color, Color::BLACK, TEST_LOCATION );
320 int precision = slider.GetProperty<int>(Slider::Property::VALUE_PRECISION);
321 DALI_TEST_EQUALS( precision, 4, TEST_LOCATION);
322 bool showPopup = slider.GetProperty<bool>(Slider::Property::SHOW_POPUP);
323 DALI_TEST_EQUALS( showPopup, true , TEST_LOCATION);
324 bool showValue = slider.GetProperty<bool>(Slider::Property::SHOW_VALUE);
325 DALI_TEST_EQUALS( showValue, true, TEST_LOCATION );
326 bool marks = slider.GetProperty<bool>(Slider::Property::MARKS);
327 DALI_TEST_EQUALS( marks, false, TEST_LOCATION );
328 bool snapToMarks = slider.GetProperty<bool>(Slider::Property::SNAP_TO_MARKS);
329 DALI_TEST_EQUALS( snapToMarks, false, TEST_LOCATION );
330 float tolerance = slider.GetProperty<float>(Slider::Property::MARK_TOLERANCE);
331 DALI_TEST_EQUALS( tolerance, 0.5f, TEST_LOCATION );
335 map["visualType"] = "IMAGE";
336 map["size"] = Vector2(200, 200);
337 map["url"] = "track2.png";
338 slider.SetProperty(Slider::Property::TRACK_VISUAL, map);
339 map["url"] = "handle2.png";
340 slider.SetProperty(Slider::Property::HANDLE_VISUAL, map);
341 map["url"] = "progress2.png";
342 slider.SetProperty(Slider::Property::PROGRESS_VISUAL, map);
343 map["url"] = "popup2.png";
344 slider.SetProperty(Slider::Property::POPUP_VISUAL, map);
345 map["url"] = "popupArrow2.png";
346 slider.SetProperty(Slider::Property::POPUP_ARROW_VISUAL, map);
348 Property::Value value = slider.GetProperty(Slider::Property::TRACK_VISUAL);
349 Property::Map* resultMap = value.GetMap();
350 DALI_TEST_CHECK( resultMap );
351 Property::Value* url = resultMap->Find("url");
352 DALI_TEST_CHECK( url ) ;
353 DALI_TEST_EQUALS( *url, "track2.png", TEST_LOCATION );
355 value = slider.GetProperty(Slider::Property::HANDLE_VISUAL);
356 resultMap = value.GetMap();
357 DALI_TEST_CHECK( resultMap );
358 url = resultMap->Find("url");
359 DALI_TEST_CHECK( url ) ;
360 DALI_TEST_EQUALS( *url, "handle2.png", TEST_LOCATION );
362 value = slider.GetProperty(Slider::Property::PROGRESS_VISUAL);
363 resultMap = value.GetMap();
364 DALI_TEST_CHECK( resultMap );
365 url = resultMap->Find("url");
366 DALI_TEST_CHECK( url ) ;
367 DALI_TEST_EQUALS( *url, "progress2.png", TEST_LOCATION );
369 value = slider.GetProperty(Slider::Property::POPUP_VISUAL);
370 resultMap = value.GetMap();
371 DALI_TEST_CHECK( resultMap );
372 url = resultMap->Find("url");
373 DALI_TEST_CHECK( url ) ;
374 DALI_TEST_EQUALS( *url, "popup2.png", TEST_LOCATION );
376 value = slider.GetProperty(Slider::Property::POPUP_ARROW_VISUAL);
377 resultMap = value.GetMap();
378 DALI_TEST_CHECK( resultMap );
379 url = resultMap->Find("url");
380 DALI_TEST_CHECK( url ) ;
381 DALI_TEST_EQUALS( *url, "popupArrow2.png", TEST_LOCATION );
388 // DestroyHandleVisualDisplay
389 // CreateValueDisplay
390 // SlidingFinishedSignal()
391 // UpdateSkin disabled
399 // DisplayPopup (with set valueText label)