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.
23 #include <dali/public-api/dali-core.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali/integration-api/events/touch-event-integ.h>
26 #include <dali-toolkit/public-api/controls/slider/slider.h>
28 #include <dali-toolkit-test-suite-utils.h>
31 using namespace Dali::Toolkit;
33 static void Startup();
34 static void Cleanup();
37 void (*tet_startup)() = Startup;
38 void (*tet_cleanup)() = Cleanup;
41 static void UtcDaliSliderNew();
42 static void UtcDaliSliderDestructor();
43 static void UtcDaliSliderDownCast();
44 static void UtcDaliSliderSignals();
47 POSITIVE_TC_IDX = 0x01,
51 // Add test functionality for all APIs in the class (Positive and Negative)
53 struct tet_testlist tet_testlist[] = {
54 { UtcDaliSliderNew, POSITIVE_TC_IDX },
55 { UtcDaliSliderDestructor, POSITIVE_TC_IDX },
56 { UtcDaliSliderDownCast, POSITIVE_TC_IDX },
57 { UtcDaliSliderSignals, POSITIVE_TC_IDX },
62 // Called only once before first test is run.
67 // Called only once after last test is run
72 static bool gObjectCreatedCallBackCalled;
74 static void TestCallback(BaseHandle handle)
76 gObjectCreatedCallBackCalled = true;
79 static void UtcDaliSliderNew()
81 ToolkitTestApplication application;
82 tet_infoline(" UtcDaliSliderNew");
84 // Create the Slider actor
87 DALI_TEST_CHECK( !slider );
89 slider = Slider::New();
91 DALI_TEST_CHECK( slider );
93 Slider slider2(slider);
95 DALI_TEST_CHECK( slider2 == slider );
97 //Additional check to ensure object is created by checking if it's registered
98 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
99 DALI_TEST_CHECK( registry );
101 gObjectCreatedCallBackCalled = false;
102 registry.ObjectCreatedSignal().Connect( &TestCallback );
104 Slider slider = Slider::New();
106 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
109 static void UtcDaliSliderDestructor()
111 ToolkitTestApplication application;
113 Slider* slider = new Slider();
116 DALI_TEST_CHECK( true );
119 static void UtcDaliSliderDownCast()
121 ToolkitTestApplication application;
123 Handle handle = Slider::New();
125 Slider slider = Slider::DownCast( handle );
127 DALI_TEST_CHECK( slider == handle );
130 static bool gSliderValueChangedCallBackCalled;
131 static bool OnSliderValueChanged( Slider slider, float value )
133 gSliderValueChangedCallBackCalled = true;
137 static bool gSliderMarkCallBackCalled;
138 static bool OnSliderMark( Slider slider, int value )
140 gSliderMarkCallBackCalled = true;
144 static void UtcDaliSliderSignals()
146 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
147 tet_infoline(" UtcDaliSliderSignals");
149 // Create the Popup actor
150 Slider slider = Slider::New();
151 Stage::GetCurrent().Add( slider );
152 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
153 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
154 slider.SetSize( Stage::GetCurrent().GetSize().x, 20.0f );
155 slider.SetPosition( 0.0f, 0.0f );
157 const float MIN_BOUND = 0.0f;
158 const float MAX_BOUND = 1.0f;
159 const int NUM_MARKS = 5;
160 Property::Array marks;
161 for( int i = 0; i < NUM_MARKS; ++i )
163 marks.push_back( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
165 slider.SetProperty( Slider::MARKS_PROPERTY, marks );
166 slider.SetProperty( Slider::MARK_TOLERANCE_PROPERTY, 0.1f );
168 slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
169 slider.MarkSignal().Connect( &OnSliderMark );
171 application.SendNotification();
172 application.Render();
174 gSliderValueChangedCallBackCalled = false;
175 gSliderMarkCallBackCalled = false;
177 Dali::Integration::TouchEvent event;
179 event = Dali::Integration::TouchEvent();
181 const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f );
182 event.AddPoint( pointDown );
184 for( int i = 0; i < 5; ++i )
186 const Dali::TouchPoint pointDown( 0, TouchPoint::Motion, 10.0f + i * 10.0f, 10.0f );
187 event.AddPoint( pointDown );
190 const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 50.0f, 10.0f );
191 event.AddPoint( pointUp );
193 application.ProcessEvent( event );
195 application.SendNotification();
196 application.Render();
198 DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
199 DALI_TEST_CHECK(gSliderMarkCallBackCalled);