2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
22 #include <dali/public-api/dali-core.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali/integration-api/events/touch-event-integ.h>
25 #include <dali-toolkit/public-api/controls/slider/slider.h>
27 #include <dali-toolkit-test-suite-utils.h>
30 using namespace Dali::Toolkit;
32 static void Startup();
33 static void Cleanup();
36 void (*tet_startup)() = Startup;
37 void (*tet_cleanup)() = Cleanup;
40 static void UtcDaliSliderNew();
41 static void UtcDaliSliderDestructor();
42 static void UtcDaliSliderDownCast();
43 static void UtcDaliSliderSignals();
46 POSITIVE_TC_IDX = 0x01,
50 // Add test functionality for all APIs in the class (Positive and Negative)
52 struct tet_testlist tet_testlist[] = {
53 { UtcDaliSliderNew, POSITIVE_TC_IDX },
54 { UtcDaliSliderDestructor, POSITIVE_TC_IDX },
55 { UtcDaliSliderDownCast, POSITIVE_TC_IDX },
56 { UtcDaliSliderSignals, POSITIVE_TC_IDX },
61 // Called only once before first test is run.
66 // Called only once after last test is run
71 static bool gObjectCreatedCallBackCalled;
73 static void TestCallback(BaseHandle handle)
75 gObjectCreatedCallBackCalled = true;
78 static void UtcDaliSliderNew()
80 ToolkitTestApplication application;
81 tet_infoline(" UtcDaliSliderNew");
83 // Create the Slider actor
86 DALI_TEST_CHECK( !slider );
88 slider = Slider::New();
90 DALI_TEST_CHECK( slider );
92 Slider slider2(slider);
94 DALI_TEST_CHECK( slider2 == slider );
96 //Additional check to ensure object is created by checking if it's registered
97 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
98 DALI_TEST_CHECK( registry );
100 gObjectCreatedCallBackCalled = false;
101 registry.ObjectCreatedSignal().Connect( &TestCallback );
103 Slider slider = Slider::New();
105 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
108 static void UtcDaliSliderDestructor()
110 ToolkitTestApplication application;
112 Slider* slider = new Slider();
115 DALI_TEST_CHECK( true );
118 static void UtcDaliSliderDownCast()
120 ToolkitTestApplication application;
122 Handle handle = Slider::New();
124 Slider slider = Slider::DownCast( handle );
126 DALI_TEST_CHECK( slider == handle );
129 static bool gSliderValueChangedCallBackCalled;
130 static bool OnSliderValueChanged( Slider slider, float value )
132 gSliderValueChangedCallBackCalled = true;
136 static bool gSliderMarkCallBackCalled;
137 static bool OnSliderMark( Slider slider, int value )
139 gSliderMarkCallBackCalled = true;
143 static void UtcDaliSliderSignals()
145 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
146 tet_infoline(" UtcDaliSliderSignals");
148 // Create the Popup actor
149 Slider slider = Slider::New();
150 Stage::GetCurrent().Add( slider );
151 slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
152 slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
153 slider.SetSize( Stage::GetCurrent().GetSize().x, 20.0f );
154 slider.SetPosition( 0.0f, 0.0f );
156 const float MIN_BOUND = 0.0f;
157 const float MAX_BOUND = 1.0f;
158 const int NUM_MARKS = 5;
159 Property::Array marks;
160 for( int i = 0; i < NUM_MARKS; ++i )
162 marks.push_back( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
164 slider.SetProperty( Slider::MARKS_PROPERTY, marks );
165 slider.SetProperty( Slider::MARK_TOLERANCE_PROPERTY, 0.1f );
167 slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
168 slider.MarkSignal().Connect( &OnSliderMark );
170 application.SendNotification();
171 application.Render();
173 gSliderValueChangedCallBackCalled = false;
174 gSliderMarkCallBackCalled = false;
176 Dali::Integration::TouchEvent event;
178 event = Dali::Integration::TouchEvent();
180 const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f );
181 event.AddPoint( pointDown );
183 for( int i = 0; i < 5; ++i )
185 const Dali::TouchPoint pointDown( 0, TouchPoint::Motion, 10.0f + i * 10.0f, 10.0f );
186 event.AddPoint( pointDown );
189 const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 50.0f, 10.0f );
190 event.AddPoint( pointUp );
192 application.ProcessEvent( event );
194 application.SendNotification();
195 application.Render();
197 DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
198 DALI_TEST_CHECK(gSliderMarkCallBackCalled);